gRPC
文章平均质量分 88
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 · 2018 阅读 · 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 · 1945 阅读 · 1 评论 -
gRPC C++源码剖析(二)---- 数据结构篇之闭包
上篇文章中提到了阅读gRPC源码的几大困难,其中数据结构是基础中的基础。 如果连这些数据结构的原理和作用都不了解的话,阅读起代码来肯定事倍功半。因此这篇文章对gRPC提供的数据结构进行讲解。 grpc_closure闭包 闭包是一些编程语言中提供的功能,如python. closure就是闭包的英文名称. 简单的理解,闭包函数将创建闭包时的上下文中的变量与自己绑定在一起,将变量的...原创 2019-10-25 23:24:13 · 1612 阅读 · 0 评论 -
gRPC C++ 源码剖析(一)----------入门
通过一段时间阅读gRPC c++的源码,对其实现原理算是初窥门境了。 在这里通过一系列循序渐进的文章把其中的经验和学习到东西分享出来,希望志同道合之人能够共同交流进步。 gRPC c++源码难吗? 个人认为gRPC c++源码算是质量比较高的源码了,google工程师们的抽象和设计能力都能够在其中有所体现。 可是阅读其源码还是有不少困难的,个人认为造成源码阅读困难的原因有以下几个: ...原创 2019-10-22 23:06:45 · 2864 阅读 · 0 评论 -
gRPC当前epoll实现的问题和解决方案
gRPC当前的epoll实现并不十分高效,有很大的改进空间。这篇文章来分析一下。 `epoll`是gRPC实现pollset的基础。因此,你有必要先了解一下epoll即其发展史(至少了解EPOLLEXCLUSIVE是干什么的吧?) 如果文章中的内容不能理解,建议先看下我之前讲gRPC的相关文章。 介绍 当前gRPC中`epoll`的实现. 整体架构图: 一个gRPC客户端或者...原创 2019-07-24 23:55:05 · 2557 阅读 · 0 评论 -
GRPC C++源码阅读(12)—-无锁队列的实现
http://www.anger6.com/?p=582 grpc c++库为了达到高性能,采用了许多先进的编程技术(虽然会违背我们的直觉,甚至影响我们流畅地阅读其代码。这也是为什么我要分析其源码的原因,funny! isn’t it?)。如异步非阻塞,线程池,无锁队列,I/O多路复用等。 这篇文章来分析下无锁队列的实现。 先来看一下无锁数据结构的概念。 一个数据结构能被称为是无锁的...原创 2019-06-22 15:40:25 · 3624 阅读 · 0 评论 -
gRPC C++源码阅读 grpc初始化
http://www.anger6.com/?p=420 这篇文章讲述grpc核心代码的初始化流程。 先看一个类图 任何依赖grpc核心lib初始化的代码,都需要在.cc文件中定义类型为GrpcLibraryInitializer的静态变量g_gli_initializer。这个对象的作用通过类图可以看出,会以单例模式初始化g_glip,g_core_co...原创 2019-06-01 23:24:32 · 2667 阅读 · 1 评论 -
gRPC 7.RPC C++源码阅读 同步SERVER线程模型
如果我们使用grpc c++的同步API来实现一个server,就如官方的grpc/examples/cpp/helloworld/greeter_server.cc例子所示。 那么如果同时来到多个rpc请求的话,线程模型是如何的呢? 通过阅读代码,可知线程模型会如下图所示: grpc会使用线程池来处理所有文件描述fds上的事件,线程池中的线程分为2种,一种是专门用来处...原创 2019-05-23 23:39:23 · 2009 阅读 · 0 评论 -
8.GRPC C++源码阅读 异步服务器
更多相关文章 www.anger6.com 还是通过官方的例子来讲述: grpc/src/examples/cpp/helloworld/greeter_async_server.cc: main函数很简单 int main(int argc, char** argv) { ServerImpl server; server.Run(); return 0; } ServerImpl...原创 2019-05-25 22:44:46 · 1715 阅读 · 0 评论 -
gRPC--GRPC IS WHAT?
http://www.anger6.com/?p=112原创 2019-05-19 21:19:52 · 320 阅读 · 0 评论 -
GRPC C++源码阅读(一)
从本章开始,将带领大家一起阅读grpc的c++代码,通过阅读源码,一方面能够让我们更好的理解我们的程序是如何运转的;另一方面,在遇到问题时也能够更快更好的定位解决。 我们从官方的HelloWorld例子开始: grpc\examples\cpp\helloworld\greeter_server.cc: 更多内容: http://www.anger6.com/?p=274 ...原创 2019-05-19 21:19:17 · 1783 阅读 · 0 评论 -
grpc---protocol buffer编码原理详解
http://www.anger6.com/?p=170原创 2019-05-19 21:18:26 · 762 阅读 · 0 评论
分享