## **數據庫中間件MyCat**
## MyCat是什么
數據庫分庫分表中間件。
詳細參考[mycat官網鏈接](http://www.mycat.org.cn/)
## 分庫分表無中間件模式

在每個應用程序模塊中配置管理自己需要的一個(或者多個)數據源,直接訪問各個數據庫,在模塊內完成數據的整合;
**優點:**
相對簡單,無性能損耗。
**缺點:**
不夠通用,數據庫連接的處理復雜,對業務不夠透明,處理復雜
## 分庫分表中間件Mycat模式

通過中間代理層(Mycat)來統一管理所有的數據源,后端數據庫集群對前端應用程序透明;
**優點:**
通用,對應用透明,改造少
**缺點:**
實現難度大,有二次轉發性能損失。單機損失30% 左右
# mycat中間件運行原理

1. application提交sql后, 經過sql解析, 優化, 路由, 解析為對應的sql指令, 交給具體的sql機器執行
2. 各節點的計算結果進行結果集合并
3. manager負責master的集群管理, 內存管理等
## Mycat技術特點
* 遵守Mysql原生協議,跨語言,跨數據庫的通用中間件代理
* 基于心跳的自動故障切換,支持讀寫分離,支持MySQL一雙主多從,以及一主多從
* 有效管理數據源連接,基于數據分庫,而不是分表的模式
* 基于Nio實現,有效管理線程,高并發問題
* 支持數據的多片自動路由與聚合,支持sum,count,max等常用的聚合函數
* 支持2表join,甚至基于caltlet的多表join
* 支持通過全局表,ER關系的分片策略,實現了高效的多表join查詢
* 支持多租戶方案。-支持分布式事務(弱xa)
* 支持全局序列號,解決分布式下的主鍵生成問題
* 分片規則豐富,插件化開發,易于擴展
* 強大的web,命令行監控
* 支持前端作為mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server、mongodb、巨杉
* 集群基于ZooKeeper管理,在線升級,擴容,智能優化,大數據處理(2.0開發版)
- PHP篇
- 函數傳值和傳引用的區別
- 簡述PHP的垃圾回收機制
- 簡述CGI、FAST-CGI、PHP-FPM的關系
- 常見正則表達式
- 多進程寫文件,如何保證都寫成功
- php支持回調函數的數組函數
- MySQL篇
- MySQL的兩種存儲引擎區別
- 事務的四大特性
- 數據庫事務隔離級別
- 什么是索引
- 索引有哪些數據結構,優缺點
- 索引的一些潛規則
- SQL的優化方案
- 簡述MySQL的鎖機制
- 死鎖是怎么產生的?怎么解決?
- 簡述MySQL的主從復制過程,延遲問題怎么解決
- 分布式事務的解決方案
- 數據庫中間件MyCat
- Linux篇
- Linux常用命令
- 對日志文件的IP出現的次數進行統計,并顯示次數最多的前5名
- WEB篇
- 跨域是怎么產生的,如何解決跨域
- Redis篇
- redis介紹
- redis和memcached區別
- redis的持久化方案
- 緩存穿透、擊穿、雪崩、預熱、更新、降級
- 網絡篇
- 計算機網絡體系結構
- 簡述TCP的三次握手、四次揮手過程
- UDP、TCP 區別,適用場景
- HTTP常見狀態碼含義
- 設計模式篇
- 單例模式
- 簡單工廠模式
- 抽象工廠模式
- 觀察者模式
- 策略模式
- 注冊模式
- 適配器模式
- 安全篇
- 跨站腳本攻擊(XSS)
- 跨站點請求偽造(CSRF)
- SQL 注入
- 應用層拒絕服務攻擊
- PHP安全
- 運維篇
- docker面試題
- 消息隊列篇
- 架構篇
- 數據結構與算法篇