欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

金融数据库TDSQL

程序员文章站 2022-03-23 09:22:54
tdsql三层:网关层: 路由表 + 解析mysql(类似无状态的server)存储层:真实的mysql,添加agent用以容灾备份数据切换控制层:zookeeper用以存储状态,加一个keeper用以进行调度扩容:水平扩容垂直扩容谁扩容扩容到哪怎么扩一般来说 CPU打到了100的话,扩容整张表出去。如果记录太多,分裂扩容后,cache生成唯一key(node的hash)可以使用QQ号作扩容,使数据均匀插播一条 mysqlbinbinlog数据库的二进制文件,记录用户对数据库...

tdsql

三层:
网关层: 路由表 + 解析mysql(类似无状态的server)
存储层:真实的mysql,添加agent用以容灾备份数据切换
控制层:zookeeper用以存储状态,加一个keeper用以进行调度

扩容:
水平扩容
垂直扩容

谁扩容
扩容到哪
怎么扩
一般来说 CPU打到了100的话,扩容整张表出去。如果记录太多,分裂扩容后,cache生成唯一key(node的hash)
可以使用QQ号作扩容,使数据均匀

插播一条 mysqlbin
binlog
数据库的二进制文件,记录用户对数据库操作的sql语句
statement:记录所有产生修改的sql。日志数少,减少了磁盘IO,但是可能会造成主从不一致的情况(sleep()等)

row:记录哪些数据被修改,修改的结果如何。不会出现特定的情况的存储过程,以及触发无法正确复制等问题。但是会产生大量日志,alter table。

混合模式。

通用的扩容方式:
即时扩容,同时将请求转发到目标set,如果记录不存在于目标,则回到源主机请求,随着扩容的持续,源主机压力逐渐减小。
tdsql:
由于关系型数据库,不知道key的话,造成访问混乱。采用分步的措施。先扩容,记录mysqlbin的操作,然后slave进行同步。但是高并发场景下,sql操作是追不上。
所以采用主动失效的方法,重命名原set,然后导致请求失败,同时完成slave的同步。 200ms的失败,对于业务是可以忍受的。

快速失败,能失败则失败。方便数据回滚。
业务容忍度,200ms的无效请求不会对业务造成太严重的影响

屏蔽掉了部分mysql的功能 例如 join。趋势是将数据放入大数据平台hadoop进行后续工作。
类似于epoll

忙轮询
无差别轮询:select poll  O(n)
epoll:epoll pool 只关注缓冲区非满以及缓冲区非空事件

避免一些复杂操作引起的服务器压力剧增。

高一致容灾:
自动切换
自动恢复
数据一致
跨idc容灾
高性能

对于 zookeeper agent 存在心跳连接 超时则按照数据库节点down掉来处理,zookeeper之间同时存在相互的心跳连接。
schedule观测到节点down掉都会启动备机顶替方案,并修改路由。

数据一致性的保障:
类似半同步,master完成事务后将binlog同步到备,然后备同步完成以后返回一个relaylog,master接到应答以后才返回commit到客户端。(牺牲时间换取准确度)
要求:成功则必须一致成功,失败可以回滚。
一主多备的情况下,只需要等待一台完成应答即可,即使一台down掉也没问题。
问题:半同步的io等待造成了性能持续下降 2200 TPS
解决方案:牺牲部分时效性,提高支持效率。异步化改进的半同步方式,防止阻塞,在等待期间将连接保存下来(类似保存一个session),该线程则可以继续处理其他任务。提高到9500.。但是时耗略微增大。自称为 强同步

主备切换:
1 scheduler检测到主节点异常,主降级,如果活着 提供读服务,不能写
2 降级时需要将所有备的 收到的最新的binlog提交,查看谁的更新,则选为主
3 等待最新的更新完成 送到realaylog则 路由请求均到该备机,备升为主
4 如果主还未挂掉,比对当时的binlog,将多出来的写操作 回滚掉,然后作为新的备机

限制:
数据一致性 主动扩容 保证了数据的准确性,但是同时牺牲了很多mysql原本的功能,比如存储 触发 session变量 自增序列号等。但对于金融数据而言,准确性显然更为重要。
不用cache:存储的是结构化数据,sql操作,支持多个索引,很多k-v形式数据不支持索引,高一致性做到了极致,事务均能落地到数据库,更加可靠。虽然性能差了不少,但是相对而言更加符合需求

业务需求:
通过一个shard(标识,用于路由区分)进行切分,所有对某一张表都有这个字段,所有请求都能带上这个字段,否则请求都会到shard上造成很大的负载

本文地址:https://blog.csdn.net/weixin_39238424/article/details/106057583