微服务的通信方式——网关 & RPC & Sidecar

可以简单理解为client 调用 server端函数

bthread是一个线程库

N指的是系统级的线程,也叫bthread的一个worker线程

M是指用户态的一个线程

bthread中有两种调度策略,

第一种是worker内部的调度,比如第一个圈中两个线程不停的循环调动,这种策略locality比较好

第二种是worker之间的调度, 比如某一个worker被其中一个线程阻塞了,可以把其中的线程调度到别的worker中去执行,这种策略提升scalability

绿色的代表用户可以扩展的一些策略,黄色代表框架,基本不需要改动

最底层是socket层,负责所有数据的读写,支持加密,RDMA

倒数第二层是协议层,分为三层,首先是协议格式,下来是压缩层吗,下来是认证层(非必须)

再往上是client 和 server,channel可以分组分库

数据从client端,从上往下流动,再从server端 从下往上流动。

经验分享 程序员 微信小程序 职场和发展