Cetus的诞生
网易电商近年来业务呈现爆发式增长,原架构环境下,数据库的性能和吞吐量已无法应对其带来的巨大压力,为彻底解决数据库的瓶颈,Cetus应运而生。Cetus由网易乐得专家技术团队领队,经多部门协调合作设计出来的优秀中间件。具有正统基因,基于官方MySQL Proxy的版本进行全面修复和再创新,提供了一个全新的数据库代理软件。目前已在网易乐得各个产品线上得到广泛应用。
功能特性
Cetus兼容MySQL协议,前端应用不用修改即可通过Cetus访问数据库,方便DBA运维同学们和开发同学们的使用。Cetus实现了数据库层面的横向扩展,解决了数据库的瓶颈。
目前Cetus有两个版本,读写分离版和Sharding版,可通过编译参数选择适合的版本。Cetus为了更好的提供服务,选了单进程模式,单进程特点鲜明,用情专一,无锁模式更能大大的提升单个实例的效率。另外Cetus还支持对用户透明的各项高大上功能,例如分布式事务、连接池、结果集压缩、安全管理、状态监控、Tcp Stream传输等等。
tcp stream
Cetus 采用了tcp stream流式处理,不需要先缓存完整结果集才转发给客户端,以避免内存炸裂,降低内存消耗,提高性能。
结果集压缩
考虑到网络延迟,为减少网络带来的影响,Cetus支持结果集压缩,大幅度提高性能。
分布式事务
使用MySQL原生的XA协议,经SQL解析路由后,Cetus自动识别并高效率执行分布式事务。
有没有来电?好,再来点冲击波,让大家更深刻地感受她的魅力,直至爱上她~
Cetus架构
Cetus位于应用端与MySQL数据库之间,连接彼此。为了实现负载均衡,前端应用可以连接LVS节点,LVS节点负责转发到多个Cetus服务,后者通过自身的连接池连接到数据库。数据库的高可用部分,目前使用了比较流行的MHA,并在此基础上进行了二次开发。整体架构图如下所示。
Cetus 的主要功能模块包括
SQL解析
引入了词法分析器flex以及语法分析器lemon,细粒度解析SQL,进行路由。
连接池
根据连接需求自适应调整连接数量,连接管理更加高效,比如连接复用,开销极小,并提供连接等待机制。
读写分离
减少写库压力,分散读压力到各个Slave节点,可配置优先主库。
Sharding
数据可通过配置进行横向扩展,目前支持int,string,date类型的key。
配置管理
管理功能丰富,支持密码加密,前后端不同密码,白名单,数据缓存大小等。
数据流
Cetus监听客户端请求。
收到客户端新建连接请求后,Cetus分配可用连接。
连接建立和认证通过后,Cetus进行SQL解析后转发。
接收后端返回的结果集,进行合并和修改,然后转发给客户端。
收到客户端关闭连接的请求,Cetus重置连接位并放回连接池。
好了,以上仅仅是个简介,心动的小伙伴们赶快行动起来吧,各种详尽的文档尽在github。
Cetus中间件
开源地址
社群
技术专家在线及时反馈
网易乐得DBA组负责网易乐得电商、网易邮箱、网易技术部数据库日常运维
负责数据库私有云平台的开发和维护
负责数据库及数据库中间件的开发和测试等
分享最前沿实用数据库干货
关注网易乐得DBA
精深数据库神功
领取专属 10元无门槛券
私享最新 技术干货