Go-RPC关键指标分析与企业实践

1.稳定性-保障策略

熔断:保护调用方

限流:保护被调用方

超时控制:避免浪费

2.稳定性-请求成功率(用重复发送 负载均衡)

3.稳定性-长尾请求(用备份请求)

4.稳定性-注册中间件

易用性:开箱即用 周边工具 支持protobuf和thrift 生成服务代码脚手架

扩展性:Middleware-option-编解码层-协议层-网络传输层-插件扩展

观测性:Log Metric Tracing 内置观测性服务

高性能:高吞吐 低延迟

Kitex问题:

自研网络库Netpoll的原因:

因为原生库无法感知连接状态

原生库还存在goroutine暴涨的风险

kitex扩展性的设计:

交互方式:ping-pong/streaming/oneway

编解码:thrift/protobuf

应用层:HTTP2

传输层:TCP

性能优化-网络库优化:

调度优化:重用goroutine

LinkBuffer:减少GC

Pool:内存池和对象池

性能优化-编解码优化:

Codegen

合并部署:微服务太微了,传输和序列化开销越来越大。可以将亲和性强的服务实例尽可能调度在同一个物理机,能够优化成IPC调用。

相关推荐
labview_自动化7 分钟前
RPC和Restful
网络协议·rpc·restful
Larry_Yanan9 分钟前
QML学习笔记(五十二)QML与C++交互:数据转换——时间和日期
开发语言·c++·笔记·qt·学习·ui·交互
歪歪10021 分钟前
详细介绍一下“集中同步+分布式入库”方案的具体实现步骤
开发语言·前端·分布式·后端·信息可视化
yaoxin52112344 分钟前
229. Java 集合 - 操作集合中的多个元素(批量操作)
java·开发语言·python
在人间负债^1 小时前
从Python到仓颉:核心项目内容迁移实践
开发语言·python·鸿蒙·仓颉
HSJ01701 小时前
Aviator中使用BigDecimal进行高精度计算
java·开发语言·bigdecimal·aviator
weixin_307779131 小时前
利用 AWS Lambda 与 EventBridge 优化低频 Java 作业的云计算成本
java·开发语言·云原生·云计算·aws
CheungChunChiu1 小时前
从 Rust 到 Flutter:嵌入式图形与构建工具全景指南
开发语言·flutter·rust
满天星83035771 小时前
【C++】智能指针
c语言·开发语言·c++·visual studio
hj10431 小时前
php上传企业微信附件的方法
开发语言·php·企业微信