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