成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

干貨!MySQL DAL中間件總結

數據庫 MySQL
本文不會去介紹MySql 的高可用,需要了解Mysql高可用架構相關的請戳淺談MySQL集群高可用架構,本文主要介紹mysql的訪問中間件(DAL)的一些實現方案。

1、前言

MySql 作為互聯網公司都會用到的數據庫,如果在使用過程中出現性能問題,會采用mysql的橫向擴展,使用主從復制來提高讀性能,要是解決寫入問題,需要進行分庫分表。本文不會去介紹MySql 的高可用,需要了解Mysql高可用架構相關的請戳淺談MySQL集群高可用架構,本文主要介紹mysql的訪問中間件(DAL)的一些實現方案。 

2、Atlas

官網:https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md

2.1.atlas簡介

Atlas是由 Qihoo 360公司Web平臺部基礎架構團隊開發維護的一個基于MySQL協議的數據中間層項目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,添加了很多功能特性。目前該項目在360公司內部得到了廣泛應用,很多MySQL業務已經接入了Atlas平臺,每天承載的讀寫請求數達幾十億條。同時,有超過50家公司在生產環境中部署了Atlas,超過800人已加入了我們的開發者交流群,并且這些數字還在不斷增加。

2.2.atlas架構

Atlas是一個位于應用程序與MySQL之間中間件。在后端DB看來,Atlas相當于連接它的客戶端,在前端應用看來,Atlas相當于一個DB。Atlas作為服務端與應用程序通訊,它實現了MySQL的客戶端和服務端協議,同時作為客戶端與MySQL通訊。它對應用程序屏蔽了DB的細節,同時為了降低MySQL負擔,它還維護了連接池。

 

2.3、主要功能

1.讀寫分離

2.從庫負載均衡

3.IP過濾

4.自動分表

5.DBA可平滑上下線DB

6.自動摘除宕機的DB

Atlas相對于官方MySQL-Proxy的優勢

1.將主流程中所有Lua代碼用C重寫,Lua僅用于管理接口

2.重寫網絡模型、線程模型

3.實現了真正意義上的連接池

4.優化了鎖機制,性能提高數十倍

3、Mysql router

官網:http://dev.mysql.com/doc/mysql-router/en/

3.1、mysql router簡介

MySQL Router是mysql官方發布的數據庫中間件,是處于應用client和dbserver之間的輕量級代理程序,它能檢測,分析和轉發查詢到后端數據庫實例,并把結果返回給client。是mysql-proxy的一個替代品。其架構圖和功能如下。

3.2、mysql router架構

 

  • 1.Router實現讀寫分離,程序不是直接連接數據庫IP,而是固定連接到mysql router。MySQL Router對前端應用是透明的。應用程序把MySQL Router當作是普通的mysql實例,把查詢發給MySQL Router,而MySQL Router會把查詢結果返回給前端的應用程序。
  • 2.從數據庫服務器故障,業務可以正常運行。由MySQL Router來進行自動下線不可用服務器。程序配置不需要任何修改。
  • 3.主數據庫故障,由MySQL Router來決定主從自動切換,業務可以正常訪問。程序配置不需要做任何修改。

MySQL Router讀寫分離原理:

MySQL Router接受前端應用程序請求后,根據不同的端口來區分讀寫,把連接讀寫端口的所有查詢發往主庫,把連接只讀端口的select查詢以輪詢方式發往多個從庫,從而實現讀寫分離的目的。讀寫返回的結果會交給MySQL Router,由MySQL Router返回給客戶端的應用程序。

3.3.mysql router主要功能

MySQL Router的主要用途是讀寫分離,主主故障自動切換,負載均衡,連接池等。

4、Mycat

官網:http://www.mycat.org.cn/

4.1、mycat簡介

