Registry
简单的内存注册中心
源码 https://github.com/shura1014/registry
快速使用
启动
默认启动端口 9999
            
            
              go
              
              
            
          
          register := NewMemRegister()
register.Start()curl http://127.0.0.1:9999/mem/probe
OK
服务注册
注册一个服务 : 建议使用应用级注册
例如注册upc应用地址 127.0.0.1:8888
            
            
              go
              
              
            
          
          // curl  -POST -d '{"key":"upc","value":"127.0.0.1:8888"}' http://127.0.0.1:9999/mem/register
func TestServiceRegistry(t *testing.T) {
	// 模拟监听一个端口
	_, _ = net.Listen("tcp", ":8888")
	common.Wait()
}- 
启动服务 
- 
访问 
curl -POST -d '{"key":"upc","value":"127.0.0.1:8888"}' http://127.0.0.1:9999/mem/register
- 查看注册中心日志
            
            
              text
              
              
            
          
          [registry] 2023-08-31 11:05:27 /Users/wendell/GolandProjects/shura/registry/mem.go:52 INFO register /upc &[{127.0.0.1:8888}]服务发现
curl -POST -d '{"key":"upc"}' http://127.0.0.1:9999/mem/discover
{"address":"127.0.0.1:8888"}
监听地址变化
客户端通过与注册中心建立长轮询监听服务地址,30秒一次,如果地址有变动立刻返回,否则30秒后返回304
例如
            
            
              shell
              
              
            
          
          curl  -POST -d '["upc"]' http://127.0.0.1:9999/mem/monitor         
{"code":304}有新的服务注册
            
            
              go
              
              
            
          
          curl  -POST -d '["upc"]' http://127.0.0.1:9999/mem/monitor
{"appName":"/upc","code":200,"data":[{"address":"127.0.0.1:8888"},{"address":"127.0.0.1:8889"}]}
[registry] 2023-08-31 11:16:32 /Users/wendell/GolandProjects/shura/registry/mem.go:52 INFO register /upc &[{127.0.0.1:8888} {127.0.0.1:8889}]有服务下线
手动关闭一个实例
            
            
              shell
              
              
            
          
          curl  -POST -d '["upc"]' http://127.0.0.1:9999/mem/monitor
{"appName":"/upc","code":200,"data":[{"address":"127.0.0.1:8888"}]}
另一个也关掉
curl  -POST -d '["upc"]' http://127.0.0.1:9999/mem/monitor
{"appName":"/upc","code":200,"data":null}