Baidu-Rpc
文章平均质量分 61
INGNIGHT
这个作者很懒,什么都没留下…
展开
-
brpc profiler
【代码】brpc mac安装profiler。原创 2024-05-04 20:42:59 · 455 阅读 · 0 评论 -
brpc中http2 grpc协议解析
这个是固定长度的9字节帧头部,length是,3*8bit(3字节),type8bit,flags8bit,streamid(最高32位置,应该是个0,所以&0x8000000是0)解析完9字节帧头部,按照帧头中的type去解析,playload中的内容,假设type类型是header帧类型。playload是Header类型的帧,是hpack编码的。具体解析是Decode函数,按照hpack规则解析。先看下前4个bit为header类型帧哪种编码格式,如果是。解析frame header信息。原创 2024-05-03 21:26:30 · 345 阅读 · 0 评论 -
brpc基于延迟最大并发度限流
server.cppglobal.cpp。原创 2024-04-04 10:49:05 · 368 阅读 · 0 评论 -
boost::intrusive_ptr的用法
链接:https://www.jianshu.com/p/dd9701219b27。商业转载请联系作者获得授权,非商业转载请注明出处。作者:JasonLiThirty。原创 2024-01-30 23:29:48 · 537 阅读 · 0 评论 -
brpc负载均衡load balance和服务发现name servicing
2.2.3nsthread->Start,bthread_start_urgent创建一个协程RunThis->Run->_ns->RunNamingService。3.Channel:包含LoadBalancerWithNaming的指针_lb,new LoadBalancerWithNaming,lb->Init。1.SharedLoadBalancer(load_balancer.h):包含LoadBalancer指针_lb。原创 2024-01-21 22:28:08 · 885 阅读 · 0 评论 -
堆栈框架实现
原创 2023-05-20 17:31:08 · 84 阅读 · 0 评论 -
malloc 和free设计
原创 2021-06-18 22:56:55 · 167 阅读 · 0 评论 -
协程
#include <ucontext.h>#include <iostream>using namespace std;static ucontext_t ctx[3];static void func_1(void) { int a; // 执行点2,协程1在这里yield,pthread线程恢复执行协程2的任务函数,即令协程2 resume。 cout << "bbb" << endl; swapcontext(&ctx.转载 2021-04-19 19:50:14 · 117 阅读 · 0 评论 -
brpc TimerThread定时器
https://blog.csdn.net/guangyacyb/article/details/104067874https://zhuanlan.zhihu.com/p/60887347https://blog.csdn.net/baidu_41692782/article/details/109204009?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242原创 2021-04-16 22:20:21 · 385 阅读 · 1 评论 -
braft
https://www.sohu.com/a/225296499_355140https://baijiahao.baidu.com/s?id=1598642758115067753&wfr=spider&for=pchttps://github.com/maemual/raft-zh_cn/blob/master/raft-zh_cn.md#1-%E4%BB%8B%E7%BB%8D原创 2020-10-06 17:15:47 · 228 阅读 · 0 评论 -
高性能RPC框架BRPC核心机制分析
作者:tom-sun链接:https://zhuanlan.zhihu.com/p/113427004来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。1. 简介百度开源的RPC框架BRPC,以其高性能、低延迟、易用性等优势,使得其在高性能的C++开发领域非常受欢迎。为什么高性能、低延迟上能够有足够大的优势线程模型(Thread Module):使用bthread 用户态协程,结合N:M的调度模型,以及work-steal 抢占式调度实现;为bthrea.转载 2020-10-01 17:20:37 · 3365 阅读 · 0 评论 -
多线程模型
一、什么是线程1.在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”2.一切进程至少都有一个执行线二、进程与线程1.进程是资源竞争的基本单位2.线程是程序执行的最小单位3.线程共享进程数据,但也拥有自己的一部分数据 线程ID,一组寄存器,栈,errno,信号状态,优先级三、fork和创建新线程的区别1.当一个进程执行一个fork调用的时候,会创建出进程的一个新拷贝,新进程将拥有它自己的变量和它...原创 2020-09-12 12:27:01 · 403 阅读 · 0 评论 -
brpc线程模型学习
转载:https://blog.csdn.net/okiwilldoit/article/details/82755526bthread是brpc使用的M:N线程库,目的是在提高程序的并发度的同时,降低编码难度,并在核数日益增多的CPU上提供更好的scalability和cache locality。”M:N“是指M个bthread会映射至N个pthread,一般M远大于N。由于linux当下的pthread实现(NPTL)是1:1的,M个bthread也相当于映射至N个LWP。bthread的转载 2020-09-09 22:06:44 · 803 阅读 · 0 评论 -
协程分析之 context 上下文切换
转载:https://juejin.im/entry/6844903448849154061协程现在已经不是个新东西了,很多语言都提供了原生支持,也有很多开源的库也提供了协程支持。最近为了要给tbox增加协程,特地研究了下各大开源协程库的实现,例如:libtask, libmill, boost, libco, libgo等等。他们都属于stackfull协程,每个协程有完整的私有堆栈,里面的核心就是上下文切换(context),而stackless的协程,比较出名的有protothreads,转载 2020-09-08 20:42:45 · 1048 阅读 · 0 评论 -
多核环境下pthread调度执行bthread的过程
调度执行bthread的主要数据结构一个pthread调度执行私有TaskGroup的任务队列中各个bthread的过程调度执行bthread的主要数据结构在一个线上环境系统中,会产生大量的bthread,系统的cpu核数有限,如何让大量的bthread在有限的cpu核心上得到充分调度执行,实现全局的最大并发主要是由TaskGroup对象、TaskControl对象实现的。每一个TaskGroup对象是系统线程pthread的线程私有对象,它内部包含有任务队列,并控制pthread如何执行任务队转载 2020-09-08 14:12:22 · 1510 阅读 · 0 评论 -
ucontext-人人都可以实现的简单协程库
1.干货写在前面协程是一种用户态的轻量级线程。本篇主要研究协程的C/C++的实现。首先我们可以看看有哪些语言已经具备协程语义:比较重量级的有C#、erlang、golang* 轻量级有python、lua、javascript、ruby 还有函数式的scala、scheme等。c/c++不直接支持协程语义,但有不少开源的协程库,如:Protothreads:一个“蝇量级” C 语言协程库libco:来自腾讯的开源协程库libco介绍,官网coroutine:云风的一个C语言同步协程库,转载 2020-09-08 12:28:35 · 595 阅读 · 0 评论 -
bthead基础
线程执行协程与线程调用函数的不同协程的原理与实现方式系统线程执行多个协程时的内存布局变化过程brpc的bthread任务定义线程执行协程与线程调用函数的不同一个pthread系统线程执行一个函数时,需要在pthread的线程栈上为函数创建栈帧,函数的形式参数和局部变量都分配在栈帧内。函数执行完毕后,按逆序销毁函数局部变量,再销毁栈帧。假设有一个线程A开始执行下面的foo函数:void bar(int m) { // 执行点1 // ...}void foo(int a, int b转载 2020-09-08 10:44:02 · 383 阅读 · 0 评论 -
brpc学习:bvar
一.介绍https://www.bookstack.cn/read/brpc-0.9.7-zh/a070abbea9bcb45d.mdbvar是多线程环境下的计数器类库,方便记录和查看用户程序中的各类数值,它利用了thread local存储减少了cache bouncing,相比UbMonitor(百度内的老计数器库)几乎不会给程序增加性能开销,也快于竞争频繁的原子操作。brpc集成了bvar,http接口下的/vars可查看所有曝光的bvar,/vars/VARNAME可查阅某个bvar,在原创 2020-09-05 22:24:38 · 645 阅读 · 0 评论 -
brpc搭建、编译和使用
前面介绍了brpc的理解,这里给出brpc官方的搭建过程,以及提供的测试用例,对brpc的使用有一个宏观的理解。PS:这里必须再次称赞百度工程师门,brpc开源的文档非常的丰富,仅仅是看文档都受益匪浅,同时提供了各个系统,各个版本的安装编译过程,安装编译文档可以通过以下链接直接查看:https://github.com/brpc/brpc/blob/master/docs/cn/getting_started.md这里给出本人成功安装编译的过程,供大家参考。前期准备:brpc需要依赖三个开源库原创 2020-09-04 20:31:08 · 3626 阅读 · 2 评论 -
Baidu-Rpc中Pb结构转为Json
1.C++动态创建对象(类似java反射) 2.pb结构中repeated,Extension,如何将pb结构转化为string类型(baidu-rpc中有库json2pb文件,可以看源码学习一下) 3.Pb结构中Extension字段使用 4.Pb中Descriptor,Reflection如何实现动态创建对象 https://developers.google.com/protocol-原创 2017-09-28 19:45:02 · 1036 阅读 · 0 评论