Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
西红柿炒蛋不加盐
guide-rpc-framework
提交
decac3e2
G
guide-rpc-framework
项目概览
西红柿炒蛋不加盐
/
guide-rpc-framework
与 Fork 源项目一致
Fork自
嗝屁小孩纸 / guide-rpc-framework
通知
1
Star
1
Fork
0
代码
文件
提交
分支
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,体验更适合开发者的 AI 搜索 >>
提交
decac3e2
编写于
6月 01, 2020
作者:
S
shuang.kou
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[v3.0]refractor exact a interface : ServiceDiscovery
上级
d58acd0e
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
70 addition
and
32 deletion
+70
-32
example-client/src/main/java/github/javaguide/NettyClientMain.java
...lient/src/main/java/github/javaguide/NettyClientMain.java
+1
-0
rpc-framework-simple/src/main/java/github/javaguide/registry/ServiceDiscovery.java
...main/java/github/javaguide/registry/ServiceDiscovery.java
+19
-0
rpc-framework-simple/src/main/java/github/javaguide/registry/ServiceRegistry.java
.../main/java/github/javaguide/registry/ServiceRegistry.java
+1
-8
rpc-framework-simple/src/main/java/github/javaguide/registry/ZkServiceDiscovery.java
...in/java/github/javaguide/registry/ZkServiceDiscovery.java
+33
-0
rpc-framework-simple/src/main/java/github/javaguide/registry/ZkServiceRegistry.java
...ain/java/github/javaguide/registry/ZkServiceRegistry.java
+2
-11
rpc-framework-simple/src/main/java/github/javaguide/transport/netty/client/NettyClientClientTransport.java
...de/transport/netty/client/NettyClientClientTransport.java
+6
-6
rpc-framework-simple/src/main/java/github/javaguide/transport/socket/SocketRpcClient.java
...va/github/javaguide/transport/socket/SocketRpcClient.java
+5
-5
rpc-framework-simple/src/test/java/github/javaguide/registry/ZkServiceRegistryTest.java
...java/github/javaguide/registry/ZkServiceRegistryTest.java
+3
-2
未找到文件。
example-client/src/main/java/github/javaguide/NettyClientMain.java
浏览文件 @
decac3e2
...
...
@@ -17,5 +17,6 @@ public class NettyClientMain {
//如需使用 assert 断言,需要在 VM options 添加参数:-ea
assert
"Hello description is 222"
.
equals
(
hello
);
String
hello2
=
helloService
.
hello
(
new
Hello
(
"111"
,
"222"
));
System
.
out
.
println
(
hello2
);
}
}
rpc-framework-simple/src/main/java/github/javaguide/registry/ServiceDiscovery.java
0 → 100644
浏览文件 @
decac3e2
package
github.javaguide.registry
;
import
java.net.InetSocketAddress
;
/**
* 服务发现接口
*
* @author shuang.kou
* @createTime 2020年06月01日 15:16:00
*/
public
interface
ServiceDiscovery
{
/**
* 查找服务
*
* @param serviceName 服务名称
* @return 提供服务的地址
*/
InetSocketAddress
lookupService
(
String
serviceName
);
}
rpc-framework-simple/src/main/java/github/javaguide/registry/ServiceRegistry.java
浏览文件 @
decac3e2
...
...
@@ -3,7 +3,7 @@ package github.javaguide.registry;
import
java.net.InetSocketAddress
;
/**
* 服务注册
中心
接口
* 服务注册接口
*
* @author shuang.kou
* @createTime 2020年05月13日 08:39:00
...
...
@@ -17,11 +17,4 @@ public interface ServiceRegistry {
*/
void
registerService
(
String
serviceName
,
InetSocketAddress
inetSocketAddress
);
/**
* 查找服务
*
* @param serviceName 服务名称
* @return 提供服务的地址
*/
InetSocketAddress
lookupService
(
String
serviceName
);
}
rpc-framework-simple/src/main/java/github/javaguide/registry/ZkServiceDiscovery.java
0 → 100644
浏览文件 @
decac3e2
package
github.javaguide.registry
;
import
github.javaguide.utils.zk.CuratorHelper
;
import
org.apache.curator.framework.CuratorFramework
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.net.InetSocketAddress
;
/**
* 基于 zookeeper 实现服务发现
*
* @author shuang.kou
* @createTime 2020年06月01日 15:16:00
*/
public
class
ZkServiceDiscovery
implements
ServiceDiscovery
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ZkServiceDiscovery
.
class
);
private
final
CuratorFramework
zkClient
;
public
ZkServiceDiscovery
()
{
this
.
zkClient
=
CuratorHelper
.
getZkClient
();
zkClient
.
start
();
}
@Override
public
InetSocketAddress
lookupService
(
String
serviceName
)
{
// TODO 负载均衡
// 这里直接去了第一个找到的服务地址
String
serviceAddress
=
CuratorHelper
.
getChildrenNodes
(
zkClient
,
serviceName
).
get
(
0
);
logger
.
info
(
"成功找到服务地址:{}"
,
serviceAddress
);
return
new
InetSocketAddress
(
serviceAddress
.
split
(
":"
)[
0
],
Integer
.
parseInt
(
serviceAddress
.
split
(
":"
)[
1
]));
}
}
rpc-framework-simple/src/main/java/github/javaguide/registry/ZkServiceRegistry.java
浏览文件 @
decac3e2
...
...
@@ -8,13 +8,13 @@ import org.slf4j.LoggerFactory;
import
java.net.InetSocketAddress
;
/**
* 基于 zookeeper 实现服务注册
中心
* 基于 zookeeper 实现服务注册
*
* @author shuang.kou
* @createTime 2020年05月31日 10:56:00
*/
public
class
ZkServiceRegistry
implements
ServiceRegistry
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
CuratorHelper
.
class
);
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ZkServiceRegistry
.
class
);
private
final
CuratorFramework
zkClient
;
public
ZkServiceRegistry
()
{
...
...
@@ -31,13 +31,4 @@ public class ZkServiceRegistry implements ServiceRegistry {
CuratorHelper
.
createEphemeralNode
(
zkClient
,
servicePath
.
toString
());
logger
.
info
(
"节点创建成功,节点为:{}"
,
servicePath
);
}
@Override
public
InetSocketAddress
lookupService
(
String
serviceName
)
{
// TODO 负载均衡
// 这里直接去了第一个找到的服务地址
String
serviceAddress
=
CuratorHelper
.
getChildrenNodes
(
zkClient
,
serviceName
).
get
(
0
);
logger
.
info
(
"成功找到服务地址:{}"
,
serviceAddress
);
return
new
InetSocketAddress
(
serviceAddress
.
split
(
":"
)[
0
],
Integer
.
parseInt
(
serviceAddress
.
split
(
":"
)[
1
]));
}
}
rpc-framework-simple/src/main/java/github/javaguide/transport/netty/client/NettyClientClientTransport.java
浏览文件 @
decac3e2
...
...
@@ -2,8 +2,8 @@ package github.javaguide.transport.netty.client;
import
github.javaguide.dto.RpcRequest
;
import
github.javaguide.dto.RpcResponse
;
import
github.javaguide.registry.Service
Regist
ry
;
import
github.javaguide.registry.ZkService
Regist
ry
;
import
github.javaguide.registry.Service
Discove
ry
;
import
github.javaguide.registry.ZkService
Discove
ry
;
import
github.javaguide.transport.ClientTransport
;
import
github.javaguide.utils.checker.RpcMessageChecker
;
import
io.netty.channel.Channel
;
...
...
@@ -16,24 +16,24 @@ import java.net.InetSocketAddress;
import
java.util.concurrent.atomic.AtomicReference
;
/**
* 基于 Netty 传输 RpcRequest
* 基于 Netty 传输 RpcRequest
。
*
* @author shuang.kou
* @createTime 2020年05月29日 11:34:00
*/
public
class
NettyClientClientTransport
implements
ClientTransport
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
NettyClientClientTransport
.
class
);
private
ServiceRegistry
serviceRegist
ry
;
private
final
ServiceDiscovery
serviceDiscove
ry
;
public
NettyClientClientTransport
()
{
this
.
service
Registry
=
new
ZkServiceRegist
ry
();
this
.
service
Discovery
=
new
ZkServiceDiscove
ry
();
}
@Override
public
Object
sendRpcRequest
(
RpcRequest
rpcRequest
)
{
AtomicReference
<
Object
>
result
=
new
AtomicReference
<>(
null
);
try
{
InetSocketAddress
inetSocketAddress
=
service
Regist
ry
.
lookupService
(
rpcRequest
.
getInterfaceName
());
InetSocketAddress
inetSocketAddress
=
service
Discove
ry
.
lookupService
(
rpcRequest
.
getInterfaceName
());
Channel
channel
=
ChannelProvider
.
get
(
inetSocketAddress
);
if
(
channel
.
isActive
())
{
channel
.
writeAndFlush
(
rpcRequest
).
addListener
((
ChannelFutureListener
)
future
->
{
...
...
rpc-framework-simple/src/main/java/github/javaguide/transport/socket/SocketRpcClient.java
浏览文件 @
decac3e2
...
...
@@ -3,8 +3,8 @@ package github.javaguide.transport.socket;
import
github.javaguide.dto.RpcRequest
;
import
github.javaguide.dto.RpcResponse
;
import
github.javaguide.exception.RpcException
;
import
github.javaguide.registry.Service
Regist
ry
;
import
github.javaguide.registry.ZkService
Regist
ry
;
import
github.javaguide.registry.Service
Discove
ry
;
import
github.javaguide.registry.ZkService
Discove
ry
;
import
github.javaguide.transport.ClientTransport
;
import
github.javaguide.utils.checker.RpcMessageChecker
;
import
lombok.AllArgsConstructor
;
...
...
@@ -26,15 +26,15 @@ import java.net.Socket;
@AllArgsConstructor
public
class
SocketRpcClient
implements
ClientTransport
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
SocketRpcClient
.
class
);
private
final
Service
Registry
serviceRegist
ry
;
private
final
Service
Discovery
serviceDiscove
ry
;
public
SocketRpcClient
()
{
this
.
service
Registry
=
new
ZkServiceRegist
ry
();
this
.
service
Discovery
=
new
ZkServiceDiscove
ry
();
}
@Override
public
Object
sendRpcRequest
(
RpcRequest
rpcRequest
)
{
InetSocketAddress
inetSocketAddress
=
service
Regist
ry
.
lookupService
(
rpcRequest
.
getInterfaceName
());
InetSocketAddress
inetSocketAddress
=
service
Discove
ry
.
lookupService
(
rpcRequest
.
getInterfaceName
());
try
(
Socket
socket
=
new
Socket
())
{
socket
.
connect
(
inetSocketAddress
);
ObjectOutputStream
objectOutputStream
=
new
ObjectOutputStream
(
socket
.
getOutputStream
());
...
...
rpc-framework-simple/src/test/java/github/javaguide/registry/ZkServiceRegistryTest.java
浏览文件 @
decac3e2
...
...
@@ -15,10 +15,11 @@ class ZkServiceRegistryTest {
@Test
void
should_register_service_successful_and_lookup_service_by_service_name
()
{
Zk
ServiceRegistry
zkServiceRegistry
=
new
ZkServiceRegistry
();
ServiceRegistry
zkServiceRegistry
=
new
ZkServiceRegistry
();
InetSocketAddress
givenInetSocketAddress
=
new
InetSocketAddress
(
"127.0.0.1"
,
9333
);
zkServiceRegistry
.
registerService
(
"github.javaguide.registry.ZkServiceRegistry"
,
givenInetSocketAddress
);
InetSocketAddress
acquiredInetSocketAddress
=
zkServiceRegistry
.
lookupService
(
"github.javaguide.registry.ZkServiceRegistry"
);
ServiceDiscovery
zkServiceDiscovery
=
new
ZkServiceDiscovery
();
InetSocketAddress
acquiredInetSocketAddress
=
zkServiceDiscovery
.
lookupService
(
"github.javaguide.registry.ZkServiceRegistry"
);
assertEquals
(
givenInetSocketAddress
.
toString
(),
acquiredInetSocketAddress
.
toString
());
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录