|
3 vuotta sitten | |
---|---|---|
.idea | 3 vuotta sitten | |
common | 3 vuotta sitten | |
core | 3 vuotta sitten | |
etc | 3 vuotta sitten | |
.gitignore | 3 vuotta sitten | |
README.md | 3 vuotta sitten | |
gaway.sql | 3 vuotta sitten | |
go.mod | 3 vuotta sitten | |
go.sum | 3 vuotta sitten | |
main.go | 3 vuotta sitten |
v1.3
处理搜索导致程序占用内存高搜索不出来问题
BaseService/gateway
剑鱼网关服务。为剑鱼网站商品标准化,提供统一权限校验,资源扣减。
服务注册与发现依赖go.etcd.io/etcd/client/v3
库。
服务注册
注册时向etcd中put scheme/serverCode@serverAddr
key并设置租期
scheme
默认为 etcd:///com.gateway
serverCode
为服务code,在系统中需要唯一serverAddr
为服务ip+端口服务注册例子 。服务已注册,但服务不可用可能有以下操作*造成。但服务有重试机制,并常识可用节点,不会造成影响。
server := g.Server()
// 向网关注册表注册服务。*此步骤应在服务启动后注册
// NewNode可传入etcd节点,默认http://127.0.0.1:2379
closeNotify, err := node.NewNode(etcdNode1,etcdNode2...).Register(serverCode, serverPort)
if err != nil {
panic(err)
}
go func() {
server.Run()
}()
// 阻塞主进程,接受退出消息。关闭服务,从注册表中删除。
// kill -9 信号接受不到,*会有2~3秒延迟。
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
closeNotify()
服务发现
服务发现是网关程序依赖etcd
中watch
监听系统scheme
中所有的服务节点。当有服务启动或关闭时,网关程序能够实时进行服务节点的增加与删除。
//创建节点发现,并持续监听
watchNode := node.NewNode(etcdNode1,etcdNodes2,..)
go watchNode.NewWatcher(ctx, resolver)