mirror of
				https://github.com/zhufuyi/sponge.git
				synced 2025-10-31 12:36:42 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package initial
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"strconv"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/zhufuyi/sponge/internal/config"
 | |
| 	"github.com/zhufuyi/sponge/internal/server"
 | |
| 
 | |
| 	"github.com/zhufuyi/sponge/pkg/app"
 | |
| 	"github.com/zhufuyi/sponge/pkg/servicerd/registry"
 | |
| 	"github.com/zhufuyi/sponge/pkg/servicerd/registry/consul"
 | |
| 	"github.com/zhufuyi/sponge/pkg/servicerd/registry/etcd"
 | |
| 	"github.com/zhufuyi/sponge/pkg/servicerd/registry/nacos"
 | |
| )
 | |
| 
 | |
| // RegisterServers 注册app服务
 | |
| func RegisterServers() []app.IServer {
 | |
| 	var cfg = config.Get()
 | |
| 	var servers []app.IServer
 | |
| 
 | |
| 	// 创建http服务
 | |
| 	httpAddr := ":" + strconv.Itoa(cfg.HTTP.Port)
 | |
| 	httpRegistry, httpInstance := registryService("http", cfg.App.Host, cfg.HTTP.Port)
 | |
| 	httpServer := server.NewHTTPServer(httpAddr,
 | |
| 		server.WithHTTPReadTimeout(time.Second*time.Duration(cfg.HTTP.ReadTimeout)),
 | |
| 		server.WithHTTPWriteTimeout(time.Second*time.Duration(cfg.HTTP.WriteTimeout)),
 | |
| 		server.WithHTTPRegistry(httpRegistry, httpInstance),
 | |
| 		server.WithHTTPIsProd(cfg.App.Env == "prod"),
 | |
| 	)
 | |
| 	servers = append(servers, httpServer)
 | |
| 
 | |
| 	return servers
 | |
| }
 | |
| 
 | |
| func registryService(scheme string, host string, port int) (registry.Registry, *registry.ServiceInstance) {
 | |
| 	instanceEndpoint := fmt.Sprintf("%s://%s:%d", scheme, host, port)
 | |
| 	cfg := config.Get()
 | |
| 
 | |
| 	switch cfg.App.RegistryDiscoveryType {
 | |
| 	// 使用consul注册服务
 | |
| 	case "consul":
 | |
| 		iRegistry, instance, err := consul.NewRegistry(
 | |
| 			cfg.Consul.Addr,
 | |
| 			cfg.App.Name+"_"+scheme+"_"+host,
 | |
| 			cfg.App.Name,
 | |
| 			[]string{instanceEndpoint},
 | |
| 		)
 | |
| 		if err != nil {
 | |
| 			panic(err)
 | |
| 		}
 | |
| 		return iRegistry, instance
 | |
| 	// 使用etcd注册服务
 | |
| 	case "etcd":
 | |
| 		iRegistry, instance, err := etcd.NewRegistry(
 | |
| 			cfg.Etcd.Addrs,
 | |
| 			cfg.App.Name+"_"+scheme+"_"+host,
 | |
| 			cfg.App.Name,
 | |
| 			[]string{instanceEndpoint},
 | |
| 		)
 | |
| 		if err != nil {
 | |
| 			panic(err)
 | |
| 		}
 | |
| 		return iRegistry, instance
 | |
| 	// 使用nacos注册服务
 | |
| 	case "nacos":
 | |
| 		iRegistry, instance, err := nacos.NewRegistry(
 | |
| 			cfg.NacosRd.IPAddr,
 | |
| 			cfg.NacosRd.Port,
 | |
| 			cfg.NacosRd.NamespaceID,
 | |
| 			cfg.App.Name+"_"+scheme+"_"+host,
 | |
| 			cfg.App.Name,
 | |
| 			[]string{instanceEndpoint},
 | |
| 		)
 | |
| 		if err != nil {
 | |
| 			panic(err)
 | |
| 		}
 | |
| 		return iRegistry, instance
 | |
| 	}
 | |
| 
 | |
| 	return nil, nil
 | |
| }
 | 
