Skip to content

Commit e5202e5

Browse files
committed
refactor: change the service registration and discovery, configuration center features to manual addition
1 parent 091ad8b commit e5202e5

File tree

27 files changed

+764
-892
lines changed

27 files changed

+764
-892
lines changed
Lines changed: 73 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,97 +1,93 @@
11
package initial
22

33
import (
4-
"fmt"
54
"strconv"
65

76
"github.com/zhufuyi/sponge/pkg/app"
8-
"github.com/zhufuyi/sponge/pkg/logger"
9-
"github.com/zhufuyi/sponge/pkg/servicerd/registry"
10-
"github.com/zhufuyi/sponge/pkg/servicerd/registry/consul"
11-
"github.com/zhufuyi/sponge/pkg/servicerd/registry/etcd"
12-
"github.com/zhufuyi/sponge/pkg/servicerd/registry/nacos"
137

148
"github.com/zhufuyi/sponge/internal/config"
159
"github.com/zhufuyi/sponge/internal/server"
1610
)
1711

18-
// CreateServices create grpc or http service
12+
// CreateServices create grpc service
1913
func CreateServices() []app.IServer {
2014
var cfg = config.Get()
2115
var servers []app.IServer
16+
var grpcAddr = ":" + strconv.Itoa(cfg.Grpc.Port)
17+
18+
// case 1, create a grpc service without registry
19+
grpcServer := server.NewGRPCServer(grpcAddr)
20+
21+
// case 2, create a grpc service and register it with consul or etcd or nacos
22+
//grpcRegistry, grpcInstance := registerService("grpc", cfg.App.Host, cfg.Grpc.Port)
23+
//grpcServer := server.NewGRPCServer(grpcAddr,
24+
// server.WithGrpcRegistry(grpcRegistry, grpcInstance),
25+
//)
2226

23-
// creating grpc service
24-
grpcAddr := ":" + strconv.Itoa(cfg.Grpc.Port)
25-
grpcRegistry, grpcInstance := registerService("grpc", cfg.App.Host, cfg.Grpc.Port)
26-
grpcServer := server.NewGRPCServer(grpcAddr,
27-
server.WithGrpcRegistry(grpcRegistry, grpcInstance),
28-
)
2927
servers = append(servers, grpcServer)
3028

3129
return servers
3230
}
3331

34-
func registerService(scheme string, host string, port int) (registry.Registry, *registry.ServiceInstance) {
35-
var (
36-
instanceEndpoint = fmt.Sprintf("%s://%s:%d", scheme, host, port)
37-
cfg = config.Get()
38-
39-
iRegistry registry.Registry
40-
instance *registry.ServiceInstance
41-
err error
42-
43-
id = cfg.App.Name + "_" + scheme + "_" + host
44-
logField logger.Field
45-
)
46-
47-
switch cfg.App.RegistryDiscoveryType {
48-
// registering service with consul
49-
case "consul":
50-
iRegistry, instance, err = consul.NewRegistry(
51-
cfg.Consul.Addr,
52-
id,
53-
cfg.App.Name,
54-
[]string{instanceEndpoint},
55-
)
56-
if err != nil {
57-
panic(err)
58-
}
59-
logField = logger.Any("consulAddress", cfg.Consul.Addr)
60-
61-
// registering service with etcd
62-
case "etcd":
63-
iRegistry, instance, err = etcd.NewRegistry(
64-
cfg.Etcd.Addrs,
65-
id,
66-
cfg.App.Name,
67-
[]string{instanceEndpoint},
68-
)
69-
if err != nil {
70-
panic(err)
71-
}
72-
logField = logger.Any("etcdAddress", cfg.Etcd.Addrs)
73-
74-
// registering service with nacos
75-
case "nacos":
76-
iRegistry, instance, err = nacos.NewRegistry(
77-
cfg.NacosRd.IPAddr,
78-
cfg.NacosRd.Port,
79-
cfg.NacosRd.NamespaceID,
80-
id,
81-
cfg.App.Name,
82-
[]string{instanceEndpoint},
83-
)
84-
if err != nil {
85-
panic(err)
86-
}
87-
logField = logger.String("nacosAddress", fmt.Sprintf("%v:%d", cfg.NacosRd.IPAddr, cfg.NacosRd.Port))
88-
}
89-
90-
if instance != nil {
91-
msg := fmt.Sprintf("register service address to %s", cfg.App.RegistryDiscoveryType)
92-
logger.Info(msg, logField, logger.String("id", id), logger.String("name", cfg.App.Name), logger.String("endpoint", instanceEndpoint))
93-
return iRegistry, instance
94-
}
95-
96-
return nil, nil
97-
}
32+
// register service with consul or etcd or nacos, select one of them to use
33+
//func registerService(scheme string, host string, port int) (registry.Registry, *registry.ServiceInstance) {
34+
// var (
35+
// instanceEndpoint = fmt.Sprintf("%s://%s:%d", scheme, host, port)
36+
// cfg = config.Get()
37+
//
38+
// iRegistry registry.Registry
39+
// instance *registry.ServiceInstance
40+
// err error
41+
//
42+
// id = cfg.App.Name + "_" + scheme + "_" + host + "_" + strconv.Itoa(port)
43+
// logField logger.Field
44+
// )
45+
//
46+
// switch cfg.App.RegistryDiscoveryType {
47+
// case "consul":
48+
// iRegistry, instance, err = consul.NewRegistry(
49+
// cfg.Consul.Addr,
50+
// id,
51+
// cfg.App.Name,
52+
// []string{instanceEndpoint},
53+
// )
54+
// if err != nil {
55+
// panic(err)
56+
// }
57+
// logField = logger.Any("consulAddress", cfg.Consul.Addr)
58+
//
59+
// case "etcd":
60+
// iRegistry, instance, err = etcd.NewRegistry(
61+
// cfg.Etcd.Addrs,
62+
// id,
63+
// cfg.App.Name,
64+
// []string{instanceEndpoint},
65+
// )
66+
// if err != nil {
67+
// panic(err)
68+
// }
69+
// logField = logger.Any("etcdAddress", cfg.Etcd.Addrs)
70+
//
71+
// case "nacos":
72+
// iRegistry, instance, err = nacos.NewRegistry(
73+
// cfg.NacosRd.IPAddr,
74+
// cfg.NacosRd.Port,
75+
// cfg.NacosRd.NamespaceID,
76+
// id,
77+
// cfg.App.Name,
78+
// []string{instanceEndpoint},
79+
// )
80+
// if err != nil {
81+
// panic(err)
82+
// }
83+
// logField = logger.String("nacosAddress", fmt.Sprintf("%v:%d", cfg.NacosRd.IPAddr, cfg.NacosRd.Port))
84+
// }
85+
//
86+
// if instance != nil {
87+
// msg := fmt.Sprintf("register service address to %s", cfg.App.RegistryDiscoveryType)
88+
// logger.Info(msg, logger.String("name", cfg.App.Name), logger.String("endpoint", instanceEndpoint), logger.String("id", id), logField)
89+
// return iRegistry, instance
90+
// }
91+
//
92+
// return nil, nil
93+
//}

