美文网首页Spring Boot实践记录Spring Cloud实践记录
Spring Cloud系列一 之 eureka服务注册中心

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

作者: Chinesszz | 来源:发表于2017-02-08 10:19 被阅读275次

    服务发现:Eureka客户端

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

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

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

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


    Basic Architecture



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

    提供服务注册和发现

    Service Provider

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

    Service Consumer

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

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

    More in depth



    上图更进一步的展示了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)做状态同步

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

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

    相关文章

      网友评论

      • c2702b8dea0d:凉凉,大佬,为啥你的图片加载不出来
        Chinesszz:@遥望星河 我把有道云笔记分享关闭了,导致的。我改改就好了

      本文标题:Spring Cloud系列一 之 eureka服务注册中心

      本文链接:https://www.haomeiwen.com/subject/qajvittx.html