Mycat是基于開源cobar演變而來,對cobar的代碼進行了徹底的重構,使用NIO重構了網絡模塊,并且優化了Buffer內核,增強了聚合,Join等基本特性,同時兼容絕大多數數據庫成為通用的數據庫中間件。1.4 版本以后 完全的脫離基本cobar內核,結合Mycat集群管理、自動擴容、智能優化,成為高性能的中間件。

  • 一個徹底開源的,面向企業應用開發的大數據庫集群
  • 支持事務、ACID、可以替代MySQL的加強版數據庫
  • 一個可以視為MySQL集群的企業級數據庫,用來替代昂貴的Oracle集群
  • 一個融合內存緩存技術、NoSQL技術、HDFS大數據的新型SQL Server
  • 結合傳統數據庫和新型分布式數據倉庫的新一代企業級數據庫產品
  • 一個新穎的數據庫中間件產品

4.2、mycat架構

 

4.3、mycat主要功能

  • 支持SQL92標準
  • 遵守Mysql原生協議,跨語言,跨平臺,跨數據庫的通用中間件代理。
  • 基于心跳的自動故障切換,支持讀寫分離,支持MySQL主從,以及galera cluster集群。
  • 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
  • 基于Nio實現,有效管理線程,高并發問題。
  • 支持數據的多片自動路由與聚合,支持sum,count,max等常用的聚合函數。
  • 支持單庫內部任意join,支持跨庫2表join,甚至基于caltlet的多表join。
  • 支持通過全局表,ER關系的分片策略,實現了高效的多表join查詢。
  • 支持多租戶方案。
  • 支持分布式事務(弱xa)。
  • 支持全局序列號,解決分布式下的主鍵生成問題。
  • 分片規則豐富,插件化開發,易于擴展。
  • 強大的web,命令行監控。
  • 支持前端作為mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。
  • 支持密碼加密
  • 支持服務降級
  • 支持IP白名單
  • 支持SQL黑名單、sql注入攻擊攔截
  • 支持分表(1.6)
  • 集群基于ZooKeeper管理,在線升級,擴容,智能優化,大數據處理(2.0開發版)。

Mysql+mycat架構實戰請戳Mysql+Mycat實現數據庫主從同步與讀寫分離 

5、Cobar

官網:https://github.com/alibaba/cobar/wiki

5.1.cobar簡介

Cobar是提供關系型數據庫(MySQL)分布式服務的中間件,它可以讓傳統的數據庫得到良好的線性擴展,并看上去還是一個數據庫,對應用保持透明。產品在阿里巴巴穩定運行3年以上。接管了3000+個MySQL數據庫的schema。集群日處理在線SQL請求50億次以上。集群日處理在線數據流量TB級別以上。

5.2.cobar架構

 

5.3、cobar現狀

2013年阿里的Cobar在社區使用過程中發現存在一些比較嚴重的問題,及其使用限制,后來在cobar的基礎上改良誕生mycat,也就是目前cobar的代替版,而且2013年之后就沒有版本更新了。

6、Amoeba

官網:http://docs.hexnova.com/amoeba/

6.1、amoeba簡介

Amoeba(變形蟲)項目,該開源框架于2008年 開始發布一款 Amoeba for Mysql軟件。這個軟件致力于MySQL的分布式數據庫前端代理層,它主要在應用層訪問MySQL的 時候充當SQL路由功能,專注于分布式數據庫代理層(Database Proxy)開發。座落與 Client、DB Server(s)之間,對客戶端透明。具有負載均衡、高可用性、SQL 過濾、讀寫分離、可路由相關的到目標數據庫、可并發請求多臺數據庫合并結果。通過Amoeba你能夠完成多數據源的高可用、負載均衡、數據切片的功能

6.2、amoeba架構

 

6.3、amoeba現狀

目前作者已經停止維護。

7、Mysql proxy

7.1.mysql proxy簡介

MySQL Proxy是一個處于你的client端和MySQL server端之間的簡單程序,它可以監測、分析或改變它們的通信。它使用靈活,沒有限制,常見的用途包括:負載均衡,故障、查詢分析,查詢過濾和修改等等。MySQL Proxy就是這么一個中間層代理,簡單的說,MySQL Proxy就是一個連接池,負責將前臺應用的連接請求轉發給后臺的數據庫,并且通過使用lua腳本,可以實現復雜的連接控制和過濾,從而實現讀寫分離和負載平衡。對于應用來說,MySQL Proxy是完全透明的,應用則只需要連接到MySQL Proxy的監聽端口即可。當然,這樣proxy機器可能成為單點失效,但完全可以使用多個proxy機器做為冗余,在應用服務器的連接池配置中配置到多個proxy的連接參數即可。MySQL Proxy更強大的一項功能是實現“讀寫分離”,基本原理是讓主數據庫處理事務性查詢,讓從庫處理SELECT查詢。數據庫復制被用來把事務性查詢導致的變更同步到集群中的從庫。

