`
白马探
  • 浏览: 14631 次
社区版块
存档分类
最新评论

微服务理论与实践-服务注册与发现

 
阅读更多

1.背景

l  服务的客户端(包括API网关或者其他服务)如何获取服务端实例的位置

 

l  每个服务端实例都会在特定的位置(主机及端口)通过HTTP/REST或者Thrift等方式发布一个远程API

 

l  服务端实例的具体数量和位置会发生动态变化

 

l  虚拟机与容器通常会被分配动态IP地址

 

 2.方案

2.1 客户端服务发现

向某一服务发送请求时,客户端会通过查询Servcie Registry,即服务注册表来回去该服务的具体位置/该注册表包含全部服务的位置。(了解源码可+WX:  haiwabbc)

 

2.2 客户端服务发现的优缺点

 

(1)优点 

 

l  相比服务端发现,客户端服务发现的活动部件与网络中转数量更少。

 

(2)缺点

 

l  需要为应用程序中使用的每种语言建立客户端发现逻辑

 

 2.3 服务端服务发现

  向某一服务发送请求时,客户端会通知在已知位置的路由器(或者负载均衡器)发送请求。路由器会访问服务注册表,并向可用的服务实例转发该请求。服务注册表也可能被内建于路由器之中。

 

2.4 服务端发现的优缺点

 

(1)优点

 

l  相较客户端发现,其客户端代码无需实现服务发现功能,只需要向路由机制发送请求即可。

 

(2)缺点

 

l  除非成为云环境的一部分,否则该路由机制必须作为另一个系统组件进行安装与配置。为实现可用性和一定的接入能力,还需要为其配置一定数量的副本。

 

l  相较于客户端发现,服务端发现需要更多的网络跳转

 

3.服务注册表

 

3.1 背景

 

l  服务的客户端需要使用客户端发现机制或者服务端发现机制,获取需要发送请求的服务实例的位置

 

l  每个服务实例都会在特定位置(主机与端口)通过HTTP/REST或者Thrift等方式发布一个远程API。

 

l  服务实力的数量和位置会动态的发生变化。虚拟机与容器通常会被分配一个动态的IP地址。

 

3.2 方案

 

   建立一套服务注册表。即一个包括服务、服务的实例和起位置的数据库。各服务示例需要在启动时注册至服务注册表,并在关闭的时候进行注销。该服务的客户端或者路由器通过查询此服务注册表获取可用的服务实例

 

3.3 服务注册表模式的优缺点

 

(1)优点

 

l  服务的客户端及路由器可以获取可用的服务实例的位置

 

(2)缺点

 

l  除非服务注册表被内置于基础设施,否则其必须做为另外的基础设施组件进行安装,配置及管理。

 

l  需要解决各服务示例如何注册至注册表,如何从注册表中注销

 

3.4 服务注册表的注册方式      

3.4.1 需求

l  各服务实例必须在启动时注册到服务注册表,并在关闭时从服务注册表中注销

 

l  崩溃的服务实例必须从服务注册表中注销

 

l  在运行但无力处理请求的服务实例必须从服务注册表中注销

 

3.4.2 方案

3.4.2.1自注册

一项服务实例必须可以自动注册到服务注册表中。在启动时,该服务实例将自身(主机与IP地址)注册至服务注册表,使自身可被发现。客户端必须定期更新其注册信息,确保注册表获悉其仍处于运行状态。在关闭时,服务实例从服务注册表中自动注销。这一流程通常由微服务底盘框架实现。

 

3.4.2.2 自注册的优缺点

 

(1)优点

 

l  服务实例了解自身的状态,因而能够实现比启动/停止更为负责的状态模型。

 

(2)缺点

 

l  将服务与注册表耦合起来

 

l  需要为编写服务时使用的每种语言分别实现服务注册逻辑。

 

l  正在运行但无法处理请求的服务示例往往无法自动在服务注册表中进行自我注销

 

3.4.2.3第三方注册

 由第三方负责将服务和服务实例在服务注册表中的注册,并在服务启动的时候将服务实例注册到服务注册表。而在服务实例关闭的时候在服务注册表中注销

 

3.4.2.4 第三方注册的优缺点

 

(1)优点

 

l  与自注册相比,服务端无需实现自动注册逻辑,复杂度较低

 

l  注册工具可以对服务进行健康检查,并根据健康检查注册或者注销该实例

 

(2)缺点

 

l  第三方注册只能了解服务实例的一些表层状态,例如其是否正在运行,并不能判断正在运行的服务是否能够处理请求

 

l  除非该注册工具属于基础设施的一部分,否则我们需要对其进行安装、配置及维护。由于其属于关键部件,需要保证其高可用。

 

 

 

分享到:
评论

相关推荐

    微服务架构设计与实践-内训方案.pdf

    - 服务注册与发现:使用服务注册中心实现服务之间的动态发现和路由。 - 服务治理:包括负载均衡、服务熔断、重试机制等策略,确保系统的稳定性和高可用性。 - **Base原理**: - 即“基本上可用(Basically ...

    微服务架构实践-唯品会1

    Dubbo是一个常用的Java微服务框架,它提供了服务注册和发现的功能,通过配置如`<dubbo:registry address="zookeeper://127.0.0.1:2181"/>`,服务提供者可以将服务信息注册到Zookeeper这样的服务中心,而服务消费者...

    小马哥 Java 微服务实践 - Spring Boot 系列

    - **Eureka**:作为服务注册与发现的组件,负责维护服务实例的元数据。 - **Zuul/Ribbon**:作为边缘服务和智能路由,处理客户端的请求,并分发到不同的服务实例。 - **Hystrix**:提供断路器模式,防止服务雪崩...

    2019Java微服务架构 2.0-全网首发-网盘地址

    注册中心.mp4章节8-Spring-Cloud\千锋java教程:053 Spring Cloud Alibaba-Nacos-安装.mp4章节8-Spring-Cloud\千锋java教程:054 Nacos-服务注册与发现.mp4章节8-Spring-Cloud\千锋java教程:055 Nacos-Feign.mp4...

    微服务架构与实践 ,王磊著

    1. 服务发现:通过服务注册与发现机制,使服务之间能够动态地找到彼此。 2. 数据一致性:在分布式环境中,通过事件驱动、Saga模式或分布式事务来处理数据一致性问题。 3. 安全性:使用OAuth2、JWT等技术进行身份验证...

    微服务架构实践116页.pdf

    在文档中,还涉及到了与微服务架构相关的技术术语,如“服务架构”、“容器化部署”、“负载均衡”、“服务注册与发现”、“API网关”、“配置中心”等。这些技术是微服务架构实践中的关键技术要素,文档中将对这些...

    微服务架构专题-SpringBoot.pptx

    - **Eureka**:作为服务注册与发现的组件,Eureka可以管理服务实例的生命周期。 - **Ribbon、Fegin**:Ribbon用于客户端负载均衡,而Feign是声明式服务调用,简化了服务间的通信。 - **Hystrix**:服务熔断和...

    SpringCloud微服务架构笔记-共四部分四个PDF文件

    1. Eureka:服务注册与发现中心,服务提供者向Eureka注册,消费者通过Eureka获取服务提供者的地址,实现服务的动态发现。 2. Ribbon:客户端负载均衡器,与Eureka结合,客户端从Eureka获取服务列表后,Ribbon负责在...

    微服务学习微服务学习微服务学习微服务学习1

    这个实战指南可能深入介绍了如何配置和使用Nacos作为微服务的注册中心,包括服务的注册与发现、配置管理以及健康检查等功能。通过Nacos,开发者可以更轻松地管理服务实例的生命周期和配置信息。 "spring cloud ...

    java微服务源码-spring-cloud-netflix-oss-microservices:波士顿JavaMeetup研讨会的源代码

    1. **Spring Cloud Eureka**:了解服务注册与发现机制,如何通过Eureka Server管理微服务实例,并实现服务间的相互查找。 2. **Spring Cloud Zuul**:学习如何设置和配置API网关,处理请求路由、过滤和安全控制,...

    第六期微服务架构-SpringCloudAlibaba代码和文档.zip

    通过学习和研究这些案例,你可以掌握如何配置和使用Nacos进行服务注册与发现,如何利用Sentinel实施流控和熔断策略,如何借助Seata实现分布式事务,以及如何通过Spring Cloud Gateway构建API网关。同时,文档部分将...

    京东咚咚微服务架构从理论认识到实践落地

    这包括服务注册与发现、负载均衡、熔断和降级策略等。例如,使用Eureka或Consul进行服务注册,通过Zuul或Envoy实现智能路由,结合Hystrix进行服务保护,确保系统在面临故障时仍能保持一定的可用性。 在实施过程中,...

    SpringCloud微服务实践(3.54G)

    资料 1-0SpringCloud-课程介绍.avi 1-1SpringCloud-系统进化理论概述.avi 1-2SpringCloud-系统进化理论背景.avi 1-3SpringCloud-什么是微服务架构.avi ...3-5SpringCloud-搭建与配置Eureka服务注册中心.avi 3-6Spr

    高级Java人才培训专家-01-环境搭建、SpringCloud微服务(注册发现、服务调用、网关)

    1. **服务注册与发现**:Spring Cloud Netflix Eureka提供了服务注册与发现机制。通过Eureka Server作为服务注册中心,各个微服务可以在启动时向Eureka Server注册自己的信息,而其他服务则可以通过Eureka Server...

    分布式服务框架:原理与实践

    服务注册与发现机制使得服务提供者可以在网络中注册自己的服务,而服务消费者可以动态地找到并调用这些服务。常见的实现方式有基于Zookeeper、Eureka或Consul的服务注册中心。 其次,负载均衡是确保服务高可用的...

    天机学堂微服务项目2023 天机学堂微服务项目2023天机学堂微服务项目2023

    该课程讲义详细阐述了微服务从理论到实践的各个层面,包括服务拆分策略、服务间的通信机制、服务注册与发现、熔断与降级策略、以及服务网格的概念。此外,还提供了实际案例分析,帮助学员将理论知识应用于实际项目。...

    美团点评微服务OCTO-曹继光.pdf

    在服务注册与发现方面,企业开始可能会采用简单的服务列表维护,到后来发展出使用配置中心、服务网格等技术来管理服务。配置管理则涉及到配置的动态更新、分环境配置以及配置的安全性等问题。监控告警则是微服务架构...

    知乎的微服务架构实践.pdf

    这通常依赖于像Eureka或Consul这样的服务注册与发现组件。 - **API Gateway**:作为系统的统一入口,处理请求路由、权限验证、负载均衡等功能,降低了服务间的直接交互复杂性。 - **数据一致性**:在分布式环境中...

    阿里分布式数据库服务实践pdf文档+微服务架构电商项目视频资源资源

    4. 电商项目实战:通过一个具体的电商项目实例,演示如何设计和构建微服务架构,包括服务注册与发现、负载均衡、熔断与降级策略等。 5. 微服务运维挑战:讨论微服务带来的监控、测试、部署等问题,以及相应的解决...

Global site tag (gtag.js) - Google Analytics