首页   >   新闻   >   文章

分布式数据库,结点如何通信?
- 2025 -
01/30
15:05
零号员工
发表时间:2025.01.30     作者:Jingyi     来源:ShoelessCai     阅读:46

分布式数据库,结点如何通信?

笔者必须指出,其实我也是刚开始学习,肯定有学得好,学得不好,有不足之处,希望大家指正。

以蚂蚁金服的 OceanBase 为例。

01 如何通信?

节点之间 的通信,采用的是传统 SQL 语言,以及通信层协议,还分 Oracle,以及 MySQL。通信模式,使用的是反向代理 OBProxy。作为代理,即节点之间有代理机器进行通信。OBProxy 既是客户端,也是服务端,还需要保证交互行为符合MySQL协议规范。OBProxy 兼容 MySQL 协议,内部还有自己的 OBMySQL,可以认为是代理服务器自己的语言,集群内部通信为 RPC。其他 OBProxy 定义,OBProxy Server 代理网络用户,获取网络信息,是网络信息的中转。

OBProxy。一是兼容 MySQL 的客户端,支持 OceanBase; 二是解析客户端 SQL 报文;三是对代理服务器可以设置的内容,例如,区域优先、同城合并、读写分离。

OceanBase 作为分布式数据库,对外网络连接部分,是用 Listener 监听 API 情况,也可以认为是网络信道情况。对内是应对外部情况返回 Response,包括发送给客户端的、发送给客户端的 Response。

OceanBase 每个节点,都有 LibEasy 做支撑,而 LibEasy 标准库是 Libev。节点之前是用轮询访问或者消息进行消息发送,主要应答环境的建立。除此之外,标准库 Libev 还有两个作用:第一,每个系统有对应的 API;第二,两大基础功能,即多路复用和异步 I/O。

小结

  1. OceanBase based on Libeasy
  2. Libeasy based on Liben


每个节点的工作流程:解析 SQL -> 按照规则设置路由 -> 选择目标 Server -> 黑名单过滤 -> 转发 Request。每个节点的动作、状态由 OBServer 来完成,OBServer 执行发送一个数据包。

这个数据包包含以下信息

  1. 1.系统内存是否超限;
  2. 2.是否初始化;
  3. 3.是否退出;
  4. 4.是否包含校验出错。


包含错误包、结果包。

02 执行 mysql,如何保证数据正确性?

1.数据压缩在包里,传到 客户端校验;< br>2.压缩级别是最低,级别低是为了响应更多请求;
3.OceanBase 2.1 mysql 报文则不留校验位。

OceanBase 使用 RPC 解决客户端到服务端之间的通信问题,如果数据库是单机数据库,这时候通信使用的是IPC, Message Queue,Shared Memory。分布式数据库考虑的是,系统性能,数据正确性。

多机数据库,采用的是 Leader / Follower 模式。

RPC 是流式的、异步的,5 大应用场景。一是DDL;二是 Poxos选举;三是日志同步;四是RootServeice 管理负载均衡及 Server 通信;五是分布式事务中间结果处理。

OceanBase 分为 Oracle 租户、Mysql 租户,其实就是两套语法,两种模式。到底是哪个租户模式,是在连接的时候确定的,启动的时候,改变 RPC 的参数。系统为 mysql 定义了内部表,再连接上其他要素 ,成为 oracle 租户可使用的虚拟表。

小结

1.RPC 是分布式数据库节点之间通信的方式,流式的、异步的。
2.分布式向量数据库,解决三个问题,分别是,集群的管理、集群的流量、集群的异常。而 RPC 研究的是集群的管理 ,也就是属于本章我们讨论的“通信”。
3.集群管理最常用的四个工具:Paxos 协议、Raft 协议、Gossip 协议,均是信息交换的方法。

03 去 IOE 新老系统交接

挑战,或者说痛点

1.业务迭代慢:商业软件架构和技术封闭,生态不足,迭代缓慢,应对金融创新乏力,因此很难服务于瞬息万变的国内市场环境及千变万化的用户需求。

2.性能低扩展性差:集中式架构扩展性和弹性能力差,无法支撑在类似“双11”等高并发场景下对系统负载产生的巨大压力,交易缓慢。

3.稳定性风险高:线上金融业务有 7*24 小时服务不间断要求,传统架构在运行监测、问题定位上响应缓慢。同时,针对应用、资源或机房级故障,不能快速恢复业务。

4.维护成本高:基于 IBM 的大型主机和 Db2 数据库的集中式系统的总成本(购置/扩容+维护服务)远超基于X86的分布式系统,成本压力愈发明显。

5.无法自主可控:金融行业作为自主可控的行业之一,IOE厂商对国有银行形成事实上的垄断,在核心系统领域受制于人容易“卡脖子”,不符合当前国家推进自主可控的顶层设计。

原有系统已经到了支撑能力的天花板,新系统的构建迫在眉睫。

单元(即单元化应用服务产品层的部署单元),是指一个能完成所有业务操作的自包含集合,在这个集合中包含了所有业务所需的所有服务,以及分配给这个单元的数据。单元化架构就是将单元作为部署的基本单位,在全站所有机房中部署多个单元,每个机房内单元数目不固定,任一单元均部署系统所需的全部应用,数据则是全量数据按照某种维度划分后的一部分。

单元化的本质,就是把数据流量,按照一定纬度进行拆分。使得一个单元能够闭环提供完整的服务能力。但这个服务能力面向的是拆分后的部分数据流量,且只服务于这部分流量。

一个机房可以有多个单元,其划分维度也比较多样。OBProxy 代理提供的统一入口来访问 OceanBase 数据库单元化集群,它屏蔽了分库分表、多集群及OBServer分布式的复杂性,将 SQL 语句路由到该应用单元对应的 Leader 副本上, 对用户使用完全透明

04 同城单机房到三机房改造

首先,分布式数据库的机房布局。



其次,如何新添加一个节点。







05 基础知识补充

王珊教科书,部分朗读版。



数据库发展史,关系型 1970 - 1990,其实非统一范式,很久之前就在研究了的。





罗云的《向量数据库》,人民邮电出版社。

用 10 分钟学习 CAP 理论。



聚簇介绍。



参考文献

[1] 博客园-耀阳居士(2022),某银行客户Db2下移分布式数据库OceanBase单元化改造案例,博客园,2022



原文链接



长按/扫码,有您的支持,我们会更加努力!









TOP 5 精选

       



回到顶部   回上一级
写文章

最新资讯




直播笔记


热点话题


精品论文


有你的鼓励
ShoelessCai 将更努力





文档免费。保护知识产权,保护创新。