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调用。

相关推荐
3GPP仿真实验室11 分钟前
【Matlab源码】6G候选波形:OFDM-IM 增强仿真平台 DM、CI
开发语言·matlab·ci/cd
devmoon14 分钟前
在 Polkadot 上部署独立区块链Paseo 测试网实战部署指南
开发语言·安全·区块链·polkadot·erc-20·测试网·独立链
lili-felicity14 分钟前
CANN流水线并行推理与资源调度优化
开发语言·人工智能
沐知全栈开发15 分钟前
CSS3 边框:全面解析与实战技巧
开发语言
island131425 分钟前
CANN GE(图引擎)深度解析:计算图优化管线、内存静态规划与异构 Stream 调度机制
c语言·开发语言·神经网络
曹牧30 分钟前
Spring Boot:如何在Java Controller中处理POST请求?
java·开发语言
浅念-33 分钟前
C++入门(2)
开发语言·c++·经验分享·笔记·学习
WeiXiao_Hyy33 分钟前
成为 Top 1% 的工程师
java·开发语言·javascript·经验分享·后端
User_芊芊君子39 分钟前
CANN010:PyASC Python编程接口—简化AI算子开发的Python框架
开发语言·人工智能·python
Max_uuc1 小时前
【C++ 硬核】打破嵌入式 STL 禁忌:利用 std::pmr 在“栈”上运行 std::vector
开发语言·jvm·c++