lcn 分布式事務協調者集群原理


lcn集群原理圖:

 

1.實現原理:

1.1 LCN獲取tm協調者注冊地址

   1. LCN客戶端項目啟動的時候,首先會注冊到事務協調者中去,然后讀取配置文件tm事務協調者的注冊地址。

   2. 向該事務協調者注冊地址發送一個請求,獲取對應的lcn底層協議ip和端口號(底層是netty協議通訊)。

   3. 會向該lcn底層協議ip和端口號建立長連接 ,保持會話信息。

lcn 協調者訪問地址,及頁面如下圖所示。

 

客戶端配置文件

tm:
  manager:
    url: http://127.0.0.1:8899/tx/manager/

2. 基於Nginx 搭建事務協調者集群

   這里所指的端口號指的是事務協調者中配置的 tm.socket.port=9999 的端口號,netty 協議端口號和ip地址。

   1.首先通過nginx配置多個tm協調者負載均衡配置,然后 LCN客戶端啟動項目的時候訪問nginx負載均衡地址獲取lcn協議通訊IP地址和端口號,並且對該連接保持長連接。

   2.因為LCN客戶端與TM協調者保持的是長連接,當tm協調者宕機之后,LCN會客戶端會立即重新進入到獲取負載均衡地址lcn協議通訊IP地址和端口號。

   3.如果lcn客戶端與事務協調者保持的長連接斷開后,那么lcn客戶端會在通過Nginx 負載均衡實現故障轉移輪詢到下一台事務協調者服務器獲取對應的lcn底層的ip和端口號,並且建立長連接。

原理圖如下:

 

nginx 配置:

### 上游服務器 集群  默認輪詢

upstream backserver{

   server 127.0.0.1:8898;

   server 127.0.0.1:8899;

}

### server{

     #### 監聽端口號

     listen       80;  

    ####  監聽域名地址

    server_name   lcn.test.com

     location / {

         ### 指定上游服務器負載均衡器

        proxy_pass  http://backserver;

        ### nginx 與上游服務器(真是訪問的服務器)的超時時間  后端服務器的連接的超時時間_發起握手等候響應超時時間

       proxy_connect_timeout   5s;

       ### nginx 發送給上游服務器(真是訪問的服務器)的超時時間

      proxy_send_timeout 5s;

      ### nginx 接受上游服務器(真實訪問的服務器)超時時間

     proxy_read_timeout 5s;

     index index.html index.htm;

   }  

}

 

項目源碼地址:https://gitee.com/MingTian-NiHao/springboot-lcn 、https://gitee.com/MingTian-NiHao/tx-lcn

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM