Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
嗝屁小孩纸
guide-rpc-framework
提交
19832c73
G
guide-rpc-framework
项目概览
嗝屁小孩纸
/
guide-rpc-framework
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
1
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
guide-rpc-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
19832c73
编写于
6月 21, 2020
作者:
S
shuang.kou
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[feat]add random loadbalance
上级
a083aca4
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
87 addition
and
5 deletion
+87
-5
example-client/src/main/java/github/javaguide/NettyClientMain.java
...lient/src/main/java/github/javaguide/NettyClientMain.java
+3
-1
example-server/src/main/java/github/javaguide/NettyServerMain2.java
...rver/src/main/java/github/javaguide/NettyServerMain2.java
+15
-0
rpc-framework-simple/src/main/java/github/javaguide/loadbalance/AbstractLoadBalance.java
...ava/github/javaguide/loadbalance/AbstractLoadBalance.java
+23
-0
rpc-framework-simple/src/main/java/github/javaguide/loadbalance/LoadBalance.java
...c/main/java/github/javaguide/loadbalance/LoadBalance.java
+17
-0
rpc-framework-simple/src/main/java/github/javaguide/loadbalance/RandomLoadBalance.java
.../java/github/javaguide/loadbalance/RandomLoadBalance.java
+16
-0
rpc-framework-simple/src/main/java/github/javaguide/registry/ZkServiceDiscovery.java
...in/java/github/javaguide/registry/ZkServiceDiscovery.java
+13
-4
未找到文件。
example-client/src/main/java/github/javaguide/NettyClientMain.java
浏览文件 @
19832c73
...
@@ -17,6 +17,8 @@ public class NettyClientMain {
...
@@ -17,6 +17,8 @@ public class NettyClientMain {
//如需使用 assert 断言,需要在 VM options 添加参数:-ea
//如需使用 assert 断言,需要在 VM options 添加参数:-ea
assert
"Hello description is 222"
.
equals
(
hello
);
assert
"Hello description is 222"
.
equals
(
hello
);
Thread
.
sleep
(
12000
);
Thread
.
sleep
(
12000
);
for
(
int
i
=
0
;
i
<
10
;
i
++)
{
helloService
.
hello
(
new
Hello
(
"111"
,
"222"
));
helloService
.
hello
(
new
Hello
(
"111"
,
"222"
));
}
}
}
}
}
example-server/src/main/java/github/javaguide/NettyServerMain2.java
0 → 100644
浏览文件 @
19832c73
package
github.javaguide
;
import
github.javaguide.remoting.transport.netty.server.NettyServer
;
/**
* @author shuang.kou
* @createTime 2020年05月10日 07:25:00
*/
public
class
NettyServerMain2
{
public
static
void
main
(
String
[]
args
)
{
HelloService
helloService
=
new
HelloServiceImpl
();
NettyServer
nettyServer
=
new
NettyServer
(
"127.0.0.1"
,
9998
);
nettyServer
.
publishService
(
helloService
,
HelloService
.
class
);
}
}
rpc-framework-simple/src/main/java/github/javaguide/loadbalance/AbstractLoadBalance.java
0 → 100644
浏览文件 @
19832c73
package
github.javaguide.loadbalance
;
import
java.util.List
;
/**
* @author shuang.kou
* @createTime 2020年06月21日 07:44:00
*/
public
abstract
class
AbstractLoadBalance
implements
LoadBalance
{
@Override
public
String
selectServiceAddress
(
List
<
String
>
serviceAddresses
)
{
if
(
serviceAddresses
==
null
||
serviceAddresses
.
size
()
==
0
)
{
return
null
;
}
if
(
serviceAddresses
.
size
()
==
1
)
{
return
serviceAddresses
.
get
(
0
);
}
return
doSelect
(
serviceAddresses
);
}
protected
abstract
String
doSelect
(
List
<
String
>
serviceAddresses
);
}
rpc-framework-simple/src/main/java/github/javaguide/loadbalance/LoadBalance.java
0 → 100644
浏览文件 @
19832c73
package
github.javaguide.loadbalance
;
import
java.util.List
;
/**
* @author shuang.kou
* @createTime 2020年06月21日 07:44:00
*/
public
interface
LoadBalance
{
/**
* 在已有服务提供地址列表中选择一个
*
* @param serviceAddresses 服务地址列表
* @return 目标服务地址
*/
String
selectServiceAddress
(
List
<
String
>
serviceAddresses
);
}
rpc-framework-simple/src/main/java/github/javaguide/loadbalance/RandomLoadBalance.java
0 → 100644
浏览文件 @
19832c73
package
github.javaguide.loadbalance
;
import
java.util.List
;
import
java.util.Random
;
/**
* @author shuang.kou
* @createTime 2020年06月21日 07:47:00
*/
public
class
RandomLoadBalance
extends
AbstractLoadBalance
{
@Override
protected
String
doSelect
(
List
<
String
>
serviceAddresses
)
{
Random
random
=
new
Random
();
return
serviceAddresses
.
get
(
random
.
nextInt
(
serviceAddresses
.
size
()));
}
}
rpc-framework-simple/src/main/java/github/javaguide/registry/ZkServiceDiscovery.java
浏览文件 @
19832c73
package
github.javaguide.registry
;
package
github.javaguide.registry
;
import
github.javaguide.loadbalance.LoadBalance
;
import
github.javaguide.loadbalance.RandomLoadBalance
;
import
github.javaguide.utils.zk.CuratorUtils
;
import
github.javaguide.utils.zk.CuratorUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
java.net.InetSocketAddress
;
import
java.net.InetSocketAddress
;
import
java.util.List
;
/**
/**
* 基于 zookeeper 实现服务发现
* 基于 zookeeper 实现服务发现
...
@@ -13,14 +16,20 @@ import java.net.InetSocketAddress;
...
@@ -13,14 +16,20 @@ import java.net.InetSocketAddress;
*/
*/
@Slf4j
@Slf4j
public
class
ZkServiceDiscovery
implements
ServiceDiscovery
{
public
class
ZkServiceDiscovery
implements
ServiceDiscovery
{
private
final
LoadBalance
loadBalance
;
public
ZkServiceDiscovery
()
{
this
.
loadBalance
=
new
RandomLoadBalance
();
}
@Override
@Override
public
InetSocketAddress
lookupService
(
String
serviceName
)
{
public
InetSocketAddress
lookupService
(
String
serviceName
)
{
// TODO(shuang.kou):feat: 负载均衡
// 这里直接去了第一个找到的服务地址,eg:127.0.0.1:9999
// 这里直接去了第一个找到的服务地址,eg:127.0.0.1:9999
String
serviceAddress
=
CuratorUtils
.
getChildrenNodes
(
serviceName
).
get
(
0
);
List
<
String
>
serviceUrlList
=
CuratorUtils
.
getChildrenNodes
(
serviceName
);
log
.
info
(
"成功找到服务地址:[{}]"
,
serviceAddress
);
// 负载均衡
String
[]
socketAddressArray
=
serviceAddress
.
split
(
":"
);
String
targetServiceUrl
=
loadBalance
.
selectServiceAddress
(
serviceUrlList
);
log
.
info
(
"成功找到服务地址:[{}]"
,
targetServiceUrl
);
String
[]
socketAddressArray
=
targetServiceUrl
.
split
(
":"
);
String
host
=
socketAddressArray
[
0
];
String
host
=
socketAddressArray
[
0
];
int
port
=
Integer
.
parseInt
(
socketAddressArray
[
1
]);
int
port
=
Integer
.
parseInt
(
socketAddressArray
[
1
]);
return
new
InetSocketAddress
(
host
,
port
);
return
new
InetSocketAddress
(
host
,
port
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录