微服务RPC性能翻倍?skrstop-components Feign+HTTP/2+Protostuff高性能序列化完全教程
【免费下载链接】skrstop-components基于springboot的常用功能封装包括通用响应、通用异常、数据库、redis、远程存储、常用自定义注解、多数据源等省去各种配置和通用配置开箱即用支持jdk8、jdk17项目地址https://gitcode.com/gh_mirrors/sk/skrstop-components点击查看免费下载做微服务的同学都知道服务之间默认的 JSON HTTP/1.1 调用又慢又占带宽。skrstop-components 是【基于 Spring Boot 的常用功能封装组件】其中的components-starter-feign-protostuff模块直接提供了 Feign HTTP/2 Protostuff 二进制序列化 Gzip 压缩的一站式高性能 RPC 方案引入一个 starter、改一个注解、开两个配置项就能让微服务间调用体积和耗时显著下降支持 JDK8 与 JDK17开箱即用。为什么默认的 Feign 调用不够快 先弄清楚性能瓶颈在哪才知道这个 starter 帮你解决了什么环节默认方式高性能方式本教程序列化JSON文本字段名重复传输Protostuff基于 Protobuf 的二进制格式传输压缩通常不压缩Gzip / Snappy / Lz4 可开关传输协议HTTP/1.1每连接一路请求HTTP/2多路复用、头部压缩客户端连接默认URLConnectionOkHttp 连接池默认200连接复用响应解析手动解包 Result 包装自动解包直接拿到 dataProtostuff 是 Google Protobuf 的 Java 增强实现不需要写 .proto 文件、不需要注解普通 POJO 直接就能二进制序列化。序列化后的报文比 JSON 小得多CPU 编解码也更快这就是RPC 性能翻倍的核心来源。项目结构与核心模块定位先看一眼整体布局见 README.md本教程聚焦这三个目录核心能力components-starter-feign-protostuff —— HTTP/2 自动配置、Protostuff 转换器、Feign 拦截器官方示例components-example-starters-cloud-feign —— 可直接运行的 Feign 客户端/服务端样例响应模型components-core-common ——Result、ListResult、PageListResult等统一响应一键接入三步完成配置第1步添加依赖在业务服务的 pom 中加入 starter依赖清单 已包含 spring-cloud-openfeign、feign-okhttp、protostuff 全家桶无需再手动引入dependency groupIdcom.skrstop.framework/groupId artifactIdcomponents-starter-feign-protostuff/artifactId version${skrstop.version}/version /dependency如果本地跑示例工程可克隆仓库后查看 application.yml 的完整参考配置git clone https://gitcode.com/gh_mirrors/sk/skrstop-components第2步开启 HTTP/2 与 OkHttp配置项汇总前缀skrstop.feign.config定义见 GlobalFeignProperties.java配置项默认值作用skrstop.feign.config.enable-http2false服务端客户端同时启用 HTTP/2skrstop.feign.config.gzip-compresstrue序列化后追加 Gzip 压缩skrstop.feign.config.scan-package无自动扫描 Feign 客户端包路径skrstop.feign.config.transfer-headertrue透传上游请求头如登录态skrstop.feign.config.stop-auto-remove-global-responsefalse关闭自动解包 Result功能一份典型配置skrstop: feign: config: enable-http2: true # 开启 HTTP/2 gzip-compress: true # 开启 Gzip 压缩 scan-package: com.your.api # 你的 Feign 接口包 spring: cloud: openfeign: ok-http: enabled: true # Feign 客户端走 OkHttp 连接池 server: http2: enabled: true # 服务端Tomcat启用 h2c 升级第3步把FeignClient换成ProtostuffFeignClient这是全篇唯一要改的代码。新注解是FeignClient的超集ProtostuffFeignClient.java 中所有属性一一别名映射额外提供三个微服务能力ProtostuffFeignClient(name order-service, path /order, local true) public interface OrderFeign { GetMapping(/{id}) OrderVo getOrder(PathVariable(id) Long id); }local true跳过网络直接本地调用适合服务合并场景要求 Controller 实现该 Feign 接口autoLocal true扫包自动判断是否可本地化注意会拖慢启动速度其余属性contextId、fallbackFactory、configuration等与原生 Feign 完全一致平滑迁移零成本它到底帮你做了什么原理速览 下面按请求链路拆解 starter 的自动装配逻辑方便排障① 协议标记拦截器—— FeignMarkAndHeaderInterceptor.java 在每个出站请求上自动打上use_feign: true、feign_protocol: protostuff标记和application/x-protobuf的 Content-Type服务端据此识别这是内部 Protostuff 调用同时按transfer-header配置透传请求头默认忽略 host、content-length 等7个头部常量见 FeignConst.java。② 二进制转换器—— ProtostuffHttpMessageConverter.java 替换默认 JSON 转换器调用ProtostuffUtil.serializeWithCompress完成序列化Gzip一步到位并支持自适应解包你声明返回ListString它内部自动按ListResult反序列化后只给你 data 部分声明PageData则自动转SimplePageData——接口方法直接写业务类型不用背ResultT外壳。③ HTTP/2 双引擎支持—— 服务端按容器自动生效TomcatHttp2TomcatAutoConfiguration.java 注册Http2Protocol做 h2c明文 HTTP/2升级UndertowHttp2UndertowAutoConfiguration.java 设置ENABLE_HTTP2选项客户端OkHttpAutoConfiguration.java 在开启 HTTP/2 时给 OkHttp 加H2_PRIOR_KNOWLEDGE协议并创建 200 连接、TTL 900 秒的连接池可调参见 FeignOkHttpProperties.java HTTP/2 多路复用让一条 TCP 连接并发跑多个请求消除 HTTP/1.1 的队头阻塞对一个订单页要调库存价格用户三个服务这类扇出场景提升明显。跟着官方示例跑一遍完整可运行示例位于 components-example-starters-cloud-feign客户端声明RemoteFeign.java —— 演示Result、ListResult、PageCollectionResult各类型 FallbackFactory熔断降级本地化调用RemoteFeignController.java ——local true时接口方法直接声明Integer、ListDemoInfo、void完全看不到响应包装类服务提供方与实体RemoteServerController.java、DemoInfo.java启动类ExampleStartersCloudFeignApplicationBootstrap.java配好scan-package后连EnableFeignClients都可以省示例中的 application.yml 还展示了 OkHttp 请求日志开关log-info-level-for-request调试期建议打开能直观看到每个请求的协议与耗时。常见问题与调优清单⚠️避坑指南按出现频率排序客户端返回类型转换报错服务端关闭了 feign 包装skrstop.response.config.support-feign false时客户端必须设置stop-auto-remove-global-response: true否则解包逻辑对不上会抛类型错误忘记换注解普通FeignClient不会打feign_protocol: protostuff标记服务端仍按 JSON 处理性能收益直接归零HTTP/2 没生效Tomcat 需同时配置server.http2.enabled: trueOkHttp 走 h2c 需skrstop.feign.config.enable-http2: true且ok-http.enabled: true压缩开销权衡小报文几百字节Gzip 压缩收益有限可用gzip-compress: false关掉Protostuff 本身已是二进制小体积连接池调优高并发扇出场景可上调spring.cloud.openfeign.ok-http.max-connections默认 200、time-to-live默认 900s性能对比参考典型 1KB JSON 订单对象相对值Protostuff 报文约缩小 60%~80% 体积叠加 Gzip 后网络字节数再降一档HTTP/2 连接池使高频小请求的 P99 延迟明显下降。翻倍来自序列化、压缩、协议三项叠加建议用项目自带的压测工具 components-util-stress 在自己的环境里实测。总结skrstop-components 的 feign-protostuff starter 把JSON 换 Protostuff、HTTP/1.1 升 HTTP/2、裸请求加压缩、响应自动解包这四件最耗时的事全部收敛成一个依赖 一个注解 几行配置。它的模块路径 components-starters/components-starter-feign-protostuff 与示例 components-examples/components-example-starters-cloud-feign 都值得精读配合仓库中 README.md 的模块总览你可以把数据库、Redis、对象存储等其他 starter 也一并纳入技术栈。升级前先对照 CHANGELOG.md 确认版本即可安全地将你的微服务 RPC 链路提速。赞分享【免费下载链接】skrstop-components基于springboot的常用功能封装包括通用响应、通用异常、数据库、redis、远程存储、常用自定义注解、多数据源等省去各种配置和通用配置开箱即用支持jdk8、jdk17项目地址https://gitcode.com/gh_mirrors/sk/skrstop-components点击查看免费下载相关推荐终极指南Guide-RPC-Framework序列化框架对比测试 - Kryo、Protostuff、Hessian性能大揭秘终极指南Guide RPC Framework序列化框架对比测试 Kryo、Protostuff、Hessian性能大揭秘 Guide RPC Framewo高性能Java序列化新范式Protostuff全解析高性能Java序列化新范式Protostuff全解析 你还在为Java序列化性能发愁 当系统吞吐量突破1000 TPS传统Java序列化Serializ5步构建开源机器人手臂从3D打印到智能感知的完整指南5步构建开源机器人手臂从3D打印到智能感知的完整指南 开源机器人手臂技术正在重塑机器人开发的门槛SO 100/SO 101系列作为标准开放平台为开发者和研硬件开发机器人智能硬件嵌入式上一篇AgentField Agent Mesh深度解析分布式AI Agent的服务发现与跨Agent调用原理下一篇TIL 仓库笔记ack 命令行工具的隐藏彩蛋 --bar 选项创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

