| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
10年前发布

Atlas:来自360的MySQL中间层

Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平 台,每天承载的读写请求数达几十亿条。

Atlas主要功能:

  • 读写分离
  • 从库负载均衡
  • IP过滤
  • 自动分表
  • DBA可平滑上下线DB
  • 自动摘除宕机的DB

Atlas相对于官方MySQL-Proxy的优势

  • 将主流程中所有Lua代码用C重写,Lua仅用于管理接口
  • 重写网络模型、线程模型
  • 实现了真正意义上的连接池
  • 优化了锁机制,性能提高数十倍

Atlas是一个位于应用程序与MySQL之间中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个 DB。Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节, 同时为了降低MySQL负担,它还维护了连接池。Atlas的整体架构,可参考下面这两幅图:

Atlas:来自360的MySQL中间层

Atlas:来自360的MySQL中间层

 

Atlas启动后会创建多个线程,其中一个为主线程,其余为工作线程。主线程负责监听所有的客户端连接请求,工作线程只监听主线程的命令请求。如图 所示,主线程接收到客户端的连接请求,将该请求的相关信息封装为一个名为CON的结构,再把该结构推入一个异步队列。然后通过round-robin方式 选择一个工作线程,向其发送一个字节的数据包以激活它。工作线程在收到主线程的激活指令后,从异步队列中取出CON结构,开始处理客户端的请求。

Atlas:来自360的MySQL中间层

参考文档:https://github.com/Qihoo360/Atlas

引用地址:http://www.biaodianfu.com/atlas.html

 本文由用户 jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1417529856089.html
Atlas MySQL 数据库服务器