|
|
|
 |
您當前的位置是:新聞動態 |
|
|
 |
新聞動態 |
|
|
|
|
|
京東共享型云數據庫
發布人:管理員 來源: 瀏覽 1016 次 發布時間:2013年9月9日 [打印本頁]
|
云數據庫服務是云平臺不可或缺的重要組成部分,它承載著用戶重要關系型數據落地,數據分拆,無縫擴容等重要功能,而RDS(Relation Database Service)服務本身各家都有不同的實現,本文嘗試分析京東共享型的云數據庫的一些特點,架構及技術實現相關的內容。 通常RDS服務提供商對每個用戶的數據庫申請會為其單獨分配一臺數據庫實例,通常這個實例也是單獨建立在一臺或者多臺虛擬機上的,這種服務提供方式可以提供相對高性能的解決方案,但是存在一個問題,如果為每個用戶的實例背后都是一個或者多個虛擬機的話,必然會導致總體成本的提高,而這種成本上的增加通常也不是必要的,因為大多數中小型的業務是完全可以跑在同一個數據庫實例里的。這樣也就可以幫助那些中小開發者們大大的節省了成本問題,最終做到一個月幾塊錢的創業成本。另外也會存在一部分業務數據量和訪問量都比較大,不適合同其他用戶一起跑在同一個數據庫實例里,這部分用戶就比較合適獨立一個數據庫的實例。京東云數據庫考慮到了這兩種不同的需求,所以單獨開發了共享型云數據庫平臺,獨享型數據庫平臺兩套系統,同時又支持無縫地從一個平臺遷移到另一個平臺上。 共享型云數據庫最大的特點就是低成本,同時又不會犧牲數據庫的可用性和可靠性,即使很多個用戶共享同一個數據庫實例,每個用戶也都是有自己單獨獨立的備份,主從互備等支持。這種方案的幾個技術上的關鍵點在于如何做到用戶資源的有效隔離,數據庫的平滑擴容升級等。 1.Shared RDS API對外提供create/delete/describe等管理共享型數據庫的接口 2.對于創建數據庫Shared RDS API會根據DB資源池負載信息選擇一個適合的實例為用戶創建數據庫,并更新集群路由到JManager 3.JManager管理整個集群路由信息,收到的任何路由變更同步到JProxy路由節點 4.JProxy路由節點對外提供透明的MySQL代理服務,根據路由信息將用戶請求發送到用戶所在的數據庫實例上 5.每個數據庫實例根據資源使用情況超過指定閾值,會由JTransfer模塊將數據遷移到空閑的實例上 6.Cron模塊定時通過RDS API動態為資源池增加空閑資源 此外,京東共享型的云數據庫做到了以下關鍵技術實現: 1.租戶隔離。多個租戶共享同一數據庫實例必然需要一個有效的隔離方案,防止一個用戶的慢查詢請求或惡意請求影響其他用戶訪問。這里的隔離實現方式是通過JProxy層對用戶所有的訪問進行了攔截,并根據用戶訪問的數據表索引信息等,對用戶執行該請求所需資源進行預判,并攔截掉惡意的請求及影響其他用戶的請求。同時為了精確控制每個用戶的資源使用,整個系統針對用戶使用的連接數,內存占用容量,磁盤空間使用情況,帶寬流量等都做了有效的記錄和監控并根據用戶的配額進行控制。 2.集群路由信息高一致性保障。整體集群采用經典的弱中心化集群結構,在滿足集群高性能的基礎上同時具備足夠的可控性,JManager管理整個集群路由信息,并通過多個Slave避免單點故障,當路由變更時,JManager首先同步路由變更信息給自己的Slave,然后才會同步所有的JProxy,避免路由變更時JManager掛掉導致路由不一致。 3.高可用保障。整體集群所有節點無單點,用戶的數據庫會通過zookeeper做主從的高可用,如果用戶主庫掛掉,會自動切換至從庫,并重新綁定floating ip到從庫,不會影響對用戶的服務 4.用戶數據庫無縫升級擴容。當用戶的數據庫數據增長超過指定配額時,用戶可以選擇升級數據庫,系統會自動根據資源池使用情況將用戶數據庫遷移到比較空閑的實例上,遷移過程中并不會影響用戶的服務。通過定時自動為用戶數據庫做快照的方式,結合數據庫binlog同步工具,來幫助用戶實現增量備份,遷移的工作也是依賴于以上這些工具完成的。 共享型云數據庫是為降低開發者成本而生,同時提供服務高可用和數據高可靠的保障,這和京東云擎的服務對象是一致的。共享型云數據庫實現關鍵技術在于資源隔離,訪問控制及數據庫無縫擴容升級等工作。對于創業初期數據量和訪問量都不大的業務開發者來說,共享型云數據庫是一個非常不錯的選擇。
|
|
|
|
|
發布人:管理員 |
發布時間:2013年9月9日 |
已被瀏覽 1016 次 |
|
 |
|
|
|
|
|
|
|
|