TDR表是基于TDR协议设计的TcaplusDB表,TDR协议是腾讯自研的RPC通信协议,用于TcaplusDB存储数据的序列化、反序列化等 *** 作,相比于PB表(Protocol协议表)在传输效率及传输质量上有一定优势,在腾讯游戏内部有广泛应用基础,具体关于TDR表的定义说明可参考章节:表定义语言(PB,TDR)。TDR表定义以xml格式来定义表结构,支持丰富的数据类型,请参考章节:数据类型(PB, TDR)。
入门快速入手TDR协议表的开发涉及几个步骤,下面介绍如何基于TcalusDB本地Docker版环境,快速上手基于Golang进行TDR表的增删查改 *** 作。所有 *** 作均在申请的开发测试机或云主机进行。
Docker环境准备在开始示例代码演示之前,需要提前准备好TcaplusDB本地Docker环境及tcapluscli工具,具体请参考资料:[Linux] TcaplusDB Local版部署。 Docker部署好后,对于命令行工具需要授权所有IP访问Docker环境,授权方式:
./tcapluscli privilege --endpoint-url=http://localhost --allow-all-ipGo环境准备
GO SDK示例依赖GO环境的部署,对于Centos系统可以直接安装通过:
yum install golangTcaplusDB表准备 准备TDR表示例文件
这里以示例中的service_info.xml举例,表名: service_info
, 表类型: GENERIC
。文件具体内容如下:
将上述文件内容保存为service_info.xml
。
对于TcaplusDB,在创建表之前需要创建对应的表集群。对于Docker本地版,集群已经默认创建好一个供大家使用,所以不用再创建集群。
TcaplusDB表格组准备TcaplusDB表在集群的基础上还依赖于表格组,相当于游戏里的逻辑分区,使用工具创建表格组命令如下:
#查看表格组帮助命令 ./tcapluscli tablegroup -h #创建一个表格组,id指定为4, endpoint-url为上面docker暴露的80端口,access-id为集群接入ID(业务ID,2表示TDR集群), 用于docker环境连接使用, group name由字母、数字和下划线组成 ./tcapluscli tablegroup create --endpoint-url=http://localhost --access-id=2 --group-id=4 --group-name=zone_4TcaplusDB表创建
现在正式进入表创建环节,在上述表格组基础上创建一个TDR表,执行创建表命令,如下所示:
#查看表创建命令提示帮助 ./tcapluscli table -h #创建一个表, 指定endpoint-url, 表格组id: group-id, 表类型: TDR, 表定义文件: table_test.xml,放当前路径 ./tcapluscli table create create --endpoint-url=http://localhost --access-id=2 --group-id=4 --schema-type=TDR --schema-file=service_info.xml示例代码
以Golang示例代码为例,介绍如何使用TDR接口进行TcaplusDB表数据 *** 作,这里主要介绍Generic类型表 *** 作。GO示例代码以Go Mod方式进行组织管理,所以用户的Go环境必须大于1.11
,建议1.14
以上,比较稳定。
这里以3.40.0版本为示例演示,需要下载两个组件:
组件名 | 下载地址 | 用途 |
---|---|---|
TcaplusGoApi_3.40.0.657f5f8.x86_64_release_20201102 | Download | Go SDK API相关 |
TcaplusGoApi部署方式
TcaplusGoApi_3.40.0.657f5f8.x86_64_release_20201102下载后,直接解压至目标机器相应目录即可,如:
/root/TcaplusGoApi_3.40.0.657f5f8.x86_64_release_20201102编译环境准备
环境依赖 | 版本 | 说明 |
---|---|---|
*** 作系统 | CentOS7 | x86体系 |
Golang | 1.14以上 | x86体系 |
Tcaplus API的依赖库及其源码都在打包后的src/vendor目录下,用户只需将vendor放入自己的工程目录即可使用Tcaplus Go API的接口 vendor依赖介绍:
github.com/tencentyun/tcaplusdb-go-sdk/tdr是Tcaplus Go API源码
github.com/tencentyun/tsf4g/TdrCodeGen是tdr工具,可将tdr的xml转换为go源码
github.com/tencentyun/tsf4g/tdrcom是tdr go源码打解包的依赖库
go.uber.org/zap是日志库
github.com/natefinch/lumberjack是日志文件切割库
示例代码编译示例代码编译前需要准备两个步骤,一个是表定义结构文件的生成,一个是Docker公共连接参数配置。
TDR表定义文件生成
表定义文件主要用于表TDR接口使用,需要提前生成,可通过TDR工具生成,具体如下所示:
cd vendor/github.com/tencentyun/tsf4g/TdrCodeGen/ python tdr.py table.xml 得到相应表的go源码目录table/table.go 将table放到自己的go的工程目录即可使用
公共连接参数配置
公共参数配置在示例代码中的main.go
,如下所示:
#找到main.go中如下const定义部分 const ( AppId = uint64(2) //集群接入ID, 默认为2,用户测试无需修改 ZoneId = uint32(4) //集群表格组ID, 根据上述表格组创建时指定的ID, 如:4 DirUrl = "tcp://0.0.0.0:9999" //集群访问地址,本地docker版默认为:0.0.0.0, 端口默认:9999, 如果跨机访问docker,IP可设为对应docker机器绑定的地址 Signature = "39859BC573A2E254" //集群访问密码,默认为39859BC573A2E254, 如果不一致,可以在oms业务维护界面查看对应业务id的密码 TableName = "service_info" //表名 )
编译代码
在示例代码目录,已经集成了Makefile
, 方便用户用make方式进行编译。Makefile文件中把GO执行的一系列命令放在里面,用户无需再单独执行
#进示例代码目录cd /root/TcaplusGoApi_3.40.0.657f5f8.x86_64_release_20201102/src/example/generic_table#直接执行makemake#生成generic_table可执行文件,直接执行即可进行相关 *** 作./generic_table
TcaplusDB是腾讯出品的分布式NoSQL数据库,存储和调度的代码完全自研。具备缓存+落地融合架构、PB级存储、毫秒级时延、无损水平扩展和复杂数据结构等特性。同时具备丰富的生态、便捷的迁移、极低的运维成本和五个九高可用等特点。客户覆盖游戏、互联网、政务、金融、制造和物联网等领域。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)