1、@葉毅威 提問:
請教下 SOFARegistry 數據持久化在哪裏啊?
A:SOFARegistry 的元數據(註冊中心自身的 IP 列表之類的數據)存儲在 meta 角色內,使用 JRaft 進行存儲。應用的發佈數據保存在 data 角色的內存中,採用三副本(可配置)的方式實現高可用。
SOFARegistry:https://github.com/sofastack/sofa-registry
2、@葉毅威 提問:
我用 SDK 調用註冊了一個 datainfo 但是關掉之後 這個並沒有下線,是哪裏需要配置麼,不是默認鏈接斷開就下線麼
A:session 上採用 HTTP 方式獲取的數據都是當前節點的註冊數據,只有 data 上纔會做數據聚合。dataInfo 是不會被刪除的,連接斷開後對應 dataInfo 下的對應 Publisher 會被自動移除。
SOFARegistry:https://github.com/sofastack/sofa-registry
3、@田衝 提問:
現象:canal 監聽到某個被分佈式事務控制的表的 insert-binlog 日誌後再去查詢 MySQL 表裏數據時發現這條數據不存在,延遲1秒鐘左右再查詢就能查詢到。
疑問:Seata-at 模式-兩階段提交的設計會出現 MySQL 先生成了 binlog 日誌,後提交事務的情況嗎?
A:這個問題其實很簡單,你 canal 讀不到,那你自己應用本地事務提交後馬上讀這個 insert 的數據看能不能讀到;如果讀到,理論上來說這個過程不可能超過一秒,所以如果你應用能查到,你canal查不到,排查canal的問題,而不是 Seata 的問題;Seata 最後也只不過做了 connection.commit;最後事務的提交落庫是數據庫方本地事務流程落庫,Seata 不會起到任何干擾,Seata 代理的是 jdbc 層的處理;redo 後寫 binlog 時馬上就會廣播的,而不是事務提交才把 binlog 廣播出去;所以內 xa 的二階段沒提交你就去查主庫,由於隔離級別不一定查得到。
Seata:https://github.com/seata/seata
本文分享自微信公衆號 - 金融級分佈式架構(Antfin_SOFA)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。