基于Hertz的微服务落地实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 基于 Hertz 的微服务
落地实践
初泽良-字节跳动西瓜视频研发工程师
2024/05/25
2. CONTENT
目 录
01.
西瓜视频微服务架构设计
02. Hertz框架介绍
03. Hertz迁移过程、踩坑经验
04. 落地Hertz后的收益
3. 01
西瓜视频微服务架构设计
4. 西瓜视频是一个开眼界、涨知识的视频 App(Informative Video Platform),
作为国内领先的中长视频平台,它源源不断地为不同人群提供优质内容,让人们看
到更丰富和有深度的世界,收获轻松的获得感,点亮对生活的好奇心。
同时,西瓜视频鼓励多样化创作,帮助人们轻松地向全世界分享视频作品,创造更
大的价值。目前平台月活跃创作人超过 320 万,月活跃用户数超过 1.8 亿,日均
播放量超过 40 亿,用户平均使用时长超过 100 分钟。
5. C 端场景多,业务域划分较细
服务划分与解耦:单一职责原则、领域驱动设计
6. 高QPS:关注性能优化
7. 西瓜视频
8. 02
Hertz框架介绍
9. Hertz
10. Why Hertz
极致的性能 易用性
丰富的文档体系 稳定性
低廉的迁移成本 丰富的扩展能力
11. 性能
12. 性能优化: Context Pool
13. 性能优化: Context Pool
14. 性能优化: string -> []byte
[]byte 支持修改,不需要重新申请内存
[]byte 使用后可以像以下一样将其长度置为0以表示清理,
这样可以用来复用,避免下次使用重新申请。
使用内存对齐的技巧来处理 bytes 与 string 的转化
15. 易用性
Hertz 提供了一个简单易用的命令行工具 Hz,用户只需提供一个 IDL,根据定义好的接口信息,Hz 便可以一键生
成项目脚手架,开箱即用使用 Hertz;Hz 也提供更新能力,用户的 IDL 如果发生改变,Hz 可以更新脚手架。 目
前 Hz 支持了 Thrift 和 Protobuf 两种 IDL 定义。命令行工具内置丰富的选项,可以根据自己的需求使用。
16. 稳定性
基于线上流量特征
的随机模拟
01
严格关联发布流程 05 02
7*24 小时监控大盘 04 03
核心 API 全覆盖
适配不同的线上
部署环境
17. 稳定性
单元
测试
集成
测试
性能
测试
模糊
测试
18. 扩展性
Hertz 采用了分层设计,提供了较多的接口以及默认的扩展实现,用户也可以自行扩展。同时得益
于框架的分层设计,框架的扩展性也会大很多。
• 日志扩展
• 监控扩展
• 服务注册与发现扩展
• 网络库扩展
• 协议扩展
• Response 的 Writer扩展
19. 03
Hertz迁移过程、踩坑经验
20. 迁移过程
帕累托原则:选择成本大头服务
21. 迁移过程
1.SDK库适配
22. 迁移过程
2.执行一键迁移脚本
23. 迁移过程
3.手动修改
Middleware
参考 Gin —> Hertz API 对照表
24. 西瓜视频迁移Hertz踩坑经验
1.Query tag 缺失导致请求参数解析失败
25. 西瓜视频迁移Hertz踩坑经验
2.未配置looseZero模式导致绑定数值类型报错
26. 04
落地 Hertz 后的收益
27. 收益
28. THANKS