Go-手写注册中心

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()
}
  1. 启动服务

  2. 访问

curl -POST -d '{"key":"upc","value":"127.0.0.1:8888"}' http://127.0.0.1:9999/mem/register

  1. 查看注册中心日志
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}
相关推荐
Littlehero_1212 分钟前
QT自定义控件之热换站系统(源码开源)
开发语言·qt
meilindehuzi_a3 分钟前
Python 基础语法(1):常量、变量、类型、输入输出与运算符
开发语言·python
caimouse11 分钟前
ReactOS 窗口系统分析(5):可见区域与窗口 DC — vis.c + windc.c
c语言·开发语言
Zane199415 分钟前
调用了 async 函数却没执行?一文讲透协程、event loop 与 await
后端·python
OPEN-F19 分钟前
Python进阶教程:装饰器与生成器深入
开发语言·python
Zane199420 分钟前
HashMap 为什么要在长度16、容量必须是2的幂这些细节上较劲
java·后端
掘金者阿豪1 小时前
若依启动突然报 Redis MISCONF?一次从应用报错到磁盘爆满的完整排查记录
后端
千里码aicood2 小时前
基于Python的电商数据采集系统(大数据+爬虫)
开发语言·python
boooooooom2 小时前
尝尝咸淡:从朴素 RAG 到 Graph RAG——一个烹饪问答系统的三层检索升级之路
前端·后端·llm
陈皮波比茶2 小时前
Python项目实战-网络机器人(爬虫)
开发语言·网络·爬虫·python·机器人