cmd/serverNameExample_grpcExample/initial/initApp.go

Lines changed: 14 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,9 @@ package initial
55

66
import (
77
"flag"
8-
"fmt"
98
"strconv"
109

11-
"github.com/jinzhu/copier"
12-
13-
"github.com/zhufuyi/sponge/pkg/conf"
1410
"github.com/zhufuyi/sponge/pkg/logger"
15-
"github.com/zhufuyi/sponge/pkg/nacoscli"
1611
"github.com/zhufuyi/sponge/pkg/stat"
1712
"github.com/zhufuyi/sponge/pkg/tracer"
1813

@@ -22,9 +17,8 @@ import (
2217
)
2318

2419
var (
25-
version string
26-
configFile string
27-
enableConfigCenter bool
20+
version string
21+
configFile string
2822
)
2923

3024
// InitApp initial app configuration
@@ -85,48 +79,23 @@ func InitApp() {
8579

8680
func initConfig() {
8781
flag.StringVar(&version, "version", "", "service Version Number")
88-
flag.BoolVar(&enableConfigCenter, "enable-cc", false, "whether to get from the configuration center, "+
89-
"if true, the '-c' parameter indicates the configuration center")
9082
flag.StringVar(&configFile, "c", "", "configuration file")
9183
flag.Parse()
9284

93-
if enableConfigCenter {
94-
// get the configuration from the configuration center (first get the nacos configuration,
95-
// then read the service configuration according to the nacos configuration center)
96-
if configFile == "" {
97-
configFile = configs.Path("serverNameExample_cc.yml")
98-
}
99-
nacosConfig, err := config.NewCenter(configFile)
100-
if err != nil {
101-
panic(err)
102-
}
103-
appConfig := &config.Config{}
104-
params := &nacoscli.Params{}
105-
_ = copier.Copy(params, &nacosConfig.Nacos)
106-
format, data, err := nacoscli.GetConfig(params)
107-
if err != nil {
108-
panic(fmt.Sprintf("connect to configuration center err, %v", err))
109-
}
110-
err = conf.ParseConfigData(data, format, appConfig)
111-
if err != nil {
112-
panic(fmt.Sprintf("parse configuration data err, %v", err))
113-
}
114-
if appConfig.App.Name == "" {
115-
panic("read the config from center error, config data is empty")
116-
}
117-
config.Set(appConfig)
118-
} else {
119-
// get configuration from local configuration file
120-
if configFile == "" {
121-
configFile = configs.Path("serverNameExample.yml")
122-
}
123-
err := config.Init(configFile)
124-
if err != nil {
125-
panic("init config error: " + err.Error())
126-
}
127-
}
85+
getConfigFromLocal()
12886

12987
if version != "" {
13088
config.Get().App.Version = version
13189
}
13290
}
91+
92+
// get configuration from local configuration file
93+
func getConfigFromLocal() {
94+
if configFile == "" {
95+
configFile = configs.Path("serverNameExample.yml")
96+
}
97+
err := config.Init(configFile)
98+
if err != nil {
99+
panic("init config error: " + err.Error())
100+
}
101+
}

0 commit comments

Comments
 (0)