altas简介:
Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。
它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性
altas实现的主要功能:
1.读写分离(已验证)
2.从库负载均衡(已验证)
3.sharding的支持(待验证)
4.自动分表(待验证)
atlas的自动分表功能(非sharding)
(1).不能垮库分表功能
(2).不支持自动建表功能
(3).分表规则比较单一(只能通过主键的取模方式分表)
(4).一次操作只能命中一个表(但是可以通过具体的子表名称进行操作),不能跨子表操作.在操作之前必须先获得某个具体的子表名称。
(5).现阶段atlas只支持简单的查询和DML操作(select,update,insert,delete,replace),truncate是不支持的,DDL也不支持
(6)insert的时候需要提前获取id(指定id,让atlas知道操作哪张表),否则只能插入第一张子表(不能让它自己自增长)
https://github.com/Qihoo360/Atlas/wiki/Atlas%E7%9A%84%E5%88%86%E8%A1%A8%E5%8A%9F%E8%83%BD%E7%AE%80%E4%BB%8B
atlas的sharding功能()
有两种sharding方式(range ,hash)
(1).每次写只能命中一个dbgroup(也就是不支持分布式事务)
(2).对子查询的支持不是很好,有可能返回错误的结果(待验证)
(3).只支持简单的select查询(如果垮库查询,limit,order by ,group by ,join ,on ,Count, Max, Min等都不支持),
(4).可以进行简单的垮库查询,例如:select * from tt where tname=‘ddd‘
(5).sharding的的表不能和非sharding的表联合查询
(5)扩展问题(range方式的分片支持静态扩展(需要重启atlas服务),hash暂不支持扩展).
https://github.com/Qihoo360/Atlas/wiki/Atlas-Sharding
有关sharding的range和hash优缺点
(1)range适合范围查找的场景,不能提高并发性能.
(2)hash提高了并发插入性能,不适合用于范围查找.
(3)hash,range支持静态扩展(需要重启服务器),
性能问题:性能还是比较好的
当并发较小时,不能充分发挥atlas的性能,
当并发较大时,select性能降低为直连的60%,DML操作降低为直连的80%,不过可以在前段配置多个atlas来弥补这一点,
另外atlas的工作线程数(event-threads)对性能影响比较大,通过官方的测试给出数据是,event-threads设置为cpu核数的2倍,性能最好。
最后对atlas服务器的选择上最好选择cpu较好的机器,对内存和磁盘的依赖较小
atlas性能测试
https://github.com/Qihoo360/Atlas/wiki/Atlas%E7%9A%84%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95
altas的安装
http://www.mamicode.com/info-detail-556437.html
https://github.com/Qihoo360/Atlas/wiki/Atlas%E7%9A%84%E5%AE%89%E8%A3%85
altas的官方文档
https://github.com/Qihoo360/Atlas/wiki
altas的相关问题
http://www.2cto.com/database/201503/382397.html