Spring Cloud系列一 之 eureka服务注册中心

举报
西魏陶渊明 发表于 2022/09/25 04:16:04 2022/09/25
【摘要】 服务发现:Eureka客户端 服务发现是微服务架构中的一项核心服务。如果没有该服务,我们就只能为每一个服务调用者手工配置可用服务的地址,这不仅繁琐而且非常容易出错。Eureka包括了服务端和客户端两部分。服务端可以做到高可用集群部署,每一个节点可以自动同步,有相同的服务注册信息。 向Eureka注册服务 当客户端向Eureka注册自...

服务发现:Eureka客户端

服务发现是微服务架构中的一项核心服务。如果没有该服务,我们就只能为每一个服务调用者手工配置可用服务的地址,这不仅繁琐而且非常容易出错。Eureka包括了服务端和客户端两部分。服务端可以做到高可用集群部署,每一个节点可以自动同步,有相同的服务注册信息。

向Eureka注册服务
当客户端向Eureka注册自己时会提供一些元信息,如主机名、端口号、获取健康信息的url和主页等。Eureka通过心跳连接判断服务是否在线,如果心跳检测失败超过指定时间,对应的服务通常就会被移出可用服务列表。
译者注:向Eureka Server注册过的服务会每30秒向Server发送一次心跳连接, Server会根据心跳数据更新该服务的健康状态并复制到其他Server中。如果超过90秒没有收到该服务的心跳数据,则Server会将该服务移出列表。

注册项目实际就是一个普通的Spring Boot应用,使用@EnableDiscoveryClient注解后,会自动向Eureka注册中心,变成Rureka服务端实例,

服务注册中心实际也是一个普通SpringBoot应用,使用了@EnableEurekaServer注解后,启动应用,Eureka有一个带UI的主页,注册信息都在/访问


WEBRESOURCE99f35b85d334533db63f94645b8897b6

Basic Architecture


BFEDD654CE864C449BD05AF49194E1D0

上图简要描述了Eureka的基本架构,由3个角色组成:
Eureka Server

提供服务注册和发现

Service Provider

服务提供方
将自身服务注册到Eureka,从而使服务消费方能够找到

Service Consumer

服务消费方
从Eureka获取注册服务列表,从而能够消费服务

需要注意的是,上图中的3个角色都是逻辑角色。在实际运行中,这几个角色甚至可以是同一个实例,比如在我们项目中,Eureka Server和Service Provider就是同一个JVM进程。

More in depth


F144D3BE7F1B4E6D90281132C4DEAC14

上图更进一步的展示了3个角色之间的交互。
Service Provider会向Eureka Server做Register(服务注册)、Renew(服务续约)、Cancel(服务下线)等操作。
Eureka Server之间会做注册服务的同步,从而保证状态一致
Service Consumer会向Eureka Server获取注册服务列表,并消费服务

实现细节:
ApplicationResource类接收Http服务请求,调用PeerAwareInstanceRegistryImpl的register方法

private final PeerAwareInstanceRegistry registry;//实现注册 InstancInfo包含 instancdId、appName、ipAddr、port、securePosrt....
@POST
@Consumes({"application/json", "application/xml"})
public Response addInstance(InstanceInfo info, @HeaderParam("x-netflix-discovery-replication") String isReplication) {
logger.debug("Registering instance {} (replication={})", info.getId(), isReplication);
....处理失败返回
this.registry.register(info, "true".equals(isReplication));
return Response.status(204).build();
}
PeerAwareInstanceRegistryImpl完成服务注册后,调用replicateToPeers向其它Eureka Server节点(Peer)做状态同步

70FE50FDF79346DE9823AD6E055C94A2

Chapter9-1-1 实现简单注册功能

未完待续。。。
参考资料:http://docs.springcloud.cn/user-guide/eureka/
参考资料:http://nobodyiam.com/2016/06/25/dive-into-eureka/(细节实现)

文章来源: springlearn.blog.csdn.net,作者:西魏陶渊明,版权归原作者所有,如需转载,请联系作者。

原文链接:springlearn.blog.csdn.net/article/details/102425242

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。