为什么需要这个组件呢,解决什么问题呢?
当我们写微服务项目的时候,如果一个项目要去获得另一个项目中的对象,那么我们这里可以通过http请求的方式来获取,这里的url是写死的。如果我们的机器变更,那么后续处理这些问题,将会非常的繁琐。这里我们就可以使用的Eureka(注册中心)来解决这个问题。
什么是注册中心
在最初的架构体系中,集群的概念还不那么流行,且机器数量也比较少,此时直接用DNS+Nginx就可以满足几乎所有服务的发现。相关的注册信息直接配置在Nginx。但是随着微服务的流行与流量的激增,机器规模逐渐变大,并且机器会有频繁的上下线行为,这种时候需要运维手动地去维护这个配置信息是⼀个很麻烦的操作。所以开发者们开始希望有这么⼀个东西,它能维护⼀个服务列表,哪个机器上线了,哪个机器宕机了,这些信息都会自动更新到服务列表上,客户端拿到这个列表,直接进行服务调用即可。这个就是注册中心。
注册中心主要有三种角色:
• 服务提供者(Server):⼀次业务中,被其它微服务调用的服务。也就是提供接口给其它微服务。
• 服务消费者(Client):⼀次业务中,调用其它微服务的服务。也就是调⽤其它微服务提供的口。
• 服务注册中⼼(Registry):用于保存Server的注册信息,当Server节点发生变更时,Registry会同步变更,服务与注册中心使用⼀定机制通信,如果注册中心与某服务长时间无法通信,就会注销该实例。
如图所示:
Eureka介绍
Eureka是Netflix OSS套件中关于服务注册和发现的解决方案。Spring Cloud对Eureka进行了集成,并作为优先推荐方案进行宣传,虽然目前Eureka 2.0已经停止维护,新的微服务架构设计中,也不再建议使用,但是目前依然有用量公司的微服务系统使用Eureka作为注册中心。
Eureka主要分为两个部分:
• Eureka Server:作为注册中心Server端,向微服务应用程序提供服务注册,发现,健康检查等能力。
• Eureka Client:服务提供者,服务启动时,会向Eureka Server注册自己的信息(IP,端口,服务信息等),Eureka Server会存储这些信息。
Eureka的学习,主要包含以下三个部分:
1. 搭建Eureka Server。
2. 将order-service,product-service都注册到Eureka。
3. order-service远程调用时,从Eureka中获取product-service的服务列表,然后进行交互。
搭建项目
先创建好一个maven项目。
添加依赖: