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
lcn 分布式事务协调者集群原理的更多相关文章
- J2EE集群原理(摘录)
J2EE集群原理 什么是集群呢?总的来说,集群包括两个概念:“负载均衡”(load balancing)和“失效备援”(failover) 图一:负载均衡 多个客户端同时发出请求,位于前端的负载均衡 ...
- kafka集群原理介绍
目录 kafka集群原理介绍 (一)基础理论 二.配置文件 三.错误处理 kafka集群原理介绍 @(博客文章)[kafka|大数据] 本系统文章共三篇,分别为 1.kafka集群原理介绍了以下几个方 ...
- LCN分布式事务管理(一)
前言 好久没写东西了,9月份换了份工作,一上来就忙的要死.根本没时间学东西,好在新公司的新项目里面遇到了之前没遇到过的难题.那遇到难题就要想办法解决咯,一个请求,调用两个服务,同时操作更新两个数据库. ...
- RabbitMQ 集群原理
RabbitMQ默认集群原理 rabbitmq 本身是基于erlang编写,erlang语言天生具备分布式的特性(通过同步Erlang集群各节点的erlang cookie实现),RabbiteMQ天 ...
- Quartz集群原理及配置应用
1.Quartz任务调度的基本实现原理 Quartz是OpenSymphony开源组织在任务调度领域的一个开源项目,完全基于Java实现.作为一个优秀的开源调度框架,Quartz具有以下特点: (1) ...
- RabbitMQ 集群原理和完善
一.RabbitMQ集群方案的原理 RabbitMQ这款消息队列中间件产品本身是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步Erlang集群各节点的magic cookie来实现 ...
- 【原理、应用】Quartz集群原理及配置应用
一.Quartz任务调度的基本实现原理 Quartz是OpenSymphony开源组织在任务调度领域的一个开源项目,完全基于Java实现.作为一个优秀的开源调度框架,Quartz具有以下特点: 强大的 ...
- C# Memcache集群原理、客户端配置详细解析
概述 memcache是一套开放源的分布式高速缓存系统.由服务端和客户端组成,以守护程序(监听)方式运行于一个或多个服务器中,随时会接收客户端的连接和操作.memcache主要把数据对象缓存到内存中, ...
- ClickHouse 分布式高可用集群搭建(转载)
一.ClickHouse安装方式: 源码编译安装 Docker安装 RPM包安装 为了方便使用,一般采用RPM包方式安装,其他两种方式这里不做说明. 二.下载安装包 官方没有提供rpm包,但是Alti ...
随机推荐
- 零碎的java知识点记录(一)
小知识点 Map有getOrDefault("1","0");取不到取默认值 两个不同对象,属性相同进行赋值转换,使用modelMapper <depen ...
- 视频下载四大神器—如何下载优酷/爱奇艺/腾讯/B站超清无水印视频
视频下载四大神器—如何下载优酷/爱奇艺/腾讯/B站超清无水印视频 2018-07-11 | 标签»下载, 下载工具, 视频 又是视频下载,老生常谈的话题.阿刚同学已在乐软博客多次与大家分享推荐 ...
- Liferay7 BPM门户开发之5: Activiti和Spring集成
参考文档: https://github.com/jbarrez/spring-boot-with-activiti-examplehttps://github.com/sxyx2008/spring ...
- Python 离线工作环境搭建
准备 在断网的和联网的机器安装pip,下载地址https://pypi.python.org/pypi/pip 在联网的开发机器上安装好需要的包 例如: pip3 install paramiko p ...
- Build step 'Execute shell' marked build as failure解决
今天jenkins构建时运行脚本报错如下: Build step 'Execute shell' marked build as failure 脚本没问题后来看了下原因是磁盘空间不足导致报错,清除下 ...
- an error occurred attempting install_Github_for_windows_无法安装的解决方法_
都在这了,作者原创.我就截图好了.
- 【OSX】解决编译AOSP时需要10.5/10.6 SDK下载
有人遇到的是需要10.6的sdk. 公司网快下载了xcode, 把里面的10.5sdk和10.6sdk拿出来, 一共才一百多兆…… 下载链接: http://pan.baidu.com/s/1gdxG ...
- 【Flask-RESTPlus系列】Flask-RESTPlus系列译文开篇
0x00 背景介绍 因为工作上的需要,最近开始研究Python中实现Restful API的框架和工具包.之前粗略学习过Flask,由于它比较轻量级,感觉用它来实现Restful API再适合不过了. ...
- java操作远程共享目录
一.前言 根据客户反馈,在进行文件下载的时候,新增远程共享目录,下载对应的文件到远程共享目录,采用常用的IO操作模式,提示下载成功,但是客户去远程共享目录查看对应的下载文件,反馈说没有找到对应的文件. ...
- Maven教程2(Eclipse配置及maven项目)
Maven教程1(介绍安装和配置) Eclipse中配置maven 1.Eclipse中默认集成的有Maven 可以使用默认的,本地仓库在当前用户下的.m2文件夹下. 2.配置我们自己安装的maven ...