RPC_01_基于Socket的RPC服务端架构

4 篇文章 0 订阅


基于Socket的RPC服务端架构

针对guide-rpc-framework开源项目,主要记录在源码阅读过程中的一些理解,本文描述了项目中由Socket实现的RPC服务端架构,项目以zookeeper作为注册中心。


一、Socket服务端的启动流程

  • 创建服务提供者(接收客户端消息后,实际执行方法的对象)
  • 创建socket服务对象
  • 创建rpc配置对象
  • 在配置对象中注册服务提供者
  • 在socket服务对象中注册rpc配置对象
  • 开启socket服务,接收客户端的请求

二、重要组件说明

1. 服务提供者

  • 服务提供者需要实现公有接口(服务消费者也可以访问的接口),以便客户端生成对应的代理对象
  • 服务提供者中需要实际实现公有接口中的方法

2. socket服务对象

  • 包含两个属性
    1. 私有线程池
      当客户端向服务端发送请求建立socket连接时,服务端将此socket连接打包成一个rpc请求处理器(包括请求解析,请求执行,返回值获取,返回值发送等功能的Runnable对象),将此处理器提交给线程池处理。每个线程中IO是阻塞的,每建立一个连接,就需要提交一个线程。

    2. 服务提供池
      用来添加、发布和获取服务,是实际与zookeeper交互的对象,使用Map根据服务名称保存服务提供者,在发布时会将将rpc访问地址发布到zookeeper上

  • 包含三个主要方法
    1. 构造方法
      用来初始化线程池服务提供池,可在其中定义两者的具体实现,现有的服务提供池为zookeeper实现。
    2. 服务注册方法
      调用服务提供池的服务发布方法,将rpc配置对象中注册的服务发布出去。
    3. 服务启动方法
      绑定服务端口,启动服务器,监听客户端请求,监听到请求后,打包socket连接,提交给线程池处理。

3. rpc配置对象

  • rpc配置对象打包了服务提供者(一对一)
  • 用于方便地获取服务提供者的名称以及对应的rpc服务名称
  • 从rpc配置对象中也可以获取服务提供者

三、整体结构

基于Socket的RPC服务端架构示意图

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值