微服务的注册与发现

一、服务注册中心 Service Register

由于服务的的众多,且服务本身变更可能频繁。所以典型的分布式服务,需要一个服务注册中心来作为服务调用方和服务提供方之间的桥梁。

注册中心像一个数据库,存储了当前的可用服务。注册中心需提供API,供服务端注册、更新服务到注册中心,供客户端查询可用服务。

可用框架: etcd consul Apache Zookeeper

二、服务的注册

服务自己注册到注册中心

服务端自己发起注册,将自己的信息注册到注册中心。

优点 实现简单

缺点 不同语言的服务端,都需要实现服务注册的功能

框架 Netflix OSS Eureka client

依赖第三方服务注册到注册中心

服务的注册由第三方组件,自动完成。服务代码无需介入。

实现原理 在服务的部署容器中部署第三方组件,来实现对服务的注册和整体监控

优点 服务端无需介入注册逻辑

缺点 对三方依赖增加

框架  Registrator   NetflixOSS Prana

三、服务的发现和负载均衡

客户端控制

客户端去注册中心查询可用服务,客户端实现负载逻辑

优点 简单直接,不同客户端可定义不同的负载均衡逻辑

缺点 不同语言需实现注册,负载均衡逻辑,耦合较大

框架  Netflix OSS

路由服务控制

依赖一个固定地址的路由服务,所有服务调用交由它处理,路由服务会去注册中心查询可用服务,同时做负载均衡

优点 服务的发现,和均衡策略不需要客户端操心

缺点 路由服务本身需要高可用,以免宕机影响服务调用

四、参考链接

http://microservices.io/patterns/client-side-discovery.html
http://microservices.io/patterns/server-side-discovery.html
https://www.nginx.com/blog/service-discovery-in-a-microservices-architecture/