1. 程式人生 > 實用技巧 >大廠面試系列(九):MQ和分散式事務

大廠面試系列(九):MQ和分散式事務

MQ和分散式事務

MQ

  • 專案中RabbitMQ實現了at least once,包括mq反饋provider,訊息持久化,consumer主動反饋mq.執行緒池消費防止訊息積壓等
  • mq 通知時,消費者沒消費到怎麼辦
  • 簡單聊聊訊息中介軟體?
  • 你瞭解那些具體的訊息中介軟體產品?
  • mq的消費端是怎麼處理的? 整理一下你的消費端的整個處理邏輯流程,然後說說你的ack是在哪裡返回的。按照你這樣畫的話,如果資料庫突然宕機,你的訊息該怎麼確認已經接收? 那如果傳送端的服務是多臺部署呢?你儲存訊息的時候資料庫就一直報唯一性的錯誤?
  • rocketmq用在什麼場景。 如果消費者組A下面有兩個消費者組A1,A2,問消費者A1和A2能否消費不同的topic ?rocketmq如何保證的事務。
  • kafka,activemq,rabbitmq,rocketmq都有什麼優點,缺點啊?
  • 如果讓你寫一個訊息佇列,該如何進行架構設計啊?說-下你的思路
  • 用過哪些MQ,怎麼用的,和其他mq比較有什麼優缺點,MQ的連線是執行緒安全的嗎 ?MQ系統的資料如何保證不丟失
  • mq 通知時,消費者沒消費到怎麼辦
  • mq的p2p模式
  • mq訊息的冪等性如何保證? mq如何保證順序消費?
  • MQ怎樣保證訊息的可靠性以及當時如何做訊息冪等處理的
  • 如何確保訊息正確地傳送至RabbitMQ? 如何確保訊息接收方消費了訊息? 如何避免訊息重複投遞或重複消費? 訊息基於什麼傳輸? 訊息如何分發? 訊息怎麼路由? 如何確保訊息不丟失? 使用RabbitMQ有什麼好處? rabbitmq的叢集。 mq的缺點

分散式事務

首先來一個具體的解決方案的示例

  	*  1、兩階段提交(2PC) 第一階段:事務協調器要求每個涉及到事務的資料庫預提交(precommit)此操作,並反映是否可以提交. 第二階段:事務協調器要求每個資料庫提交資料。 優點: 儘量保證了資料的強一致,適合對資料強一致要求很高的關鍵領域。(其實也不能100%保證強一致) 缺點: 實現複雜,犧牲了可用性,對效能影響較大,不適合高併發高效能場景,如果分散式系統跨介面呼叫,目前 .NET 界還沒有實現方案。 
  	* 2、補償事務(TCC) 針對每個操作,都要註冊一個與其對應的確認和補償(撤銷)。Try、Confirm、Cancel 優點: 跟2PC比起來,實現以及流程相對簡單了一些,但資料的一致性比2PC也要差一些 缺點: 缺點還是比較明顯的,在2,3步中都有可能失敗。TCC屬於應用層的一種補償方式,所以需要程式設計師在實現的時候多寫很多補償的程式碼,在一些場景中,一些業務流程可能用TCC不太好定義及處理。 
  	* 3、本地訊息表(非同步確保) 核心思想是將分散式事務拆分成本地事務進行處理,訊息生產方,需要額外建一個訊息表,並記錄訊息傳送狀態。訊息表和業務資料要在一個事務裡提交,也就是說他們要在一個數據庫裡面。然後訊息會經過MQ傳送到訊息的消費方。如果訊息傳送失敗,會進行重試傳送。 優點: 一種非常經典的實現,避免了分散式事務,實現了最終一致性。在 .NET中 有現成的解決方案。 缺點: 訊息表會耦合到業務系統中,如果沒有封裝好的解決方案,會有很多雜活需要處理。 
  	* 4、MQ事務訊息 RocketMQ支援,RabbitMQ 和 Kafka 都不支援,一次傳送訊息和一次確認訊息,生產方需要實現一個check介面(確認訊息或者回滾) 優點: 實現了最終一致性,不需要依賴本地資料庫事務。 缺點: 實現難度大,主流MQ不支援,沒有.NET客戶端,RocketMQ事務訊息部分程式碼也未開源。 
  	* 5、Sagas事務模型 長時間執行的事務,該模型其核心思想就是拆分分散式系統中的長事務為多個短事務,或者叫多個本地事務,然後由 Sagas 工作流引擎負責協調,如果整個流程正常結束,那麼就算是業務成功完成,如果在這過程中實現失敗,那麼Sagas工作流引擎就會以相反的順序呼叫補償操作,重新進行業務回滾。 
  • 分散式事務瞭解嗎?有哪些處理方法?
  • 專案中有分散式事務處理嗎?有哪些常見的分散式事務處理方式?說一下你們在專案中怎麼用的。
  • 分散式情況下如何保證事務。 如何設計實現一個分散式事務
  • 分散式事務的各種方案及你的最佳方案
  • 分散式事務是什麼
  • 什麼是分散式事務?分散式事務如何保證資料一致性?
  • 分散式事務知道嗎?你們怎麼解決的?TCC?那若出現網路原因,網路連不通怎麼辦啊
  • 對分散式事務的理解
  • 分散式事務的原理,如何使用分散式事務
  • 多個服務之間呼叫的資料一致性問題,A服務中呼叫B服務 、C服務,B成功 C失敗怎麼解決? 其實歸根到底就是分散式事務的資料一致性解決方案,失敗了資料怎麼回滾
  • 分散式事務的實現方式,分散式鎖,分散式一致性,redis分散式鎖;
  • 分散式事務瞭解嗎?你們專案中都用到了哪些分散式事務?都有哪些優缺點?
  • 簡單實現分散式事務

歡迎搜尋關注本人與朋友共同開發的微信面經小程式【大廠面試助手】和公眾號【微瞰技術】