資料切分——Atlas介紹,切分atlas介紹

來源:互聯網
上載者:User

資料切分——Atlas介紹,切分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中介軟體產品可以實現Server Load Balancer,讀寫分離,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函數。


         

       

       

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.