基于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