利用中間件mycat 用戶端sharding-jdbc
優點:
解決了單庫大資料,高并發的性能瓶頸
拆分規則封裝好,對應用端幾乎透明,開發人員無需關系拆分細節
提高了系統的穩定性和負載能力
缺點:
拆分規則很難抽象
分片事務一緻性難以解決
二次擴充時,資料遷移,維護難度大,比如: 開始我們按照使用者id對2求模,但是随着業務的增長,2台資料庫難以支撐,還是繼續拆分為4個資料庫,那麼這時就需要做資料的遷移了
總結:
世界上的萬物沒有完美的,有利就有弊,就像資料切分一樣,無論是垂直切分,還是水準切分,它們解決了海量資料的存儲和通路性能問題,但也随之而來的帶來了很多新問題,它們的共同缺點有:
分布式的事務問題;
跨庫join問題
多資料源的管理問題
針對多資料源的管理問題,主要有兩種思路:
1.用戶端模式,在每個應用子產品内,配置自己需要的資料源,直接通路資料庫,在各個子產品内完成資料的整合
2.中間代理模式,中間代理統一管理所有的資料源,資料庫層對開發人員完全透明,開發人員無需關注拆分的細節
mycat:
mycat是一個開源的分布式資料庫系統,前端的使用者可以把它看成是個資料庫代理,用mysql用戶端和指令行工具都可以通路,而其後端則是用mysql原生的協定與多個mysql服務之前進行通信.mycat的核心功能是分庫分表,即将一個大表水準切分成n個小表,然後存放在後端的mysql資料庫中.
使用場景:
單純的讀寫分離,此時配置最為簡單,支援讀寫分離,蛀蟲切換
分庫分表,對于超過1000w的表進行分片,最大支援1000億的資料
多租戶應用,每個應用一個資料庫,應用隻連接配接mycat,程式本身不需要改造;
代理hbase,分析大資料