网易中间件Cetus开源啦

02/26 14:46
阅读数 38


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。


配置管理

管理功能丰富,支持密码加密,前后端不同密码,白名单,数据缓存大小等。





数据流


  1. Cetus监听客户端请求。

  2. 收到客户端新建连接请求后,Cetus分配可用连接。

  3. 连接建立和认证通过后,Cetus进行SQL解析后转发。

  4. 接收后端返回的结果集,进行合并和修改,然后转发给客户端。

  5. 收到客户端关闭连接的请求,Cetus重置连接位并放回连接池。



好了,以上仅仅是个简介,心动的小伙伴们赶快行动起来吧,各种详尽的文档尽在github。


Cetus中间件

开源地址

欢迎提供宝贵意见

github地址:https://github.com/Lede-Inc/cetus/blob/master/doc/cetus-quick-try.md

社群

技术专家在线及时反馈

cetus开源qq群号: 521824702

欢迎关注网易乐得DBA公众号,回复 “求拉群” DBA女神微信会拉您入cetus群




加入知数堂

挑战40万+年薪!



知数堂

叶金荣与吴炳锡联合打造

领跑IT精英培训

行业资深专家强强联合,倾心定制

MySQL实战/MySQL优化 / Python/ SQL优化

数门精品课程

紧随技术发展趋势,定期优化培训教案

融入大量生产案例,贴合企业一线需求

社群陪伴学习,一次报名,可学1年

DBA、开发工程师必修课

上千位学员已华丽转身,薪资翻番,职位提升

改变已悄然发生,你还在等什么?


扫码下载知数堂精品课程试听视频

或点击“阅读原文”直达下载地址

(MySQL 实战/优化、大数据实战、Python开发,及SQL优化等课程)

密码:hg3h



本文分享自微信公众号 - 老叶茶馆(iMySQL_WX)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部