说说一次 Dubbo 服务请求流程?

1 个回答

  • 小医仙
    自己喜欢的东西又何必问别人好不好
    ### Dubbo 服务请求流程 #### 基本工作流程 在 Dubbo 中,一个完整的服务请求流程可以简化为以下几个步骤: 1. **服务提供者(Provider)启动并注册服务** - 服务提供者在启动时,将自己提供的服务注册到注册中心。 2. **服务消费者(Consumer)启动并订阅服务** - 服务消费者在启动时,从注册中心订阅所需的服务列表。 3. **服务调用** - 服务消费者通过负载均衡从服务提供者列表中选择一个提供者进行远程调用。 4. **返回结果** - 服务提供者处理请求,并将结果返回给服务消费者。 #### 详细工作流程 1. **服务提供者启动并注册服务**: - 服务提供者在启动时,会根据配置将自身的服务接口和地址等信息注册到注册中心。 - 注册中心存储这些信息,并对外提供服务查询接口。 2. **服务消费者启动并订阅服务**: - 服务消费者在启动时,会向注册中心订阅所需的服务。 - 注册中心将符合条件的服务提供者列表返回给服务消费者。 - 服务消费者本地缓存这些服务提供者的信息,以便后续调用。 3. **服务调用**: - 服务消费者在调用服务时,会根据负载均衡策略从本地缓存的服务提供者列表中选择一个提供者。 - 服务消费者通过 RPC 框架与选定的服务提供者建立连接并发送请求。 - 服务提供者接收到请求后,执行相应的业务逻辑,并将结果返回给服务消费者。 4. **返回结果**: - 服务提供者处理请求,生成响应结果。 - 通过 RPC 框架将结果返回给服务消费者。 - 服务消费者接收到响应结果,完成一次服务调用。 #### 角色说明 - **Provider(服务提供者)**: - 提供具体业务功能的服务,在启动时将服务注册到注册中心。 - **Consumer(服务消费者)**: - 调用服务提供者提供的服务,在启动时订阅所需的服务列表,并从中选择服务提供者进行调用。 - **Registry(注册中心)**: - 维护服务提供者的注册信息,并为服务消费者提供服务发现的功能。 - 服务提供者将服务信息注册到注册中心,服务消费者从注册中心订阅服务信息。 - **Monitor(监控中心)**: - 监控服务的调用情况,包括调用次数、调用时间和调用失败次数等。 - 服务提供者和服务消费者都会将调用信息发送到监控中心。 - **Container(服务容器)**: - 服务提供者的运行容器,用于启动和管理服务提供者。 #### 示例图解 ```plaintext | 服务提供者1 | | 服务消费者 | | 服务提供者2 | | 服务提供者启动 | | 服务消费者启动订阅服务 | | 服务提供者启动 | | 注册服务 | | 从注册中心获取服务列表 | | 注册服务 | | 提供服务 | <------> | 选择服务提供者调用 | <------> | 提供服务 | | 返回调用结果 | | 接收结果 | | 返回调用结果 | ``` ### 总结 一次完整的 Dubbo 服务请求流程包括以下步骤: 1. **服务提供者启动并注册服务**:服务提供者将服务注册到注册中心。 2. **服务消费者启动并订阅服务**:服务消费者从注册中心订阅所需的服务列表。 3. **服务调用**:服务消费者通过负载均衡从服务提供者列表中选择一个提供者进行远程调用。 4. **返回结果**:服务提供者处理请求,并将结果返回给服务消费者。 各角色的说明: - **Provider**:提供业务功能的服务。 - **Consumer**:调用服务的消费者。 - **Registry**:维护服务注册信息,提供服务发现功能。 - **Monitor**:监控服务调用情况。 - **Container**:服务提供者的运行容器。
    发布于 2024-08-01 07:40 •IP属地 河南
    举报
    评论
    收藏