这是我参与「第五届青训营 」伴学笔记创作活动的第 26 天
RPC关键指标
1. 稳定性-保障策略
- 熔断:保护调用方,防止被调用的服务出现问题而影响到整个链路
- 限流:保护被调用方,防止大流量把服务压垮
- 超时控制:避免浪费资源在不可用节点上
2. 稳定性-请求成功率
3. 稳定性-长尾请求
长尾请求一般是指明显高于均值响应时间的那部分占比较小的请求,业界关于延时有一个常用的P99标准,P99单个请求响应耗时从小到大排列,顺序处于99%的位置的值即为P99值,后面的1%可以认为是长尾请求,在较复杂的系统中,长尾请求是存在的。造成原因非常多,如网络抖动,GC,系统调度。
4. 稳定性-注册中间件
5. 易用性
6. 扩展性
7. 观测性
8. 高性能
企业实践
- core是他的主干逻辑,定义了框架的层次结构、接口、还有接口的默认实现,如中间蓝色部分所示,最上面的client和server是对用户暴露的,client/server option的配置都是在这两个package中提供的,还有client/server的初始化,虽然在初始化client时调用的时kitex_gen中的方法,其实这是对client和server的封装
- client/server下面的是框架治理层面的功能模块和交互元信息,remote是与对端交互的模块,包括编解码和网络通信
- 右边绿色的byted是对字节内部的扩展,集成了内部的二房库还有与字节相关的非通用实现,byted部分是生成代码中初始化client/server是通过suite集成过来的,这样实现的好处是与字节内部特性解耦,方便后续开源拆分。
- 左边的tool是与生成代码相关的实现,生成代码工具就是编译这个包得到的,里面有idl解析、校验、代码生成、插件支持、自更新等