7.2、mysql proxy現狀

自從mysql官網出現mysql router之后,mysql proxy就已經停止維護了。

mysql proxy架構實戰ProxySQL+Mysql實現數據庫讀寫分離實戰 

8、客戶端分片

8.1、客戶端分片簡介

程序客戶端進行分庫分表。也就是直接在程序里面進行數據庫和表的拆分,例如用戶表。根據用戶的UID,例如13678789,根據最后一位,可以拆分為0-9共10個數據庫,把尾號是0的存入db_user_0數據庫,尾號是1的存入db_user_1數據庫,select的時候也是一樣。然后根據倒數第二位,可以拆分為0-9共10張表,根據倒數第二的尾號寫入相應的表中。例如13678789這個UID的信息,寫入db_user_9數據庫的table_user_8的表中。

8.2、優點

(1)不需要使用中間件對性能沒有影響(2)通過代碼控制,可定義性強

9、后記

對于上面的mysql中間件,我個人建議在生產中使用atlas和mycat,開發實力較強或者有DBA的情況下可以使用客戶端分片。Mysql router感覺目前還不是很成熟,至于其他的中間件作者都不更新了,只要沒有歷史遺留問題還是不要用了。

 

責任編輯:龐桂玉 來源: 數據庫開發
相關推薦

2019-09-29 11:04:22

MySQL數據庫Atlas

2011-05-24 15:10:48

2021-02-11 08:21:02

中間件開發CRUD

2018-02-01 10:19:22

中間件服務器系統

2018-07-29 12:27:30

云中間件云計算API

2016-11-11 21:00:46

中間件

2012-11-30 10:21:46

移動中間件

2009-06-16 15:55:06

JBoss企業中間件

2023-10-24 07:50:18

消息中間件MQ

2023-06-29 10:10:06

Rocket MQ消息中間件

2011-11-28 17:53:55

淘寶aDev技術沙龍

2021-06-15 10:01:02

應用系統軟件

2012-11-01 15:16:22

金蝶中間件研究院院長

2018-05-08 16:33:31

中間件RPC企業

2014-06-20 09:18:54

Dustjs中間件

2013-03-13 10:37:22

中間件Windows

2013-03-14 22:54:15

PaaS中間件平臺即服務

2015-08-11 11:16:36

淘寶中間件

2022-11-02 10:08:46

分布式高并發消息中間件

2018-05-02 16:23:24

中間件RPC容器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费在线成人网 | 天天欧美 | 美国av毛片 | 综合色在线| www国产亚洲精品久久网站 | 欧美日韩一区二区在线观看 | 国产一区二区三区色淫影院 | 九九热久久免费视频 | 中文字幕 亚洲一区 | 国产精品无码久久久久 | 亚洲福利网 | 精品福利在线视频 | 范冰冰一级做a爰片久久毛片 | 九九免费在线视频 | 亚洲国产精品久久久 | www.47久久青青 | 在线视频成人 | 国产欧美日韩一区二区三区 | 国产精品久久久久久久久婷婷 | 国产99精品| 亚洲欧美一区二区三区国产精品 | 大学生a级毛片免费视频 | 久热精品在线观看视频 | 亚洲黄色一级 | 国产女人与拘做视频免费 | 日韩亚洲视频在线 | 激情亚洲 | 亚洲欧美日韩国产综合 | 中文一区 | 国产一区二区在线播放 | 一区二区中文字幕 | 国产精华一区 | 欧美成人h版在线观看 | 一区二区三区久久 | 国产精品视频一二三区 | 亚洲精品乱码 | 久久天堂网 | 亚洲播放| 精品国产一区二区三区性色av | 亚洲成人天堂 | 久久久久黄色 |