《字节跳动-段潇涵-深入浅出 Node.js RPC.pdf》由会员分享,可在线阅读,更多相关《字节跳动-段潇涵-深入浅出 Node.js RPC.pdf(41页珍藏版)》请在三个皮匠报告上搜索。
1、深浅出 Node.js RPC段潇涵 Node.js 研发程师个简介段潇涵在字节负责 Node.js Infra 程向的作,主要致于建设 Node.js 相关的基建:公司内框架,适配公司基建的 Node.js 基础库、私有 NPM 仓库等。录 RPC 简介 Node.js RPC 技术架构 RPC 性能优化过程 Q&ARPC 简介 RPC 是什么 RPC 业界案 RPC 常场景RPC 是什么RPC 是 Remote Procedure Call 的简称,是种通的络调式,的是能像在本地调法样调不同服务的法,具备跨语、性能的特点,泛应于后端服务之间的通信。客户端服务端服务发现代码成序列化代码调代码
2、协议层接定义语(IDL)序列化/反序列化传输层HTTPTCP RPC 业界案 DUBBO(阿 B2B 开源)主要 protobuf 协议,也持 hessian 等协议;基于 TCP 连接;SOFA-RPC(蚂蚁开源,源于阿淘系的 hsf)主要 hessian,也持 protobuf 协议;基于 TCP 连接;GRPC(Google)使 ProtoBuf 协议;基于 HTTP2;THRIFT(Meta)使 Thrift 协议;基于 TCP 连接;RPC 常场景RPC 常在微服务架构中,撑各服务间通信,与 HTTP 相的些优势 更快且更省空间 更强的契约Node.js RPC 技术架构 Handl
3、e ConfigCenter Middleware Connection ProtocolNode.js RPC 技术架构RPC 的架构设计中主要有五个概念(在 Client/Server 中通),分别是:Handle,ConfigCenter,Middleware,Connection,Protocol。Node.js RPC 技术架构-HandleHandle 是 Client/Server 的下级模型,是 RPC Client 调或者 RPC Server 被触发调的,封装了次调/被调的执过程,通过中间件的洋葱模型将调及触发调的流程进组合。IDL 中的每个 method,都会实例化个 H
4、andle 实例。Node.js RPC 技术架构-ConfigCenter顾名思义,ConfigCenter 就是配置中的模型,于管理 RPC 的动态配置,如:超时配置、失败重试策略、安全策略、压测开关 等等,ConfigCenter 分成了两个版本 v1 和 v2,两个版本读取源不同:V1:基于 etcd 实现;V2:基于 service mesh 实现配置的覆盖优先级:应配置 配置中 默认配置。Node.js RPC 技术架构-MiddlewareRPC 中的中间件跟 Koa.js 是相似的设计,差异是有 initContext、execute、releaseContext 三个阶段,于
5、各个中间件对上下做初始化操作、执、对上下做释放操作。RPC 通过中间件能持了次请求/响应中的 trace、metrics、失败重试、熔断等能。Node.js RPC 技术架构-ConnectionConnection 是连接的抽象模型,具体能在 Client 和 Server 中有些许不同,主要对 socket 做了层封装,提供 API 进数据的写或者读取,也提供了读写加锁、缓冲写、连接池等能,主要分成以下种类型:tcp-consul:consul 服务发现的 tcp connection 对象(本地或者未开 mesh 出流量);tcp-mesh:固定连 mesh 的 tcp connecti
6、on 对象;tcp-native:读取 servers 配置进硬负载,mesh 环境下效;http-mesh:连 mesh 的 http connection 对象;http-native:读取 servers 配置进硬负载;Node.js RPC 技术架构-Connection对下游 RPC 服务发起个请求的时候,会通过连接池分配个空闲的连接(如果没有则创建个),然后再使该连接进通信,此时这个连接会被占。此时如果再对同个服务发起同个请求,将会重新分配个新的连接。Node.js RPC 技术架构-Connection Timeout:总超时 Connect Timeout:连接超时 Read/