0%

微服务架构系列(一)-服务注册与发现

为什么有服务注册与发现?解决了什么问题?如何使用?

为什么有服务注册与发现?解决了什么问题?

​ 服务根据功能进行了划分,各自负责自己的模块;但服务和服务之间还需要通信,服务部署很多台,我们要从中获取一台服务建立通信;如果没有服务注册和发现中间件我们要怎么做呢?大部分的做法可能是将所有服务的地址权重写在配置中,通过类负载均衡算法从中选择一个建立连接到达通信的目的,这么做是没问题的,但这么做方便吗?不方便。首先每次新增或移除一个服务都要更新配置文件,而且这类操作通常会比较频繁。其次如果是用容器部署的话,服务的地址都动态服务,如果还是通过人工进行配置,那对运维一点都不友好。服务注册与发现中间件是什么呢?它其实就是公共的服务,保存服务的注册信息,且必须具备高可用和一致性。服务注册时将信息记录,服务发现时获取注册列表。这不就解决了上面所说的问题。

使用总结为三步:

  1. 服务提供者(Provider)与中间件服务(etcd、consul等)建立连接;

  2. 服务提供者向中间件服务注册,供其他服务调用;

  3. 服务消费者(consumer)从中间件服务发现服务(从服务列表中通过负载均衡算法选取)进行调用;

最后

​ 打算写一个服务架构练练手,尽量功能齐全,集成所有市面上使用广泛的中间件。其实现在已经提出了服务网格(Service Mesh,已经有机会也会写写),相当于剥离了业务层和管理层,写代码只需要关注业务,无需关心基础设施层。但我为什么还要回过头去写老的服务机构呢?没为什么,就是学习,你写代码的时候也从来没去看过源码,但面试官就是爱问一个道理。