主從庫同步
哨兵機制
新客服系統
主從庫同步
06 | 数据同步:主从库如何实现数据一致?
主從庫架構
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9493264/截圖_2022-04-17_下午8.54.22.png)
同步流程
(全量複製)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9499388/截圖_2022-04-20_上午9.59.09.png)
分散主庫負擔的方法
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9507701/截圖_2022-04-22_下午8.58.29.png)
增量複製
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9507874/截圖_2022-04-22_下午9.52.37.png)
repl_backlog_buffer
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9507881/截圖_2022-04-22_下午9.54.02.png)
哨兵機制
07 | 哨兵机制:主库挂了,如何不间断服务?
08 | 哨兵集群:哨兵挂了,主从库还能切换吗?
哨兵
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9509170/My_Project4-23-2022_12-09-54.gif)
(眾所周知,人只要不想做簡報,就會開始發展其他東西以拖延時間,像是做動畫之類的)
哨兵們是怎麼聯繫的?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9509224/My_Project4-23-2022_13-40-45.gif)
哨兵們是怎麼知道從庫的?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9509228/My_Project4-23-2022_13-47-30.gif)
任務一:監測斷線
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9509181/My_Project4-23-2022_12-23-22.gif)
主觀斷線與客觀斷線
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9509187/My_Project4-23-2022_12-34-17.gif)
任務二:選主
(就跟麒麟一樣,所以哨兵是一種麒麟)
從庫B
從庫C
從庫D
從庫E
網路已斷線
網路時斷時連
down-after-milliseconds 高於閥值
網路穩定
slave-priority: 1
slave_repl_offset: 200
網路穩定
slave-priority: 1
slave_repl_offset: 100
第一步:剔除斷線的人,與易斷線的人
第二步:給剩下的人評分
誰是哨兵的領袖?誰可以執行易主?
當吹哨者
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9509239/My_Project4-23-2022_14-16-57.gif)
誰是哨兵的領袖?誰可以執行易主?
領袖選舉
領袖條件:
1. 拿到活著的人,半數以上的贊成票
2. 贊成票數大於等於文件配置的 quorum 值
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9509244/My_Project4-23-2022_14-34-11.gif)
任務三:通知
1. 讓從庫與新的主庫同步
2. 通知 client 端與新的主庫連線
Client 是怎麼知道主庫易主了?
訂閱點讚開啟小鈴鐺
訂閱哨兵
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9509232/截圖_2022-04-23_下午2.03.59.png)
就如同主庫會死掉
哨兵也是會死掉的
一個哨兵死掉基本不會有影響
但如果死掉的哨兵超過文件配置的 quorum 值
領袖選舉會失敗
就會無法更換主庫
新客服系統
緣起
- 舊客服系統修繕不易
- 舊客服系統有太多手刻而不穩定的機制
- 舊客服系統太依賴週邊的機器(Redis, Laravel, RabbitMQ)
- 新的需求會需要加強跟 Laravel 之前的連結
聊天室機制
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9509270/My_Project4-23-2022_15-15-25.gif)
判斷在線的機制
- 一分鐘問 echo server 會員 socket 狀態
- 每五秒從會員收到 /heartbeat api
- 心跳在跳是會員存活證明的依據,但不是用來判斷會員在線
- 存活證明是用來判斷會員在線
- 心跳停止到死亡證明的開立可能有時間差,是避免短時間的誤判造成上下線的切換頻繁
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9509292/My_Project4-23-2022_15-35-08.gif)
Sentinel 機制
此 sentinel 非 redis sentinel
目的:在 echo server 掛掉或 socket 斷線後
減少資料庫的存取次數
![](https://s3.amazonaws.com/media-p.slid.es/uploads/356411/images/9509299/My_Project4-23-2022_15-55-23.gif)
動畫軟體
- 免費
- 不用登入
- 簡單好上手
- 專案檔可保存在本地端,隨意放
- 可匯出 GIF, MP4
我花了三分鐘找到它owo,好用
refactor-bf
By 球魚
refactor-bf
- 557