产品简介
everdb作为一种典型的基于中间件实现分库分表方案的分布式数据库产品,其执行计划相比于传统集中式数据库的不同之处在于,既包括了sql在底层各分片表上的执行步骤,也包含proxy如何将sql进行分布式处理,提高分布式数据库的处理性能,是everdb基于中间件对执行计划一种特有的实现方式。
与传统集中式数据库相比,everdb执行计划使数据库有更高的扩展性,支持更大量级的数据规模,更高并发的数据访问。在处理相同负载压力的前提下,可以充分利用各分片的存储与计算资源,以及并行计算的优势达到更好的性能。
产品架构
everdb 产品架构图
everdb 通过多组件共同协作来实现整个分布式数据库调度、存储、计算、管理、数据迁移等能力!
-
edb-grid:是我最核心的组件,具有全局调度能力,负责全局事务管理、分布式执行计划的生成与调度、集群扩缩容、数据节点的故障自动切换等。
-
数据节点:是我的数据存储层,基于mysql社区版本,支持mysql主从架构和mgr架构,主要负责数据的存储、本地事务管理、本地结果集计算等。
-
配置节点:基于zookeeper实现,负责我在运行态的元数据存储、同步、与配置管理。
-
edb-control:是仪表盘,也是运维管理控制台,负责我的全生命周期管理。
-
edb-bridge:数据同步工具,负责将我的数据增量同步给其他异构数据库。
技术特性
1.数据分片
-
sharding(分片),这里的sharding主要指表的横向拆分。根据业务表的特点不同,可分为全局表、普通表、分片表。
-
全局表像是“数据字典”,就是系统中所有的表都可能依赖的表,特点是数据量较小、变更频率低、且可能跟其他表产生关联查询的表;
-
普通表是数据量相对不大、变更频率不高、且不会和分片表产生关联查询的表;
-
分片表是数据量较大或交易访问频率较高的表,需要通过数据sharding来分散数据部署或交易访问量的表。
-
全局表会在集群内进行广播,使联表查询尽量在单个节点完成,通过避免跨节点join来提升sql执行效率和数据库性能。
-
分片表主要支持hash、mod、list、range四种分片算法,为有效的打散数据分布,hash和mod是较为常用的分片算法,当然你也可以自定义分片算法。edb-grid通过对分片键应用分片算法,将数据分散部署到集群中不同的节点上,而对于应用来说这种分布式部署是透明的,就像使用单机数据库一样。
2.sql执行优化
everdb接收到应用的sql后,会先进行sql语法解析,然后生成分布式执行计划,在这个过程中会遵循一些优化原则,比如查询计算下推、跨节点并行计算、通过必要的sql改写提升执行效率等,最后根据执行计划对并行计算的结果进行归并,并将归并结果返回给应用端。
3.通信协议
everdb完美兼容mysql通信协议,并能兼容绝大部分常用的mysql语法和功能。
4.分布式事务
事务是关系型数据库一个非常重要的特性,也是金融大部分业务场景必要的功能需求,支持事务需要实现事务的acid四个特性,即原子性、一致性、隔离性、持久性。
5.数据库安全
everdb的数据库安全,主要体现在访问安全、安全审计、数据安全三个方面:通过支持账户密码访问,设置黑白名单,数据库表授权,访问时段、流控、危险操作防御,登陆失败防护增强,通信ssl加密来实现访问的安全性;可以针对操作类型、操作对象、操作用户来进行安全审计;通过支持数据加密,数据多副本多机房部署来增强数据安全性。
6.全组件高可用
everdb通过双机房部署、全组件冗余设计,故障自动感知、自动切换来实现整个集群的高可用性。配置组件的高可用采用了zookeeper原生高可用方案;edb-grid调度组件基本属于无状态组件,通过f5或lvs等实现负载均衡、故障感知、和故障转移;数据节点通过mysql增强半同步复制技术实现数据多副本,使用类raft协议实现主节点的故障检测、leader选举、和自动故障切换;而edb-control组件则通过keepalived保证其高可用性。
产品由来
光大银行云缴费系统是国内最大的开放便民缴费平台,是行内tps最高的业务系统,累计支撑20多种缴费项目,覆盖了全国300多个城市。云缴费原来采用传统的ioe架构,成本较高,性能受限,面临供应链风险。基于上述多种原因,光大银行决定将云缴费业务的核心数据库从oracle迁移到由光大银行、光大科技和万里开源公司联合研发的everdb分布式数据库上,既保证数据的强一致和高可靠,且支持按需在线扩展,性能得到大幅提升,摆脱了对传统集中式架构的依赖。
everdb分布式数据库实现了云缴费系统的全方位提升:
-
数据强一致,提高数据库集群可靠性
-
采用多副本实现数据高可靠
-
基于一致性协议确保多数派写入,保证数据强一致性
-
故障自动failover,实现秒级故障切换,确保任意故障场景下rpo=0
-
部署灵活,横向扩展
-
支持按需在线扩展,增加并发承载能力、存储容量和iops能力
-
支持在线滚动升级,确保业务连续性
-
支持在线部署调整,支撑机房搬迁等大范围数据库部署调整
-
易迁移,成本可控
-
支持标准mysql协议,业务基于mysql重构,只需极少适配工作
-
基于x86服务器的集群进行硬件升级迭代成本总体可控
-
性能更优,满足未来发展需要
-
支撑5000 tps缴费交易
-
交易响应时间控制在60ms左右
-
满足未来3年的性能要求
-
支持在线扩容提升性能处理能力
产权所有
光大银行