>[success] ### 業務上的分布式
* 新增一個用戶, 需要調多個服務(用戶服務 -> 新增用戶, 學校服務 -> 新增學生, 班級服務-> 新增學生 )
* 如果這些操作都在同一個服務, 那么用mysql事務就可以解決
* 如果這些操作不在同的服務, 就需要一個中間鍵去維護(維護服務的成功和失敗)
>[success] ### 程序上的分布式
* mysql, redis 分布式
* 相同的數據庫, 表 的實例分布式不同的機器上, 數據分片存放
* mysql cluster 提供分布式集群
* mysql router 主從, gtid 主從
---
* 早期沒有mysql cluster的時候, 通過分庫分表解決高并發
---
* mycat 數據庫中間鍵, 1.x主打分庫分表; 多個物理數據庫, 虛擬成一個邏輯庫
* 分庫分表時, 用賬號密碼連上數據庫, 每個數據庫看到的是不一樣的
* 分布式時, 用賬號密碼連上數據庫, 每個數據庫看到的是一樣的, 只是存放的數據不一樣
---
現在流行微服務, 拆得比較散了, 再加個主從就夠用了
```
1、雙主配置一般是數據流量大的情況下用,但是一般都是keepalived+雙主,這種環境,他的方法就是,兩臺主機存儲各自獨立,互為主備,負載負責高可用,如果掛一臺,另外一臺就頂上去,好處就是掛一臺無所謂,另一臺依然可以提供服務,但是,注意:如果存儲獨立,一但發生腦裂,那就要停負載,檢查雙主數據是不是同步,如果其中一臺的日志斷了,那就非常麻煩,最好的情況是,只要啟起來故障的那臺,執行start?slave;開始備機同步,就ok,最差的情況是,故障機安全完蛋了,用做正常機的庫做異機恢復,把同步重配一遍,要用軟件來比兩個庫的數據一致性無問題,開負載,業務繼續(注意:阿里云不支持keepalived類似的所有帶vip的軟件,它有自己的負載均衡,你買一臺不要錢,只在內網使用);
2、主備是用的非常多的情況,我習慣一主三備,在備機下邊做一個慢10分鐘同步的級聯,再用中間件做讀寫分離,mycat?maxscale,再加上mha高可用,寫在主,讀在備,如果主掛了,mha會把其中的一臺備機提升為主,然后把其他的兩臺設置為備,就把故障的主庫移除,慢10分鐘的級聯就是,如果在主庫執行了一個語句錯了,如(drop?table),并沒有備份的情況下,10分鐘之內發現了,那就在級聯備機把這張表拿出來,然后把binlog中的語句拿出來,去掉drop?table(執行錯了的語句),然后在主庫恢復一下就可以了,推薦這種做法,大多的互聯網公司都這樣做,不過也有不同場景不同實施的方案,這個要自己看;
```
---
微服務 主從高可用 (讀寫分離功能需要在代碼層上實現)
每個服務獨占一個數據庫, 再對并發量高的數據庫做主從,
- 111
- 日記
- 工具11
- 20200723
- 20200724
- 20201019
- 更多閱讀
- 回收站
- kafka 消費失敗和重復消費問題
- ABC
- 20200127
- MySQL從刪庫到跑路
- PHP從放棄到入門
- help
- 我的日志
- 博客驗證碼
- 項目版本管理
- C++ Json序列化
- 20190425
- 圖片
- 關鍵字
- 鏈接
- 分布式, 分庫, 分表
- 游戲開發
- goLand 編輯器
- 區塊鏈
- A-計劃
- B-計劃
- gin框架
- 鎖
- 力扣-答題
- 數據庫
- mysql 索引優化
- 挖礦
- 分布式鎖
- 跨域問題
- kafka
- 長連接
- 面向對象 面向過程 函數式編程
- websocket
- 其它問題
- zeroMq
- 工具
- linux - systemctl
- gitbook 部署
- Ubantu 基礎配置
- 備注服務
- 更換身份證(身份證到期了)
- 資源05
- 備注服務2
- 分布式
- TODO
- 資料準備
- 文章閱讀
- mysql 高可用
- 日志1
- 日記2 - 區塊鏈
- centos7 系統服務腳本
- copy_service 服務替換
- go kafka 孤人自嘲 - 偏移量 - kafka
- go vendor
- golang 顯示git工具欄
- 圖片資源
- 資訊01
- 資源01
- 資源02
- 資源03-數據庫
- 資源04
- php歷史數據
- golang 數據
- 文件1
- 文件2
- 文件3
- 文件4
- 文件5
- 文件6
- 文件7
- 文件8
- 文件9
- 文件10
- Flutter
- 管理后臺系統
- 重裝系統