上图是TIDB作为一个整体存在,作为玩分布式数据库的专家看了这个架构都会头大。
TIDB作为面向客户端的SQL请求和逻辑处理者,PD是集群的管理者,TiKV又通过key/value的形式持久化数据,TIDB、PD、TiKV,各自又是分布式集群,那么事务的发起、数据路由由PD负责,SQL的接收、事务过程的控制由TiDB负责,数据的落地由TiKV负责。通过这么一个责任分工明确的体系,就形成了真正的分布式事务。
其优点就是事务加锁终于去中心化了,到达了分布式数据库技术航行最远的地方了,这可是谷歌的Percolator论文在2011年就发表了,谷歌真的是神族所在地。
可付出的代价依然不小,第一个很明显,物理机器少不了,但是能到了这份上的业务也不在乎这么多资源了。第二就是TiDB的事务过程控制是在内存中进行的,等事务一致性同步好了,才会进入TiKV持久化,因此内存的消耗一定不得了,遇到延时类bug,内存就有可能因为数据洪水决堤,最后的问题还是网络交互太频繁了,保障一个良好的网络环境极为重要。
好,就聊这么多吧,希望本文的一些浅见使我们对分布式系统有一些更深刻的理解,一句话:分布式系统太复杂了,你很难去控制它,需要的是深入去理解它。
我们是“读字节”技术专家团队,感谢您的关注! 读字节官网