mirror of
https://github.com/duanhf2012/origin.git
synced 2026-02-03 22:45:13 +08:00
服务发现配置的使用说明
This commit is contained in:
46
README.md
46
README.md
@@ -383,6 +383,23 @@ too slow process:Timer_orginserver/simple_service.(*TestService1).Loop-fm is tak
|
||||
直接帮助找到TestService1服务中的Loop函数
|
||||
|
||||
|
||||
结点连接和断开事件监听:
|
||||
---------------
|
||||
在有些业务中需要关注某结点是否断开连接,可以注册回调如下:
|
||||
```
|
||||
func (ts *TestService) OnInit() error{
|
||||
ts.RegRpcListener(ts)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ts *TestService) OnNodeConnected(nodeId int){
|
||||
}
|
||||
|
||||
func (ts *TestService) OnNodeDisconnect(nodeId int){
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
第三章:Module使用:
|
||||
---------------
|
||||
@@ -686,8 +703,35 @@ func (slf *TestService7) GoTest(){
|
||||
```
|
||||
您可以把TestService6配置到其他的Node中,比如NodeId为2中。只要在一个子网,origin引擎可以无差别调用。开发者只需要关注Service关系。同样它也是您服务器架构设计的核心需要思考的部分。
|
||||
|
||||
第六章:配置服务发现
|
||||
---------------
|
||||
origin引擎默认使用读取所有结点配置的进行确认结点有哪些Service。引擎也支持动态服务发现的方式,使用了内置的DiscoveryMaster服务用于中心Service,DiscoveryClient用于向DiscoveryMaster获取整个origin网络中所有的结点以及服务信息。具体实现细节请查看这两部分的服务实现。具体使用方式,在以下cluster配置中加入以下内容:
|
||||
```
|
||||
{
|
||||
"DiscoveryNode": [{
|
||||
"NodeId": 1,
|
||||
"ListenAddr": "127.0.0.1:8803"
|
||||
}],
|
||||
"NodeList": [{
|
||||
"NodeId": 1,
|
||||
"ListenAddr": "127.0.0.1:8801",
|
||||
"NodeName": "Node_Test1",
|
||||
"Private": false,
|
||||
"remark": "//以_打头的,表示只在本机进程,不对整个子网开发",
|
||||
"ServiceList": ["_TestService1", "TestService9", "TestService10"],
|
||||
"DiscoveryService": ["TestService8"]
|
||||
}]
|
||||
}
|
||||
```
|
||||
新上有两新不同的字段分别为DiscoveryNode与DiscoveryService。其中:
|
||||
|
||||
第六章:HttpService使用
|
||||
DiscoveryNode中配置了结点Id为1的为服务发现Master,他的监听地址ListenAddr为127.0.0.1:8803
|
||||
DiscoveryService表示将筛选origin网络中的TestService8服务,注意如果DiscoveryService不配置,则筛选功能不生效。
|
||||
|
||||
|
||||
|
||||
|
||||
第七章:HttpService使用
|
||||
---------------
|
||||
HttpService是origin引擎中系统实现的http服务,http接口中常用的GET,POST以及url路由处理。
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ func (ds *DynamicDiscoveryMaster) OnStart(){
|
||||
ds.addNodeInfo(&nodeInfo)
|
||||
}
|
||||
|
||||
func (ds *DynamicDiscoveryMaster) OnRpcConnected(nodeId int){
|
||||
func (ds *DynamicDiscoveryMaster) OnNodeConnected(nodeId int){
|
||||
//向它发布所有服务列表信息
|
||||
var notifyDiscover rpc.SubscribeDiscoverNotify
|
||||
notifyDiscover.IsFull = true
|
||||
@@ -80,7 +80,7 @@ func (ds *DynamicDiscoveryMaster) OnRpcConnected(nodeId int){
|
||||
ds.GoNode(nodeId,DynamicDiscoveryClientNameRpcMethod,¬ifyDiscover)
|
||||
}
|
||||
|
||||
func (ds *DynamicDiscoveryMaster) OnRpcDisconnect(nodeId int){
|
||||
func (ds *DynamicDiscoveryMaster) OnNodeDisconnect(nodeId int){
|
||||
var notifyDiscover rpc.SubscribeDiscoverNotify
|
||||
notifyDiscover.DelNodeId = int32(nodeId)
|
||||
//删除结点
|
||||
@@ -195,7 +195,7 @@ func (dc *DynamicDiscoveryClient) isDiscoverNode(nodeId int) bool{
|
||||
return false
|
||||
}
|
||||
|
||||
func (dc *DynamicDiscoveryClient) OnRpcConnected(nodeId int) {
|
||||
func (dc *DynamicDiscoveryClient) OnNodeConnected(nodeId int) {
|
||||
if dc.isDiscoverNode(nodeId) == false {
|
||||
return
|
||||
}
|
||||
@@ -252,7 +252,7 @@ func (dc *DynamicDiscoveryClient) setNodeInfo(nodeInfo *rpc.NodeInfo){
|
||||
}
|
||||
|
||||
|
||||
func (dc *DynamicDiscoveryClient) OnRpcDisconnect(nodeId int){
|
||||
func (dc *DynamicDiscoveryClient) OnNodeDisconnect(nodeId int){
|
||||
}
|
||||
|
||||
func (dc *DynamicDiscoveryClient) InitDiscovery(localNodeId int,funDelNode FunDelNode,funSetNodeInfo FunSetNodeInfo) error{
|
||||
|
||||
@@ -65,8 +65,8 @@ type RpcHandler struct {
|
||||
|
||||
type TriggerRpcEvent func(bConnect bool,clientSeq uint32,nodeId int)
|
||||
type IRpcListener interface {
|
||||
OnRpcConnected(nodeId int)
|
||||
OnRpcDisconnect(nodeId int)
|
||||
OnNodeConnected(nodeId int)
|
||||
OnNodeDisconnect(nodeId int)
|
||||
}
|
||||
|
||||
type IRpcHandler interface {
|
||||
|
||||
@@ -231,9 +231,9 @@ func (s *Service) OnStart(){
|
||||
func (s *Service) OnRpcEvent(ev event.IEvent){
|
||||
event := ev.(*RpcEventData)
|
||||
if event.IsConnect {
|
||||
s.rpcEventLister.OnRpcConnected(event.NodeId)
|
||||
s.rpcEventLister.OnNodeConnected(event.NodeId)
|
||||
}else{
|
||||
s.rpcEventLister.OnRpcDisconnect(event.NodeId)
|
||||
s.rpcEventLister.OnNodeDisconnect(event.NodeId)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user