前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[翻译]微服务设计模式 - 7. 服务发现 - 自注册

[翻译]微服务设计模式 - 7. 服务发现 - 自注册

作者头像
干货满满张哈希
发布2021-04-12 12:09:00
3120
发布2021-04-12 12:09:00
举报
文章被收录于专栏:干货满满张哈希

原文地址:https://microservices.io/patterns/self-registration.html

背景

假设你采用了客户端服务发现或者服务端服务发现,服务启动时需要向注册中心注册实例,在关闭时向注册中心注销,以便其他服务感知。

问题

服务实例如何向注册中心注册或注销?

考虑因素

  • 服务在启动时必须向注册中心注册实例,并且在关闭时在注册中心注销实例
  • 必须从注册中心注销崩溃的服务实例
  • 正在运行但是无法正常提供服务的实例,也需要在注册中心注销

解决方案

服务实例负责在注册中心注册自己。在启动时,服务实例向服务注册中心注册自己(主机和IP地址),使自己可以被发现。客户端通常必须定期发送心跳,以便注册中心知道它仍在运行。在关闭时,服务实例从注册中心注销自己。

一般微服务基础框架都会有这个机制。

举例

我们用 Scala 编写一个例子,使用 SpringBoot 和 SpringCloud 作为微服务框架,以 Netflix Eureka服务注册中心。在@Configuration Spring 框架配置类上使用@EnableEurekaClient 这个注解,将会让实例在启动后注册到 Eureka 上面

代码语言:javascript
复制
@Configuration
@EnableEurekaClient
class EurekaClientConfiguration {

结果分析

自注册这个设计模式的好处有:

  • 服务实例知道自己真正的状态,所以可以实现相对于仅 UP/DOWN 这两种状态来说更加复杂的状态机制,例如:STARTING、AVAILABLE 等等 这种设计也有一些不好的地方需要小心考虑予以避免:
  • 与注册中心耦合,换一个注册中心就要写新的实现
  • 如果你的微服务系统中不同的微服务使用了不同的编程语言或者框架体系,那么针对这些都需要实现统一的注册逻辑
  • 运行的但是无法正常处理请求的实例,一般无法自己感知到,从而在注册中心自行注销。

相关模式

  • 注册中心 - 服务发现的核心
  • 客户端服务发现服务端服务发现
  • 微服务基础框架 - 一般微服务基础框架都有自注册的功能实现
  • 第三方注册 - 另一种可替代的设计模式
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 问题
  • 考虑因素
  • 解决方案
  • 举例
  • 结果分析
  • 相关模式
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档