游戏 Mod 里跑三模型分工:Step 5 Preview 的生产级踩坑实录

游戏 Mod 里跑三模型分工:Step 5 Preview 的生产级踩坑实录

游戏 Mod 里跑三模型分工:Step 5 Preview 的生产级踩坑实录 【免费下载链接】Step-5-Preview Step 5 Preview 是阶跃星辰面向智能体工作打造的旗舰模型。该模型在软件工程和专业知识工作领域均展现出前沿级性能,尤其在金融领域表现突出。 Step 5 Preview…

2026/10/16 3:01:59 阅读更多 →
GLM 0.9.9 头文件数学库在 JoyCon-Driver 姿态追踪中的应用:从 GLSL 约定到四元数旋转

GLM 0.9.9 头文件数学库在 JoyCon-Driver 姿态追踪中的应用:从 GLSL 约定到四元数旋转

驱动开发硬件开发 【免费下载链接】JoyCon-Driver A vJoy feeder for the Nintendo Switch JoyCons and Pro Controller 项目地址: https://gitcode.com/gh_mirrors/jo/JoyCon-Driver 点击查看 免费下载 本文以 JoyCon-Driver 仓库中内置的 GLM 0.9.9-a1&#xff0…

2026/10/16 3:01:59 阅读更多 →
换手机前,用留痕把微信聊天记录导出永久保存

