PhxRPC源码分析(三) RPC

RPC

整个RPC的定义基本都在hsha_server这个文件。主要有一下几个类:

  • DataFlow :数据流,所有请求和应答分别保存在两个线程安全的队列中。
  • HshaServerStat HshaServerQos: 统计运行状态,独立线程。
  • Worker :独立的工作线程,如果是协程模式,每个worker会有多个协程。
  • WorkerPool:工作池,管理Worker
  • HshaServerUnit:独立线程的工作单元,每个单元都有一个WorkerPool ,UThreadEpollSchedulerDataFlow
  • HshaServerIO:在HshaServerUnit线程处理IO事件。
  • HshaServer:server对象,有多个工作单元。
  • HshaServerAcceptor:接受连接,工作在主线程。

运行起来有一个accept线程,每个unit有一个IO线程,多个worker线程。

各个模块之间的关系如下

这里写图片描述

DataFlow

DataFlow包含request和response队列,并附加了时间戳和参数指针。

HshaServerStat HshaServerQos

独立线程负责统计运行信息,线程绑定为CallFunc函数,使用了设置超时时间的条件变量,超时时间为1s,这样如果没有通知则每秒统计一次。

Worker

独立工作线程,绑定为Worker::Func

void Worker::Func() {
   
    if (uthread_count_ == 0) 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GRPC是一种高性能、开源、通用的RPC框架。它基于HTTP/2协议标准设计,支持多种编程语言。在Java中,GRPC提供了完整的Java API和工具链。 下面是GRPC Java源码分析的一些关键点: 1. 服务定义:GRPC使用Protocol Buffers(protobuf)作为服务定义语言。通过编写.proto文件,定义服务接口和数据结构。 2. 代码生成:使用protobuf编译器生成Java代码,包括服务接口和数据结构的类定义、序列化和反序列化方法等。 3. 服务实现:实现服务接口的方法,完成实际的业务逻辑。GRPC支持两种类型的服务:普通服务和流式服务。普通服务是一次请求-响应的模式,流式服务则可以支持客户端和服务端之间的多次交互。 4. 服务绑定:将服务实现绑定到GRPC服务器上。GRPC提供了一个ServerBuilder类来创建和配置GRPC服务器。 5. 客户端调用:使用GRPC提供的客户端Stub类,调用服务接口中的方法。GRPC客户端支持同步和异步两种调用方式,以及流式调用。 6. 传输协议:GRPC使用HTTP/2作为传输协议。HTTP/2提供了流控制、头部压缩、多路复用等特性,可以提高网络传输效率和性能。 7. 序列化和反序列化:GRPC使用protobuf作为序列化和反序列化的工具。protobuf提供了高效的二进制序列化和反序列化方法,可以减少数据传输量和网络延迟。 总之,GRPC Java源码分析需要理解上述关键点,并深入了解GRPC的底层实现原理和机制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值