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

相关推荐
五步晦暝26 分钟前
【Python 集合 Set 】全面学习指南
开发语言·python
Dovis(誓平步青云)27 分钟前
破解C/C++内存分配与管理:内存对象模型硬核剖析
开发语言·c++·内存管理·解读
星释5 小时前
Mac Python 安装依赖出错 error: externally-managed-environment
开发语言·python·macos
小迅先生5 小时前
AI开发 | Web API框架选型-FastAPI
开发语言·python·fastapi
五花肉村长6 小时前
Linux-读者写著问题和读写锁
linux·运维·服务器·开发语言·数据库·visualstudio
biubiubiu07066 小时前
windows中JDK切换版本
java·开发语言
ALex_zry7 小时前
Go核心特性与并发编程
开发语言·后端·golang
yuanpan7 小时前
CMake创建C++项目与npm创建nodejs项目异曲同工
开发语言·c++·npm
南瓜胖胖7 小时前
R语言科研编程-柱状图
开发语言·r语言
FAQEW8 小时前
介绍一下什么是反射(面试题详细讲解)
java·开发语言·反射