数据切分——Atlas介绍
??????? Atlas是由 Qihoo 360公司Web平臺部基礎架構團隊開發維護的一個基于MySQL協議的數據中間層項目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,添加了很多功能特性。目前該項目在360公司內部得到了廣泛應用,很多MySQL業務已經接入了Atlas平臺,每天承載的讀寫請求數達幾十億條。同時,有超過50家公司在生產環境中部署了Atlas,超過800人已加入了我們的開發者交流群,并且這些數字還在不斷增加。
?????? Atlas名字的由來:
?????? Atlas:希臘神話中雙肩撐天的巨人,普羅米修斯的兄弟,最高大強壯的神之一,因反抗宙斯失敗而被罰頂天。奇虎360期望這個系統能夠腳踏后端DB,為前端應用撐起一片天。
??????? Why Atlas?
??????? mysql-proxy是官方提供的mysql中間件產品可以實現負載平衡,讀寫分離,failover等,但其不支持大數據量的分庫分表且性能較差。
??????
??????? Atlas相對于官方MySQL-Proxy的優勢
??????????? 1.將主流程中所有Lua代碼用C重寫,Lua僅用于管理接口
??????????? 2.重寫網絡模型、線程模型
??????????? 3.實現了真正意義上的連接池
??????????? 4.優化了鎖機制,性能提高數十倍
??????? Atlas架構設計:
??????? Atlas是一個位于應用程序與MySQL之間中間件。在后端DB看來,Atlas相當于連接它的客戶端,在前端應用看來,Atlas相當于一個DB。Atlas作為服務端與應用程序通訊,它實現了MySQL的客戶端和服務端協議,同時作為客戶端與MySQL通訊。它對應用程序屏蔽了DB的細節,同時為了降低MySQL負擔,它還維護了連接池。
?????
?????????
????????? Atlas功能特點及常見問題:
1.Atlas是否支持多字符集?
對多字符集的支持是我們對原版MySQL-Proxy的第一項改進,符合國情是必須的。并且支持客戶端在連接時指定默認字符集。
2.Atlas是否支持事務操作?
支持,且處于事務狀態的客戶端中途退出時,Atlas會銷毀該客戶端使用的連接,讓后臺的mysql回滾事務,保證了事務的完整性。
3.自動讀寫分離挺好,但有時候我寫完馬上就想讀,萬一主從同步延遲怎么辦?
SQL語句前增加 /*master*/ 就可以將讀請求強制發往主庫。在mysql命令行測試該功能時,需要加-c選項,以防mysql客戶端過濾掉注釋信息。
4.主庫宕機,讀操作受影響么?
在Atlas中讀操作不受影響,Atlas會將讀請求轉發到其他還存活的從庫上。但此時寫請求將會失敗,因為主庫宕機了。
5.檢測后端DB狀態會阻塞正常請求么?
不會, atlas中檢測線程是異步進行檢測的,即使有db宕機,也不會阻塞主流程。在Atlas中沒有什么異常會讓主流程阻塞。
6.想下線一臺DB, 又不想停掉mysql server, 怎么辦?
可以通過管理接口手動上下線后端db, Atlas會優先考慮管理員的意愿。
7.想給集群中增加一臺DB, 不想影響線上正常訪問可以嗎?
通過管理接口可以輕松實現。
8.相比官方mysql-proxy, Atlas還有哪些改進?
A: 這實在是個難以回答的問題,性能,穩定性,可靠性,易維護性,我們做過幾十項的改進,下面會盡量列一些較大的改動
9.Atlas支持mysql的prepare特性嗎?
目前Atlas部分支持prepare功能,支持java,python,PHP(PDO方式)。
10.Altas支持多個主庫的運行模式嗎?
目前還未對于Atlas后面掛接多個主庫的情形進行測試過,不建議這樣使用。建議使用一主一從或一主多從的模式。
11.在使用Atlas的過程中,發現了Atlas存在的bug或者對Atlas有新的功能需求,如何反饋給開發者?
對于用戶反饋的bug,我們非常重視。歡迎用戶將bug的復現的環境、步驟和運行截圖發郵件至zhuchao[AT]360.cn。同時如果用戶在實際的應用場景中,對Atlas有新的功能需求,也可以向我們發郵件,我們將及時回復。另外有熱心網友建了QQ群326544838,開發者也已經加入,方便討論。
12.java程序連接Atlas出現亂碼問題
把jdbc連接中的amp;刪除掉,例如:將
jdbc:mysql://10.10.10.37:3306/user_db?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
修改為:
jdbc:mysql://10.10.10.37:3306/user_db?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
13.監控主從同步之間的延遲?
Atlas不負責MySQL的主從同步操作,需要DBA自己管理。
14.java程序連接Atlas發現不能讀寫分離,所有的請求都發向主庫,這是為什么?
檢查一下java框架,是不是默認將autocommit設置為0了,很多java框架將語句都封裝在一個事務中,而Atlas會將事務請求都發向主庫。
15.Atlas有sql語句黑名單過濾機制嗎?
有的,Atlas會屏蔽不帶where條件的delete和update操作,以及sleep函數。
?????????
???????
???????
總結
以上是生活随笔為你收集整理的数据切分——Atlas介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle12c 常用视图,oracl
- 下一篇: 想了好久 请多多指教