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

相关推荐
张丶大帅3 分钟前
【走进Golang】
开发语言·后端·golang
Sheep Shaun5 分钟前
深入理解红黑树:从概念到完整C++实现详解
java·开发语言·数据结构·c++·b树·算法
楼田莉子7 分钟前
CMake学习:入门及其下载配置
开发语言·c++·vscode·后端·学习
2501_9445215918 分钟前
Flutter for OpenHarmony 微动漫App实战:列表项组件实现
android·开发语言·javascript·flutter·ecmascript
【赫兹威客】浩哥19 分钟前
【赫兹威客】Redis安装与验证教程
开发语言·php
froginwe1119 分钟前
SVG 简介
开发语言
宵时待雨21 分钟前
数据结构(初阶)笔记归纳7:链表OJ
c语言·开发语言·数据结构·笔记·算法·链表
无心水25 分钟前
8、吃透Go语言container包:链表(List)与环(Ring)的核心原理+避坑指南
java·开发语言·链表·微服务·架构·golang·list
源代码•宸25 分钟前
Golang原理剖析(Go语言垃圾回收GC)
经验分享·后端·算法·面试·golang·stw·三色标记
bb加油28 分钟前
springboot3.2.4集成grpc-starter
rpc·springboot