diff --git a/bin/conf/gate.yaml b/bin/conf/gate.yaml index e69de29bb..d4252d85d 100644 --- a/bin/conf/gate.yaml +++ b/bin/conf/gate.yaml @@ -0,0 +1,22 @@ +id : "gate_1" #服务的唯一id 在集群服务下不能重复即可 建议配置文件名与服务id一致 +ip : "172.0.0.1" #运行主机Ip 集群通信中 按ip节点通行的查询字段 此字段可以注释掉 注释后取当前运行主机公网ip地址 +tag : "demo" #服务集群标签 相同标签 且sys.registry 和 sys.rpc 配置一致 即可互相发现和通信 +type : "console" #服务类型 相同服务类型相同 如 多个login 服务 相同服务多开 服务类型一致 +category : "BusinessService" #服务类别 例如 网关服务器 或者 游戏服务器 以及普通业务服务器 +version : 1.0 #服务版本 多服务器相同的服务类型 高版本比低版本拥有更高的访问优先级 使用场景 热更新机制 + +#系统配置 +sys: + log: + FileName: "./log/gate_1.log" #日志文件存放地址 + Loglevel: 0 #日志文件输出级别 + LogMaxSize: 128 #日志文件最大Size + LogMaxAge: 7 #日志文件最多保留天数 + cache: + Redis_Addr: ["10.0.0.9:9001","10.0.0.9:9002","10.0.0.9:9003","10.0.1.45:9004","10.0.1.45:9005","10.0.1.45:9006"] + Redis_Password: "" + +#模块配置 +modules: + SM_GateModule: + WSAddr: ":7891" diff --git a/bin/log/gate_1.log b/bin/log/gate_1.log new file mode 100644 index 000000000..cca0fef39 --- /dev/null +++ b/bin/log/gate_1.log @@ -0,0 +1,7 @@ +2022/05/30 10:33:39.990 info single/service.go:44 init sys.log success! +2022/05/30 10:33:40.007 info single/service.go:49 init sys.event success! +2022/05/30 10:33:42.708 info services/servicebase.go:20 init sys.cache success! +2022/05/30 10:33:42.708 info cbase/servicebase.go:58 服务[gate_1] 初始化完成! +2022/05/30 10:33:42.708 info cbase/servicebase.go:80 服务[gate_1:1.0.0.0] 启动完成! +2022/05/30 10:33:42.708 debug gate/module.go:32 Module.Gate Init +2022/05/30 10:33:42.708 debug gate/module.go:38 Module.Gate Start diff --git a/go.mod b/go.mod index 32b4cda6d..7449c861c 100644 --- a/go.mod +++ b/go.mod @@ -11,13 +11,16 @@ require ( github.com/armon/go-metrics v0.3.6 // indirect github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394 // indirect github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23 // indirect + github.com/cespare/xxhash/v2 v2.1.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/eapache/go-resiliency v1.2.0 // indirect github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect github.com/eapache/queue v1.1.0 // indirect github.com/fatih/color v1.9.0 // indirect github.com/go-errors/errors v1.0.1 // indirect github.com/go-ole/go-ole v1.2.1 // indirect + github.com/go-redis/redis/v8 v8.8.0 // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/hashicorp/consul/api v1.8.1 // indirect @@ -58,6 +61,9 @@ require ( github.com/rs/xid v1.3.0 // indirect github.com/shirou/gopsutil v3.20.12+incompatible // indirect github.com/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3 // indirect + go.opentelemetry.io/otel v0.19.0 // indirect + go.opentelemetry.io/otel/metric v0.19.0 // indirect + go.opentelemetry.io/otel/trace v0.19.0 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect go.uber.org/zap v1.21.0 // indirect diff --git a/go.sum b/go.sum index dd24b5ea0..02cc8b030 100644 --- a/go.sum +++ b/go.sum @@ -99,6 +99,7 @@ github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b/go.mod h1:ac9efd0D github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23 h1:D21IyuvjDCshj1/qq+pCNd3VZOAEI9jy6Bi131YlXgI= github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= @@ -122,6 +123,7 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= github.com/denisenkom/go-mssqldb v0.9.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dimfeld/httptreemux v5.0.1+incompatible/go.mod h1:rbUlSV+CCpv/SuqUTP/8Bk2O3LyUV436/yaRGkhP6Z0= github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4= @@ -151,6 +153,7 @@ github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHqu github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -174,6 +177,7 @@ github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvSc github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/validator/v10 v10.10.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= +github.com/go-redis/redis/v8 v8.8.0 h1:fDZP58UN/1RD3DjtTXP/fFZ04TFohSYhjZDkcDe2dnw= github.com/go-redis/redis/v8 v8.8.0/go.mod h1:F7resOH5Kdug49Otu24RjHWwgK7u9AmtqWMnCV1iP5Y= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -501,13 +505,16 @@ github.com/nats-io/nkeys v0.1.4 h1:aEsHIssIk6ETN5m2/MD8Y4B2X7FfXrBAUdkyRvbVYzA= github.com/nats-io/nkeys v0.1.4/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.15.0 h1:1V1NfVQR87RtWAgp1lv9JZJ5Jap+XFGKPi00andXGi4= github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.5 h1:7n6FEkpFmfCoo2t+YYqXH0evK+a9ICQz0xcAy9dYcaQ= github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -636,9 +643,13 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opentelemetry.io/otel v0.19.0 h1:Lenfy7QHRXPZVsw/12CWpxX6d/JkrX8wrx2vO8G80Ng= go.opentelemetry.io/otel v0.19.0/go.mod h1:j9bF567N9EfomkSidSfmMwIwIBuP37AMAIzVW85OxSg= +go.opentelemetry.io/otel/metric v0.19.0 h1:dtZ1Ju44gkJkYvo+3qGqVXmf88tc+a42edOywypengg= go.opentelemetry.io/otel/metric v0.19.0/go.mod h1:8f9fglJPRnXuskQmKpnad31lcLJ2VmNNqIsx/uIwBSc= +go.opentelemetry.io/otel/oteltest v0.19.0 h1:YVfA0ByROYqTwOxqHVZYZExzEpfZor+MU1rU+ip2v9Q= go.opentelemetry.io/otel/oteltest v0.19.0/go.mod h1:tI4yxwh8U21v7JD6R3BcA/2+RBoTKFexE/PJ/nSO7IA= +go.opentelemetry.io/otel/trace v0.19.0 h1:1ucYlenXIDA1OlHVLDZKX0ObXV5RLaq06DtUKz5e5zc= go.opentelemetry.io/otel/trace v0.19.0/go.mod h1:4IXiNextNOpPnRlI4ryK69mn5iC84bjBWZQA5DXz/qg= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= @@ -872,6 +883,7 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1069,6 +1081,7 @@ gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/square/go-jose.v2 v2.4.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/modules/gate/module.go b/modules/gate/module.go index 3e323c4bb..eda1848b4 100644 --- a/modules/gate/module.go +++ b/modules/gate/module.go @@ -3,9 +3,9 @@ package gate import ( "go_dreamfactory/comm" - "github.com/liwei1dao/lego/base" "github.com/liwei1dao/lego/core" "github.com/liwei1dao/lego/core/cbase" + "github.com/liwei1dao/lego/sys/log" ) func NewModule() core.IModule { @@ -16,7 +16,6 @@ func NewModule() core.IModule { type Gate struct { cbase.ModuleBase options *Options - service base.IClusterService } func (this *Gate) GetType() core.M_Modules { @@ -29,7 +28,13 @@ func (this *Gate) NewOptions() (options core.IModuleOptions) { func (this *Gate) Init(service core.IService, module core.IModule, options core.IModuleOptions) (err error) { err = this.ModuleBase.Init(service, module, options) - this.service = service.(base.IClusterService) this.options = options.(*Options) + log.Debugf("Module.Gate Init") + return +} + +func (this *Gate) Start() (err error) { + err = this.ModuleBase.Start() + log.Debugf("Module.Gate Start") return } diff --git a/services/gate/main.go b/services/gate/main.go index 21af4d0dc..d727e96ed 100644 --- a/services/gate/main.go +++ b/services/gate/main.go @@ -6,7 +6,7 @@ import ( "go_dreamfactory/services" "github.com/liwei1dao/lego" - "github.com/liwei1dao/lego/base/cluster" + "github.com/liwei1dao/lego/base/single" "github.com/liwei1dao/lego/core" ) @@ -17,8 +17,8 @@ var ( func main() { flag.Parse() s := NewService( - cluster.SetConfPath(*conf), - cluster.SetVersion("1.0.0.0"), + single.SetConfPath(*conf), + single.SetVersion("1.0.0.0"), ) s.OnInstallComp( //装备组件 ) @@ -28,7 +28,7 @@ func main() { } -func NewService(ops ...cluster.Option) core.IService { +func NewService(ops ...single.Option) core.IService { s := new(Service) s.Configure(ops...) return s diff --git a/services/servicebase.go b/services/servicebase.go index c12e007ac..64501f36e 100644 --- a/services/servicebase.go +++ b/services/servicebase.go @@ -1,13 +1,22 @@ package services import ( - "github.com/liwei1dao/lego/base/cluster" + "fmt" + "go_dreamfactory/sys/cache" + + "github.com/liwei1dao/lego/base/single" + "github.com/liwei1dao/lego/sys/log" ) type ServiceBase struct { - cluster.ClusterService + single.SingleService } func (this *ServiceBase) InitSys() { - this.ClusterService.InitSys() + this.SingleService.InitSys() + if err := cache.OnInit(this.GetSettings().Sys["cache"]); err != nil { + panic(fmt.Sprintf("init sys.cache err: %s", err.Error())) + } else { + log.Infof("init sys.cache success!") + } } diff --git a/services/worker/main.go b/services/worker/main.go index 5ec2f5064..27222cc80 100644 --- a/services/worker/main.go +++ b/services/worker/main.go @@ -5,7 +5,7 @@ import ( "go_dreamfactory/services" "github.com/liwei1dao/lego" - "github.com/liwei1dao/lego/base/cluster" + "github.com/liwei1dao/lego/base/single" "github.com/liwei1dao/lego/core" ) @@ -16,8 +16,8 @@ var ( func main() { flag.Parse() s := NewService( - cluster.SetConfPath(*conf), - cluster.SetVersion("1.0.0.0"), + single.SetConfPath(*conf), + single.SetVersion("1.0.0.0"), ) s.OnInstallComp( //装备组件 ) @@ -25,7 +25,7 @@ func main() { } -func NewService(ops ...cluster.Option) core.IService { +func NewService(ops ...single.Option) core.IService { s := new(Service) s.Configure(ops...) return s diff --git a/sys/cache/cache.go b/sys/cache/cache.go new file mode 100644 index 000000000..170cedcf3 --- /dev/null +++ b/sys/cache/cache.go @@ -0,0 +1,22 @@ +package cache + +import "github.com/liwei1dao/lego/sys/redis" + +func newSys(options Options) (sys *Cache, err error) { + sys = &Cache{options: options} + err = sys.init() + return +} + +type Cache struct { + options Options + redis redis.ISys +} + +func (this *Cache) init() (err error) { + this.redis, err = redis.NewSys( + redis.SetRedisType(redis.Redis_Cluster), + redis.Redis_Cluster_Addr(this.options.Redis_Addr), + redis.SetRedis_Cluster_Password(this.options.Redis_Password)) + return +} diff --git a/sys/cache/core.go b/sys/cache/core.go new file mode 100644 index 000000000..f514cab92 --- /dev/null +++ b/sys/cache/core.go @@ -0,0 +1,26 @@ +package cache + +type ( + ISys interface { + } +) + +var defsys ISys + +func OnInit(config map[string]interface{}, option ...Option) (err error) { + var options Options + if options, err = newOptions(config, option...); err != nil { + return + } + defsys, err = newSys(options) + return +} + +func NewSys(option ...Option) (sys ISys, err error) { + var options Options + if options, err = newOptionsByOption(option...); err != nil { + return + } + defsys, err = newSys(options) + return +} diff --git a/sys/cache/options.go b/sys/cache/options.go new file mode 100644 index 000000000..6e6a800f5 --- /dev/null +++ b/sys/cache/options.go @@ -0,0 +1,38 @@ +package cache + +import ( + "errors" + + "github.com/liwei1dao/lego/utils/mapstructure" +) + +type Option func(*Options) +type Options struct { + Redis_Addr []string + Redis_Password string +} + +func newOptions(config map[string]interface{}, opts ...Option) (Options, error) { + options := Options{} + if config != nil { + mapstructure.Decode(config, &options) + } + for _, o := range opts { + o(&options) + } + if options.Redis_Addr == nil || len(options.Redis_Addr) == 0 { + return options, errors.New("Redis_Addr is null") + } + return options, nil +} + +func newOptionsByOption(opts ...Option) (Options, error) { + options := Options{} + for _, o := range opts { + o(&options) + } + if options.Redis_Addr == nil || len(options.Redis_Addr) == 0 { + return options, errors.New("Redis_Addr is null") + } + return options, nil +} diff --git a/sys/redis/core.go b/sys/redis/core.go deleted file mode 100644 index 65a229e12..000000000 --- a/sys/redis/core.go +++ /dev/null @@ -1 +0,0 @@ -package redis