美文网首页
服务发现:自注册

服务发现:自注册

作者: scheshan | 来源:发表于2018-08-29 19:37 被阅读0次

    背景

    你已经应用了 客户端服务发现 或者 服务端服务发现。服务实例必须在启动时注册到注册 服务注册中心以被发现,在终止时取消注册。

    问题

    服务实例怎样从服务注册中心注册和取消注册?

    限制

    • 服务实例必须在启动时注册到注册中心,终止时取消注册
    • 服务实例崩溃时,必须从注册中心取消注册
    • 服务正在运行,但是没办法处理请求,必须从注册中心取消注册

    解决方案

    服务实例自己负责注册到服务注册中心。启动时,服务实例将自己(主机和IP地址)注册到服务注册中心,让它自己能被发现。客户端通常必须周期性的更新它的注册信息,因此注册中心知道它还可用。当它终止时,服务实例自己从服务注册中心取消注册。

    这个功能通常由微服务基架框架提供

    示例

    微服务示例应用是采用自注册的一个示例应用。它用Scala编写,采用了Spring Boot和Spring Cloud作为微服务基架。该应用使用Eureka 作为 服务注册中心,它也是Netflix OSS的一个组件。

    服务注册是通过在Java配置类上添加@EnableEurekaClient注解:

    @Configuration
    @EnableEurekaClient
    class EurekaClientConfiguration {
    
    

    这个注解导致服务实例注册到Eureka。

    结果

    自注册有如下优势:

    • 服务实例知道它自己的状态,因此可以实现一个比UP / DOWN更复杂的状态模型,比如:STARTING,AVAILABLE。。。

    也有如下弊端:

    • 服务与服务注册中心耦合
    • 你必须在你用来编写服务的每一个编程语言 / 框架里实现服务注册逻辑,比如:NodeJS / Javascript,Java / Scala,等等。
    • 正在运行,但是无法处理请求的服务实例,通常缺乏从服务注册中心取消注册的行为。

    相关模式

    相关文章

      网友评论

          本文标题:服务发现:自注册

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