换手机前,用留痕把微信聊天记录导出永久保存

换手机前,用留痕把微信聊天记录导出永久保存 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg …

2026/10/16 3:00:59 阅读更多 →

最新新闻

CTF音频隐写解题指南:从‘啊哒~’看振幅、频谱与相位三重分析

CTF音频隐写解题指南:从‘啊哒~’看振幅、频谱与相位三重分析

1. 从一道CTF杂项题名看起:为什么“啊哒~”不是卖萌,而是信号“BugkuCTF-Misc:啊哒~”——第一次在某高校CTF训练平台看到这个标题时,我下意识点开想看看是不是新出的搞笑彩蛋题。结果发现它被归在Misc(杂项&#xff0…

2026/10/16 3:52:10 阅读更多 →
CANN一站式算子开发工具:从工程生成到性能优化的完整实践

CANN一站式算子开发工具:从工程生成到性能优化的完整实践

做AI算子开发的朋友,应该都有过这种体验:需求一句话就说完了——“写个自定义算子”,真正动手却要在工程搭建、参数定义、调试、性能调优上来回折腾。如果恰好是在一款新的AI芯片上跑,工具链又不成熟,那痛苦程度直接翻…

2026/10/16 3:52:10 阅读更多 →
Win10下VMware安装CentOS 7.9并配置静态IP与外网访问

Win10下VMware安装CentOS 7.9并配置静态IP与外网访问

1. 为什么要在Win10上折腾CentOS 7.9虚拟机很多刚接触Linux运维或者后端开发的朋友,第一道拦路虎不是命令本身,而是“我该把系统装在哪”。直接把自己的主力Windows 10笔记本格掉装Linux,显然不现实——办公、聊天、看文档都还得靠它。退而求…

2026/10/16 3:52:10 阅读更多 →
深度学习为何持续流行:从特征学习到端到端训练的范式变革

深度学习为何持续流行:从特征学习到端到端训练的范式变革

1. 从一张老照片说起:深度学习到底改变了什么2012年之前,如果你在一场计算机视觉的学术会议上说“我们用一个端到端的神经网络把图像分类错误率砍掉一半”,大概率会被审稿人反问:“你的特征工程做了什么?为什么不用SIF…

2026/10/16 3:52:10 阅读更多 →
WinUI 3 快速上手指南:6 个里程碑做出 Fluent 风格的 Windows 应用

WinUI 3 快速上手指南:6 个里程碑做出 Fluent 风格的 Windows 应用

WinUI 3 快速上手指南:6 个里程碑做出 Fluent 风格的 Windows 应用 【免费下载链接】microsoft-ui-xaml WinUI: a modern UI framework with a rich set of controls and styles to build dynamic and high-performing Windows applications. 项目地址: https://g…

2026/10/16 3:52:10 阅读更多 →
PL/0编译器C语言实现:从词法分析到解释执行的完整教学级编译流程

PL/0编译器C语言实现:从词法分析到解释执行的完整教学级编译流程

简介:本资源是N.Wirth教授经典PL/0语言编译器的C语言实现源码,面向编译原理初学者、高校计算机专业学生及教学实践者,用于深入理解词法分析、语法分析、语义处理与目标代码生成等编译全流程核心机制。压缩包为11KB的ZIP格式,共含2…

2026/10/16 3:51:09 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →