Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
holden_csdn
tx-lcn
提交
5a580b1d
T
tx-lcn
项目概览
holden_csdn
/
tx-lcn
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
tx-lcn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
5a580b1d
编写于
9月 09, 2020
作者:
W
whohim
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat( #506 ): 新负载均衡相关代码文件初始化
上级
9f559f96
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
182 addition
and
11 deletion
+182
-11
txlcn-protocol/src/main/java/com/codingapi/txlcn/protocol/message/separate/AbsMessage.java
...codingapi/txlcn/protocol/message/separate/AbsMessage.java
+4
-0
txlcn-tc/src/main/java/com/codingapi/txlcn/tc/reporter/TxManagerReporter.java
...va/com/codingapi/txlcn/tc/reporter/TxManagerReporter.java
+15
-11
txlcn-tm/src/main/java/com/codingapi/txlcn/protocol/loadbalancer/EventInterceptor.java
...dingapi/txlcn/protocol/loadbalancer/EventInterceptor.java
+12
-0
txlcn-tm/src/main/java/com/codingapi/txlcn/protocol/loadbalancer/InterceptorConfiguration.java
...txlcn/protocol/loadbalancer/InterceptorConfiguration.java
+14
-0
txlcn-tm/src/main/java/com/codingapi/txlcn/protocol/loadbalancer/LoadBalancerInterceptor.java
.../txlcn/protocol/loadbalancer/LoadBalancerInterceptor.java
+14
-0
txlcn-tm/src/main/java/com/codingapi/txlcn/tm/node/TmNode.java
...-tm/src/main/java/com/codingapi/txlcn/tm/node/TmNode.java
+4
-0
txlcn-tm/src/main/java/com/codingapi/txlcn/tm/reporter/ReporterConfiguration.java
...om/codingapi/txlcn/tm/reporter/ReporterConfiguration.java
+20
-0
txlcn-tm/src/main/java/com/codingapi/txlcn/tm/reporter/TxManagerReporter.java
...va/com/codingapi/txlcn/tm/reporter/TxManagerReporter.java
+99
-0
未找到文件。
txlcn-protocol/src/main/java/com/codingapi/txlcn/protocol/message/separate/AbsMessage.java
浏览文件 @
5a580b1d
...
...
@@ -3,6 +3,7 @@ package com.codingapi.txlcn.protocol.message.separate;
import
com.codingapi.txlcn.protocol.Protocoler
;
import
com.codingapi.txlcn.protocol.message.Connection
;
import
com.codingapi.txlcn.protocol.message.Message
;
import
lombok.Data
;
import
org.springframework.context.ApplicationContext
;
/**
...
...
@@ -10,8 +11,11 @@ import org.springframework.context.ApplicationContext;
* @date 2020/3/4
* @description
*/
@Data
public
abstract
class
AbsMessage
implements
Message
{
private
Boolean
isFirstNode
;
@Override
public
void
handle
(
ApplicationContext
springContext
,
Protocoler
protocoler
,
...
...
txlcn-tc/src/main/java/com/codingapi/txlcn/tc/reporter/TxManagerReporter.java
浏览文件 @
5a580b1d
...
...
@@ -4,15 +4,14 @@ import com.codingapi.txlcn.protocol.ProtocolServer;
import
com.codingapi.txlcn.protocol.Protocoler
;
import
com.codingapi.txlcn.protocol.message.Connection
;
import
com.codingapi.txlcn.protocol.message.Message
;
import
com.codingapi.txlcn.protocol.message.separate.TmNodeMessage
;
import
com.codingapi.txlcn.protocol.message.separate.SnowflakeMessage
;
import
com.codingapi.txlcn.protocol.message.separate.TmNodeMessage
;
import
com.codingapi.txlcn.protocol.message.separate.TransactionMessage
;
import
com.codingapi.txlcn.tc.config.TxConfig
;
import
lombok.AllArgsConstructor
;
import
org.springframework.util.Assert
;
import
java.util.Collection
;
import
java.util.Iterator
;
import
java.util.UUID
;
/**
...
...
@@ -37,12 +36,11 @@ public class TxManagerReporter {
this
.
connections
=
protocoler
.
getConnections
();
}
private
void
selectLeader
(){
if
(
connections
.
size
()>
0
){
Iterator
<
Connection
>
iterator
=
connections
.
iterator
();
while
(
iterator
.
hasNext
())
{
leader
=
iterator
.
next
();
if
(
leader
!=
null
){
private
void
selectLeader
()
{
if
(
connections
.
size
()
>
0
)
{
for
(
Connection
connection
:
connections
)
{
leader
=
connection
;
if
(
leader
!=
null
)
{
break
;
}
}
...
...
@@ -56,7 +54,7 @@ public class TxManagerReporter {
/**
* 发送消息
* @param message
* @param message
message
*/
public
void
sendMsg
(
Message
message
){
selectLeader
();
...
...
@@ -66,10 +64,12 @@ public class TxManagerReporter {
/**
* 请求消息
* @param message
m
essage
* @param message
TmNodeM
essage
*/
public
TmNodeMessage
requestMsg
(
TmNodeMessage
message
){
message
.
setInstanceId
(
UUID
.
randomUUID
().
toString
());
// 第一个接收到 TC 消息的节点
message
.
setIsFirstNode
(
true
);
selectLeader
();
checkLeader
();
return
leader
.
request
(
message
);
...
...
@@ -77,10 +77,12 @@ public class TxManagerReporter {
/**
* 请求消息
* @param message
* @param message
TransactionMessage
*/
public
TransactionMessage
requestMsg
(
TransactionMessage
message
){
message
.
setModuleName
(
txConfig
.
getApplicationName
());
// 第一个接收到 TC 消息的节点
message
.
setIsFirstNode
(
true
);
selectLeader
();
checkLeader
();
return
leader
.
request
(
message
);
...
...
@@ -93,6 +95,8 @@ public class TxManagerReporter {
*/
public
SnowflakeMessage
requestMsg
(
SnowflakeMessage
message
)
{
message
.
setInstanceId
(
UUID
.
randomUUID
().
toString
());
// 第一个接收到 TC 消息的节点
message
.
setIsFirstNode
(
true
);
selectLeader
();
checkLeader
();
return
leader
.
request
(
message
);
...
...
txlcn-tm/src/main/java/com/codingapi/txlcn/protocol/loadbalancer/EventInterceptor.java
0 → 100644
浏览文件 @
5a580b1d
package
com.codingapi.txlcn.protocol.loadbalancer
;
/**
* @author WhomHim
* @description
* @date Create in 2020/9/9 17:48
*/
@FunctionalInterface
public
interface
EventInterceptor
{
void
intercept
();
}
txlcn-tm/src/main/java/com/codingapi/txlcn/protocol/loadbalancer/InterceptorConfiguration.java
0 → 100644
浏览文件 @
5a580b1d
package
com.codingapi.txlcn.protocol.loadbalancer
;
import
org.springframework.context.annotation.Configuration
;
/**
* @author WhomHim
* @description
* @date Create in 2020/9/9 17:57
*/
@Configuration
public
class
InterceptorConfiguration
{
}
txlcn-tm/src/main/java/com/codingapi/txlcn/protocol/loadbalancer/LoadBalancerInterceptor.java
0 → 100644
浏览文件 @
5a580b1d
package
com.codingapi.txlcn.protocol.loadbalancer
;
/**
* @author WhomHim
* @description
* @date Create in 2020/9/9 18:06
*/
public
class
LoadBalancerInterceptor
implements
EventInterceptor
{
@Override
public
void
intercept
()
{
}
}
txlcn-tm/src/main/java/com/codingapi/txlcn/tm/node/TmNode.java
浏览文件 @
5a580b1d
...
...
@@ -84,6 +84,10 @@ public class TmNode {
otherNodeList
.
forEach
(
iNetSocketAddress
->
protocolServer
.
connectTo
(
iNetSocketAddress
.
getHostString
(),
iNetSocketAddress
.
getPort
()));
}
public
void
sentToOtherNode
(){
}
}
txlcn-tm/src/main/java/com/codingapi/txlcn/tm/reporter/ReporterConfiguration.java
0 → 100644
浏览文件 @
5a580b1d
package
com.codingapi.txlcn.tm.reporter
;
import
com.codingapi.txlcn.protocol.ProtocolServer
;
import
com.codingapi.txlcn.tm.config.TmConfig
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
/**
* @author whohim
*/
@Configuration
public
class
ReporterConfiguration
{
@Bean
public
TxManagerReporter
txManagerProtocolHandler
(
ProtocolServer
protocolServer
,
TmConfig
tmConfig
)
{
return
new
TxManagerReporter
(
protocolServer
,
tmConfig
);
}
}
txlcn-tm/src/main/java/com/codingapi/txlcn/tm/reporter/TxManagerReporter.java
0 → 100644
浏览文件 @
5a580b1d
package
com.codingapi.txlcn.tm.reporter
;
import
com.codingapi.txlcn.protocol.ProtocolServer
;
import
com.codingapi.txlcn.protocol.Protocoler
;
import
com.codingapi.txlcn.protocol.message.Connection
;
import
com.codingapi.txlcn.protocol.message.Message
;
import
com.codingapi.txlcn.protocol.message.separate.SnowflakeMessage
;
import
com.codingapi.txlcn.protocol.message.separate.TmNodeMessage
;
import
com.codingapi.txlcn.protocol.message.separate.TransactionMessage
;
import
com.codingapi.txlcn.tm.config.TmConfig
;
import
lombok.AllArgsConstructor
;
import
org.springframework.util.Assert
;
import
java.util.Collection
;
import
java.util.UUID
;
/**
* @author whohim
*/
@AllArgsConstructor
public
class
TxManagerReporter
{
private
Protocoler
protocoler
;
private
Collection
<
Connection
>
connections
;
private
Connection
leader
;
private
TmConfig
tmConfig
;
public
TxManagerReporter
(
ProtocolServer
protocolServer
,
TmConfig
tmConfig
)
{
this
.
protocoler
=
protocolServer
.
getProtocoler
();
this
.
tmConfig
=
tmConfig
;
this
.
connections
=
protocoler
.
getConnections
();
}
private
void
selectLeader
()
{
if
(
connections
.
size
()
>
0
)
{
for
(
Connection
connection
:
connections
)
{
leader
=
connection
;
if
(
leader
!=
null
)
{
break
;
}
}
}
}
private
void
checkLeader
(){
Assert
.
notNull
(
leader
,
"没有可用的TM资源."
);
}
/**
* 发送消息
* @param message message
*/
public
void
sendMsg
(
Message
message
){
selectLeader
();
checkLeader
();
leader
.
send
(
message
);
}
/**
* 请求消息
* @param message TmNodeMessage
*/
public
TmNodeMessage
requestMsg
(
TmNodeMessage
message
){
message
.
setInstanceId
(
UUID
.
randomUUID
().
toString
());
selectLeader
();
checkLeader
();
return
leader
.
request
(
message
);
}
/**
* 请求消息
* @param message TransactionMessage
*/
public
TransactionMessage
requestMsg
(
TransactionMessage
message
){
message
.
setModuleName
(
tmConfig
.
getName
());
selectLeader
();
checkLeader
();
return
leader
.
request
(
message
);
}
/**
* 请求消息
* @param message SnowFlakeMessage
* @return SnowflakeMessage
*/
public
SnowflakeMessage
requestMsg
(
SnowflakeMessage
message
)
{
message
.
setInstanceId
(
UUID
.
randomUUID
().
toString
());
selectLeader
();
checkLeader
();
return
leader
.
request
(
message
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录