优化配置结构

This commit is contained in:
duanhf2012
2020-04-21 17:23:59 +08:00
parent a189c2c80b
commit e543e302ef
5 changed files with 113 additions and 37 deletions

View File

@@ -41,7 +41,8 @@ type Cluster struct {
localNodeMapService map[string]interface{} //本Node支持的服务 localNodeMapService map[string]interface{} //本Node支持的服务
localNodeInfo NodeInfo localNodeInfo NodeInfo
localNodeServiceCfg map[string]interface{} //map[servicename]数据 localServiceCfg map[string]interface{} //map[servicename]数据
localNodeServiceCfg map[int]map[string]interface{} //map[nodeid]map[servicename]数据
mapRpc map[int] NodeRpcInfo//nodeid mapRpc map[int] NodeRpcInfo//nodeid

View File

@@ -3,6 +3,7 @@ package cluster
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/duanhf2012/origin/log"
"io/ioutil" "io/ioutil"
"strings" "strings"
) )
@@ -22,20 +23,39 @@ func (slf *Cluster) ReadClusterConfig(filepath string) (*SubNet,error) {
} }
func (slf *Cluster) ReadServiceConfig(filepath string) (map[string]interface{},error) { func (slf *Cluster) ReadServiceConfig(filepath string) (map[string]interface{},map[int]map[string]interface{},error) {
c := map[string]interface{}{} c := map[string]interface{}{}
d, err := ioutil.ReadFile(filepath) d, err := ioutil.ReadFile(filepath)
if err != nil { if err != nil {
return nil, err return nil,nil, err
} }
err = json.Unmarshal(d, &c) err = json.Unmarshal(d, &c)
if err != nil { if err != nil {
return nil, err return nil,nil, err
} }
return c,nil serviceConfig := map[string]interface{}{}
serviceCfg,ok := c["Service"]
if ok == true {
serviceConfig = serviceCfg.(map[string]interface{})
}
mapNodeService := map[int]map[string]interface{}{}
nodeServiceCfg,ok := c["NodeService"]
if ok == true {
nodeServiceList := nodeServiceCfg.([]interface{})
for _,v := range nodeServiceList{
serviceCfg :=v.(map[string]interface{})
nodeid,ok := serviceCfg["NodeId"]
if ok == false {
log.Fatal("nodeservice list not find nodeid field: %+v",nodeServiceList)
}
mapNodeService[int(nodeid.(float64))] = serviceCfg
}
}
return serviceConfig,mapNodeService,nil
} }
func (slf *Cluster) ReadAllSubNetConfig() error { func (slf *Cluster) ReadAllSubNetConfig() error {
@@ -71,10 +91,11 @@ func (slf *Cluster) ReadLocalSubNetServiceConfig(subnet string) error {
for _,f := range fileInfoList{ for _,f := range fileInfoList{
if f.IsDir() == true && f.Name()==subnet{ //同一子网 if f.IsDir() == true && f.Name()==subnet{ //同一子网
filePath := strings.TrimRight(strings.TrimRight(clusterCfgPath,"/"),"\\")+"/"+f.Name()+"/"+"service.json" filePath := strings.TrimRight(strings.TrimRight(clusterCfgPath,"/"),"\\")+"/"+f.Name()+"/"+"service.json"
localNodeServiceCfg,err:=slf.ReadServiceConfig(filePath) localServiceCfg,localNodeServiceCfg,err:=slf.ReadServiceConfig(filePath)
if err != nil { if err != nil {
return fmt.Errorf("Read file %s is fail :%+v",filePath,err) return fmt.Errorf("Read file %s is fail :%+v",filePath,err)
} }
slf.localServiceCfg = localServiceCfg
slf.localNodeServiceCfg =localNodeServiceCfg slf.localNodeServiceCfg =localNodeServiceCfg
} }
} }
@@ -186,11 +207,25 @@ func (slf *Cluster) GetNodeIdByService(servicename string) []int{
return nodelist return nodelist
} }
func (slf *Cluster) GetServiceCfg(servicename string) interface{}{ func (slf *Cluster) getServiceCfg(servicename string) interface{}{
v,ok := slf.localNodeServiceCfg[servicename] v,ok := slf.localServiceCfg[servicename]
if ok == false{ if ok == false {
return nil return nil
} }
return v return v
} }
func (slf *Cluster) GetServiceCfg(nodeid int,servicename string) interface{}{
nodeService,ok := slf.localNodeServiceCfg[nodeid]
if ok == false {
return slf.getServiceCfg(servicename)
}
v,ok := nodeService[servicename]
if ok == false{
return slf.getServiceCfg(servicename)
}
return v
}

View File

@@ -30,7 +30,7 @@ func (slf *GateService) OnInit() error{
slf.processor2 = &processor.PBProcessor{} slf.processor2 = &processor.PBProcessor{}
slf.processor2.RegisterDisConnected(slf.OnWSDisconnected) slf.processor2.RegisterDisConnected(slf.OnWSDisconnected)
slf.processor2.RegisterConnected(slf.OnWSConnected) slf.processor2.RegisterConnected(slf.OnWSConnected)
wsService.SetProcessor(slf.processor2,slf.GetEventHandler()) wsService.SetProcessor(slf.processor2,slf.GetEventHandler())

View File

@@ -1,29 +1,69 @@
{ {
"HttpService":{ "Service":{
"ListenAddr":"0.0.0.0:9402", "HttpService":{
"ReadTimeout":10000, "ListenAddr":"0.0.0.0:9402",
"WriteTimeout":10000, "ReadTimeout":10000,
"ProcessTimeout":10000, "WriteTimeout":10000,
"CAFile":[ "ProcessTimeout":10000,
{ "CAFile":[
"Certfile":"", {
"Keyfile":"" "Certfile":"",
} "Keyfile":""
] }
]
},
"TcpService":{
"ListenAddr":"0.0.0.0:9030",
"MaxConnNum":3000,
"PendingWriteNum":10000,
"LittleEndian":false,
"MinMsgLen":4,
"MaxMsgLen":65535
},
"WSService":{
"ListenAddr":"0.0.0.0:9031",
"MaxConnNum":3000,
"PendingWriteNum":10000,
"MaxMsgLen":65535
}
}, },
"TcpService":{ "NodeService":[
"ListenAddr":"0.0.0.0:9030", {
"MaxConnNum":3000, "NodeId":1,
"PendingWriteNum":10000, "TcpService":{
"LittleEndian":false, "ListenAddr":"0.0.0.0:9830",
"MinMsgLen":4, "MaxConnNum":3000,
"MaxMsgLen":65535 "PendingWriteNum":10000,
}, "LittleEndian":false,
"WSService":{ "MinMsgLen":4,
"ListenAddr":"0.0.0.0:9031", "MaxMsgLen":65535
"MaxConnNum":3000, },
"PendingWriteNum":10000, "WSService":{
"MaxMsgLen":65535 "ListenAddr":"0.0.0.0:9031",
} "MaxConnNum":3000,
"PendingWriteNum":10000,
"MaxMsgLen":65535
}
},
{
"NodeId":2,
"TcpService":{
"ListenAddr":"0.0.0.0:9030",
"MaxConnNum":3000,
"PendingWriteNum":10000,
"LittleEndian":false,
"MinMsgLen":4,
"MaxMsgLen":65535
},
"WSService":{
"ListenAddr":"0.0.0.0:9031",
"MaxConnNum":3000,
"PendingWriteNum":10000,
"MaxMsgLen":65535
}
}
]
} }

View File

@@ -85,7 +85,7 @@ func initNode(id int){
//4.init service //4.init service
for _,s := range preSetupService { for _,s := range preSetupService {
pServiceCfg := cluster.GetCluster().GetServiceCfg(s.GetName()) pServiceCfg := cluster.GetCluster().GetServiceCfg(nodeId,s.GetName())
s.Init(s,cluster.GetRpcClient,cluster.GetRpcServer,pServiceCfg) s.Init(s,cluster.GetRpcClient,cluster.GetRpcServer,pServiceCfg)
} }
} }