stack-labs / questions

任何关于Micro的问题都可以在Issue中创建
27 stars 6 forks source link

如何通过编程方式动态扩展服务节点或者关闭也有服务节点? #33

Closed 2lingnil closed 4 years ago

2lingnil commented 4 years ago
  1. 假设已经用go-micro开发好服务A,服务B,控制相关服务。
  2. 现在问题是如何使用编程方式在控制相关服务中提供接口,动态扩展服务A的节点,动态关闭服务节点,获取所有在线服务的信息?
printfcoder commented 4 years ago

现在问题是如何使用编程方式在控制相关服务中提供接口

这句话不是很明白,是指动态关闭接口?比如A有foo,bar两个接口,想把foo关掉或停止服务?那可以用Wrapper。Wrapper可以在FooHandler之前执行,伺机下放请求到Handler即可。

动态扩展/关闭服务A的节点

这块比较偏运维层面的了,扩展的话只能是让运维新发布服务,关闭则可以让服务侦听Broker事件,让调度器服务广播要下线的节点,广播的消息包含要下线的节点ip或元数据(micro.Metadata)等信息,当节点侦听到的消息,解析消息后发现包含自己的ip或元数据,那就自己调用Shutdown接口

获取所有在线服务的信息

获取所有服务可以使用Registry.ListServices(eg. service.Options().Registry.ListServices() )方法获取同一注册中心的go-micro服务。

2lingnil commented 4 years ago

@printfcoder

现在问题是如何使用编程方式在控制相关服务中提供接口

这句话原本要表达的意思是:后端会提供一个接口给前端,前端通过调用该接口,关闭某个服务,或者个服务添加节点。