【一】微服务之服务发现概述
关于微服务,近年来可谓是大火,业界也吹刮着一种实践微服务的风潮。本人有幸在去年参与到一个向微服务过渡的产品,再结合自己所学的一些知识做一个总结,同时也是一个继续学习的过程。
如果说在实施微服务的所有经验中,挑出最重要的一点,那么我觉得应该是:
基础设施的建设决定微服务的实施效果
后面可能会写一篇关于具体踩坑的总结,大多也是关于基础设施组件的。如果在实施微服务的过程中,相应的基础设施没有配套跟上,是极有可能从一个坑跳到另一个坑中去的。
服务治理包括服务的注册和发现,是实施微服务过程中最基本的基础设施之一了。目前可以用作服务发现的组件主要有Eureka,Zookeeper,Consul,Etcd,在我们的项目中由于混用了Spring Cloud和Dubbo两套框架,所以Eureka和Zookeeper都有用到,本文先对Eureka进行分析,由于Zookeeper不属于专门的服务发现组件,具有多种功能,所以会专门做分析。
一个服务发现的服务端需要满足的需求:
-
服务注册:针对Client端的服务提供者,在启动时将自己注册到Server端。
-
服务发现:针对Client端的服务消费者,查询可用的服务列表。
-
服务列表保存:针对Server端,记录各个微服务的相关信息。
-
跨节点共享信息:针对Client端服务上线后,只会注册在一个服务端实例上,各个服务端之间要进行信息同步.
-
健康监测:监测已经注册的服务,如果长时间无法访问,则从列表中剔除。
我们现在提到的Eureka,总括了Netflix Eureka以及Spring Cloud Netflix包中对于Eureka的封装,但其实Netflix Eureka本身就已经是一套完整的基于REST的服务发现框架。Spring Cloud对于Eureka的集成,让它更容易的实施在微服务体系之中。