微信支付用的数据库开源了


腾讯TBase是一款腾讯自研高性能HTAP数据库,提供
高性能的OLTP和OLAP能力,同时保证
可扩展全局一致性分布式事务(ACID),为用户提供高一致性的分布式数据库服务和高性能的数据仓库服务。一方面解决了传统数据库扩展不足、数据sharding之后数据库事务的严格一致性难题、数据安全、跨地域容灾等问题,同时具备了高性能事务处理、数据治理、混合负载支持等能力。在OLTP方面,TBase采用
MVCC+全局时钟+2PC+SSI的方式来实现全局一致性分布式事务,同时引入大量性能优化的设计来减少全局事务带来的开销。在小规模集群上,TBase能够提供
超过300万TPMTotal的事务处理吞吐量(工业界标准TPCC测试集)。
交易毫秒内完成
TBase已经覆盖多个行业的标杆用户,其中对内支持了微信广告开发云主机域名微信支付、腾讯地图等海量数据业务,一笔交易毫秒内即可完成,
支撑了微信支付50倍的交易增长。TBase是一个提供写可靠性,多主节点数据同步的关系数据库集群平台。你可以将TBase配置一台或者多台主机上,TBase数据存储在多台物理主机上面。数据表的存储有两种方式, 分别是distributed或者replicated ,当向TBase发送查询 SQL时,TBase会自动向数据节点发出查询语句并获取最终结果。TBase采用分布式集群架构(如下图),该架构分布式为无共享(share nothing)模式,节点之间相应独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转,各处理单元之间通过网络协议进行通信,并行处理和扩展能力更好,这也意味着只需要简单的x86服务器就可以部署TBase数据库集群。
下面简单解读一下TBase的三大模块:
Coordinator:协调节点(简称CN)

业务访问入口,负责数据的分发和查询规划,多个节点位置对等,每个节点都提供相同的数据库视图;在功能上CN上只存储系统的全局元数据,并不存储实际的业务数据。
Datanode:数据节点(简称DN)

每个节点还存储业务数据的分片在功能上,DN节点负责完成执行协调节点分发的执行请求。
GTM:全局事务管理器(Global Transaction Manager)

负责管理集群事务信息,同时管理集群的全局对象,比如序列等。接下来,让我们来看看如何从源码开始,完成到TBase集群环境的搭建。注意:所有需要安装TBase集群的机器上都需要创建
git clone https://github.com/Tencent/TBase本文的使用环境中,上述两个参数如下${SOURCECODE_PATH}=/data/tbase/TBase-master${INSTALL_PATH}=/data/tbase/install下面以两台服务器上搭建1GTM主,1GTM备,2CN主(CN主之间对等,因此无需备CN),2DN主,2DN备的集群,该集群为具备容灾能力的最小配置集群规划如下:
参考Linux ssh互信配置集群所有机器都需要配置以上,已经配置好了所需要基础环境,可以进入到集群初始化阶段,为了方便用户,TBase提供了专用的配置和操作工具
pgxc_ctl来协助用户快速搭建并管理集群,首先需要将前文所述的节点的ip,端口,目录写入到配置文件 pgxc_ctl.conf 中。如下,是结合上文描述的IP,端口,数据库目录,二进制目录等规划来写的pgxc_ctl.conf文件。具体实践中只需按照自己的实际情况配置好即可.在一个节点配置好配置文件后,需要预先将二进制包部署到所有节点所在的机器上,这个可以使用pgxc_ctl工具,执行
deploy all命令来完成。一般init集群出错,终端会打印出错误日志,通过查看错误原因,更改配置即可,或者可以通过/data/tbase/pgxc_ctl/pgxc_log路径下的错误日志查看错误,排查配置文件的错误通过运行 pgxc_ctl 工具,执行
clean all命令删除已经初始化的文件,修改pgxc_ctl.conf文件,重新执行
init all命令重新发起初始化。当发现上面的输出时,集群已经OK,另外也可以通过pgxc_ctl工具的
monitor all命令来查看集群状态一般的如果配置的不是强同步模式,gtm salve,dn slave的故障不会影响访问。访问TBase集群和访问单机的PostgreSQL基本上无差别,我们可以通过任意一个CN访问数据库集群:例如通过连接CN节点select pgxc_node表即可查看集群的拓扑结构(当前的配置下备机不会展示在pgxc_node中),在Linux命令行下通过psql访问的具体示例如下TBase使用datanode group来增加节点的管理灵活度,要求有一个default group才能使用,因此需要预先创建;一般情况下,会将节点的所有datanode节点加入到default group里 另外一方面,TBase的数据分布为了增加灵活度,加了中间逻辑层来维护数据记录到物理节点的映射,我们叫sharding,所以需要预先创建sharding,命令如下:至此,就可以跟使用单机数据库一样来访问数据库集群了通过pgxc_ctl工具的
stop all命令来停止集群,stop all 后面可以加上参数
-m fast或者是
-m immediate来决定如何停止各个节点。通过pgxc_ctl工具的
start all命令来启动集群本文档只是给用户一个简单的指引,演示如何从源码开始,一步一步搭建一个完整的TBase集群,后续会有更多的文章来介绍TBase的特性使用,优化,问题定位等内容。
腾讯TBase GitHub 开源地址,请搜索关注“腾讯云数据库”官方微信,回复“开源”即可获取。
支撑微信支付的数据库如何提供超300万TPCC事务处理能力?
最佳实践 | 腾讯HTAP数据库TBase助力某省核心IT架构升级

相关推荐: PostgreSQL XID与virtual XID区别

PG中事务号有两个概念,一个就是通常意义上的事务号transaction id。如tuple中的xmin,xmax等。另外一个意义是虚拟事务ID,即virtual transaction ID。那么这两个有 什么区别呢? 1.Transaction Id 它是…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/05 19:58
下一篇 06/05 19:58

相关推荐