在当今的技术领域,Go 语言以其高效的性能和简洁的语法而备受青睐,使得越来越多的互联网大厂开始使用GoLang来构建自己的业务系统。现在,让我们来深入了解一下由一支精英开发团队打造的openGemini Go语言客户端。
开发团队介绍
openGemini Go语言SDK的开发团队是华为云工业物联平台团队--由一群富有激情和经验的开发者组成。他们具备广泛的技术知识和丰富的行业经验,致力于通过创新的解决方案满足社区用户的需求。
版本功能介绍
当前版本(v0.2.0)的Go SDK具有以下令人振奋的功能:
-
负载均衡
支持客户端同时连接多个ts-sql,每次请求会发送给不同的ts-sql处理,以确保服务侧负载总体保持均衡态势。当前版本采用的负载均衡算法为“轮询”,采用其他算法,可通过修改 getServerUrl() 函数
-
连接管理
客户端后台程序会定时检测网络和ts-sql运行状态,提前规避故障网络或者故障节点
-
数据压缩
支持数据Gzip压缩后发给数据库服务端,节省网络传输带宽,但一定程度会增加服务侧的开销
-
批量处理
支持数据批量写入和单点写入自动转为批处理,提升数据写入效率
-
鉴权&传输加密
支持用户密码鉴权和HTTPS传输加密
-
丰富的DDL操作
支持
create database
,drop database
,show databases
,show tag keys
,show tag values
,create retention policy
,show measurements
等独立接口,便于应用自动化集成。
运行DEMO
执行如下命令,运行example
> mkdir demo
> cp opengemini-cient-go/examples/example/example.go demo/
> cd demo
> echo "module main" > go.mod
> go mod tidy
> go run example.go //前提需要本地已运行openGemini单机或者集群
应用开发
引用客户端库
import . "github.com/openGemini/opengemini-client-go/opengemini"
创建客户端,连接openGemini
config := &Config{
Addresses: []*Address{
{
Host: "127.0.0.1",
Port: 8086,
},
},
}
client, err := NewClient(config)
if err != nil {
fmt.Println(err)
}
创建Database
exampleDatabase := "ExampleDatabase"
err = client.CreateDatabase(exampleDatabase)
if err != nil {
fmt.Println(err)
return
}
批量写入数据
exampleMeasurement := "ExampleMeasurement"
bp := &BatchPoints{}
var tagList []string
tagList = append(tagList, "sunny", "rainy", "windy")
for i := 0; i < 10; i++ {
p := &Point{}
p.SetMeasurement(exampleMeasurement)
p.AddTag("Weather", tagList[rand.Int31n(3)])
p.AddField("Humidity", rand.Int31n(100))
p.AddField("Temperature", rand.Int31n(40))
p.SetTime(time.Now())
bp.AddPoint(p)
time.Sleep(time.Nanosecond)
}
err = client.WriteBatchPoints(exampleDatabase, bp)
if err != nil {
fmt.Println(err)
}
查询数据
q := Query{
Database: exampleDatabase,
Command: "select * from " + exampleMeasurement,
}
res, err := client.Query(q)
if err != nil {
fmt.Println(err)
}
for _, r := range res.Results {
for _, s := range r.Series {
for _, v := range s.Values {
for _, i := range v {
fmt.Print(i)
fmt.Print(" | ")
}
fmt.Println()
}
}
}
参考文档
接口参考文档
https://pkg.go.dev/github.com/openGemini/opengemini-client-go@v0.1.0/opengemini
仓库地址
https://github.com/openGemini/opengemini-client-go
需求反馈
https://github.com/openGemini/openGemini/issues/427
致谢
感谢贺张俭@shoothzj,谌旭琳@PennyYoon,感谢华为云工业物联平台团队在社区的辛勤付出!
openGemini官网:http://www.openGemini.org
Star for me😊:https://github.com/openGemini
openGemini公众号:
欢迎关注~ 诚邀你加入 openGemini 社区,共建、共治、共享未来!