服务的发现和注册有两种模式
应用层服务发现模式
这种模式下,服务端直接自己向注册中心进行注册(自注册模式),而客户端也直接通过查询注册中心获取服务实例的地址来调用服务(客户端有时可能会缓存服务实例)。
这种模式的好处在于,他可以处理多平台部署问题,即如果在K8S上部署了一些服务,另一些服务在其他的遗留环境下,那么使用这种模式就能发现所有不同环境下的服务。而基于K8S的服务发现仅能发现部署在K8S下的服务。
弊端在于需要为每种语言提供服务发现库,而且开发者需要自己负责和管理服务注册表。
平台层服务发现模式
这种模式下,服务端将自身交给了部署平台(K8S,DOCKER SWARM)由部署平台在平台内部的服务注册器处理注册。同时,客户端也不再查询服务注册表,而而是直接对平台进行请求,平台会自动将请求进行均衡负载,将请求路由到相关服务端。
优势在于所有的服务注册和发现都有部署平台全权负责,开发人员不用在管服务的发现和注册,服务端和客户端不再包含任何发现代码。
弊端在于,只能发现和注册在部署平台内(K8S)的服务,而非在部署平台内(K8S)的服务无法发现。