-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Atlas的开源历程(2013年)
一、里程碑
1. 2013年6月,Atlas 1.0发布,代码正式提交至Github。发布当天得到上千位业界人员的关注
2. 2013年11月,Atlas 2.0 发布,发布一周用户数翻倍
二、Github数据
1. Code Commit 71
2. Watch 360
3. Star 462
4. Fork 232
5. Issues 32
6. Pull Requests 1
7. Release Version 7
注:以上统计来源于历史记录,后项目被重置丢失
三、开源社区
1. 截至2013.12.31,共350人,来自北京、上海、广州、深圳、成都、厦门、郑州等地,包括腾讯、搜狐、人人、京东、小米、网易等众多互联网公司
2. 累计发言15000人次以上,平均每天发言120条左右
3. 累计收集问题56条,已解决42条,另有6条列入计划
4. 至少有14家公司已经应用于生产环境(部分用户不愿透露相关信息)
四、ChangeLog:
2.0.4
*修正set character_[client|results|connection]的bug
2.0.3
*支持客户端在连接时指定默认字符集
2.0.2
*检测线程只检测状态为down的DB
*处于事务状态的客户端退出时,Atlas销毁该客户端使用的连接,实现事务的自动回滚
2.0.1
*Java不能接受handshake包的随机串内包含负数,将随机串的每个字节的范围限定为[1,127]
2.0.0
*实现了Atlas自行向DB建立连接,而不再依赖客户端的连接动作,并且把连接池由队列结构改为栈结构,带来的好处:
(1)支持了长连接
(2)不再需要min-idle-connections参数
(3)连接池内的连接数可随着客户端并发量的上升而增长,且在并发量下降后自动销毁多余连接(依靠DB的wait_timeout)
*SQL日志增加了开关,可以设为关闭(OFF)、打开(ON)、实时(REALTIME)三种,默认为OFF,REALTIME用于观察调试
*启动脚本修改,在启动失败时可以报出错误信息
*去除了配置文件的mode必须低于660的限制
*检测线程不再将DB状态设为down,而是只在DB恢复后将其状态设为up,以此避免网络抖动引发的误将DB下线操作,减少无谓的lost connection
*修正管理接口无法识别含有多个空格的语句的bug
*去除全局保存的con结构队列,提升性能
*不再判断is_insert_id,提升性能
1.0.3
*支持set autocommit语句
*支持JDBC和MySQLdb框架
1.0.2
*支持Debian/Ubuntu
1.0.1
*开源初始版本
[mysql-proxy]
- 管理接口的用户名
- 管理接口的密码
- Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔
- 从库
- 用户名和密码配置项,需要和主从复制配置的用户名和密码配置一样
- 后台运行
- 工作线程数,对Atlas的性能有很大影响,可根据情况适当设置
- 日志级别,分为message、warning、critical、error、debug五个级别
- 日志存放的路径
- SQL日志的开关,可设置为OFF、ON、REALTIME,OFF代表不记录SQL日志,ON代表记录SQL日志,REALTIME代表记录SQL日>志且实时写入磁盘,默认为OFF
- sql-log = OFF
- 慢日志输出设置。当设置了该参数时,则日志只输出执行时间超过sql-log-slow(单位:ms)的日志>记录。不设置该参数则输出全部日志。
- 实例名称,用于同一台机器上多个Atlas实例间的区分
- Atlas监听的工作接口IP和端口
- Atlas监听的管理接口IP和端口
- 分表设置,此例中person为库名,mt为表名,id为分表字段,3为子表数量,可设置多项,以逗号分>隔,若不分表则不需要设置该项
- tables = person.mt.id.3
- 默认字符集,设置该项后客户端不再需要执行SET NAMES语句
- 允许连接Atlas的客户端的IP,可以是精确IP,也可以是IP段,以逗号分隔,若不设置该项则允许所>有IP连接,否则只允许列表中的IP连接
- client-ips = 127.0.0.1, 192.168.1
- Atlas前面挂接的LVS的物理网卡的IP(注意不是虚IP),若有LVS且设置了client-ips则此项必须设置>,否则可以不设置
- lvs-ips = 192.168.1.1