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

相关推荐
在放️1 小时前
Python 爬虫 · 第三方代理接入与合规使用
开发语言·爬虫·python
KANGBboy1 小时前
java知识五(继承)
java·开发语言
c++之路1 小时前
Bazel C++ 构建系列文档(三):构建第一个 C++ 项目
开发语言·c++
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第117题】【并发篇】第17题:线程有几种状态,之间如何转换?
java·开发语言·面试
聚名网2 小时前
域名net,com,cn有区别吗?有哪些不同呢?
服务器·开发语言·php
牛油果子哥q2 小时前
STL set与map底层精讲,红黑树适配原理、有序去重特性、迭代器遍历、API实战与面试核心考点全解
开发语言·数据结构·c++·面试
foundbug9992 小时前
直流电机 PID 速度控制 MATLAB 仿真程序
开发语言·matlab
Tian_Hang3 小时前
C++原型模式(Protype)
开发语言·c++·算法
天天讯通3 小时前
OKCC 呼叫中心安全性能全解析:技术防护与管理措施指南
大数据·开发语言·网络·人工智能·安全·语音识别
xufengzhu4 小时前
第三方 Python 库 redis-py + hiredis 的使用
开发语言·redis·python