优化配置结构

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支持的服务
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

View File

@@ -3,6 +3,7 @@ package cluster
import (
"encoding/json"
"fmt"
"github.com/duanhf2012/origin/log"
"io/ioutil"
"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{}{}
d, err := ioutil.ReadFile(filepath)
if err != nil {
return nil, err
return nil,nil, err
}
err = json.Unmarshal(d, &c)
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 {
@@ -71,10 +91,11 @@ func (slf *Cluster) ReadLocalSubNetServiceConfig(subnet string) error {
for _,f := range fileInfoList{
if f.IsDir() == true && f.Name()==subnet{ //同一子网
filePath := strings.TrimRight(strings.TrimRight(clusterCfgPath,"/"),"\\")+"/"+f.Name()+"/"+"service.json"
localNodeServiceCfg,err:=slf.ReadServiceConfig(filePath)
localServiceCfg,localNodeServiceCfg,err:=slf.ReadServiceConfig(filePath)
if err != nil {
return fmt.Errorf("Read file %s is fail :%+v",filePath,err)
}
slf.localServiceCfg = localServiceCfg
slf.localNodeServiceCfg =localNodeServiceCfg
}
}
@@ -186,11 +207,25 @@ func (slf *Cluster) GetNodeIdByService(servicename string) []int{
return nodelist
}
func (slf *Cluster) GetServiceCfg(servicename string) interface{}{
v,ok := slf.localNodeServiceCfg[servicename]
if ok == false{
func (slf *Cluster) getServiceCfg(servicename string) interface{}{
v,ok := slf.localServiceCfg[servicename]
if ok == false {
return nil
}
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.RegisterDisConnected(slf.OnWSDisconnected)
slf.processor2.RegisterConnected(slf.OnWSConnected)
wsService.SetProcessor(slf.processor2,slf.GetEventHandler())

View File

@@ -1,29 +1,69 @@
{
"HttpService":{
"ListenAddr":"0.0.0.0:9402",
"ReadTimeout":10000,
"WriteTimeout":10000,
"ProcessTimeout":10000,
"CAFile":[
{
"Certfile":"",
"Keyfile":""
}
]
"Service":{
"HttpService":{
"ListenAddr":"0.0.0.0:9402",
"ReadTimeout":10000,
"WriteTimeout":10000,
"ProcessTimeout":10000,
"CAFile":[
{
"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":{
"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
}
"NodeService":[
{
"NodeId":1,
"TcpService":{
"ListenAddr":"0.0.0.0:9830",
"MaxConnNum":3000,
"PendingWriteNum":10000,
"LittleEndian":false,
"MinMsgLen":4,
"MaxMsgLen":65535
},
"WSService":{
"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
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)
}
}