gRPC源码剖析
文章平均质量分 88
gRPC C++实现源码分析
self-motivation
专注LINUX系统与性能分析优化
展开
-
gRPC详解-----负载均衡策略
1. 背景1.1 基于调用的LB需要注意的是,gRPC的负载均衡是基于每次调用而不是每条连接的.换句话说,即使所有的请求来自同一个客户端,我们也希望这些请求能够在不同的服务上进行LB.1.2 LB的实现方法在介绍任何gRPC的特定实现之前,我们先来浏览一下常见的LB实现方式.balancing.1.2.1 代理模式使用代理能够提供可靠可信任的客户端,还可以向LB系统报告负载情况.代理通常需要更多的资源和操作,因为代理需要拷贝RPC请求和响应的副本.这种模式也会增加RPC的延迟.当请求量很原创 2021-08-07 20:52:31 · 1679 阅读 · 0 评论 -
gRPC源码分析 同步RPC请求与completion queue分析
gRPC completion queue架构grpc使用completion_queue来缓存事件,典型的如rpc请求。 使用grpc_cq_end_op来向cq中加入事件,使用grpc_completion_queue_next或pluck从队列中取出事件。 其中next/pluck的区别是:next从队列中按顺序依次取出事件,pluck可以通过指定tag条件来获取特定的事件...原创 2020-01-18 21:34:41 · 4940 阅读 · 0 评论 -
gRPC C++源码剖析(二) ---------数据结构篇之闭包调度器
grpc_closure_scheduler顾名思义,闭包调度器的作用就是对闭包进行调度。下面是它的定义:struct grpc_closure_scheduler { const grpc_closure_scheduler_vtable* vtable;};typedef struct grpc_closure_scheduler_vtable { void (*ru...原创 2019-10-26 11:24:23 · 1753 阅读 · 1 评论 -
gRPC C++源码剖析(二)---- 数据结构篇之闭包
上篇文章中提到了阅读gRPC源码的几大困难,其中数据结构是基础中的基础。如果连这些数据结构的原理和作用都不了解的话,阅读起代码来肯定事倍功半。因此这篇文章对gRPC提供的数据结构进行讲解。grpc_closure闭包闭包是一些编程语言中提供的功能,如python.closure就是闭包的英文名称.简单的理解,闭包函数将创建闭包时的上下文中的变量与自己绑定在一起,将变量的...原创 2019-10-25 23:24:13 · 1438 阅读 · 0 评论 -
gRPC当前epoll实现的问题和解决方案
gRPC当前的epoll实现并不十分高效,有很大的改进空间。这篇文章来分析一下。`epoll`是gRPC实现pollset的基础。因此,你有必要先了解一下epoll即其发展史(至少了解EPOLLEXCLUSIVE是干什么的吧?)如果文章中的内容不能理解,建议先看下我之前讲gRPC的相关文章。介绍当前gRPC中`epoll`的实现.整体架构图:一个gRPC客户端或者...原创 2019-07-24 23:55:05 · 2349 阅读 · 0 评论