这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
一、本堂课重点内容:
- hertz讲解
- 项目模块划分
- 个人小结
本文通过项目来进行案例讲解。
二、hertz讲解
关于后端服务框架选用kitex和hertz进行协同处理,抖声App通过发送http请求到hertz-server后进行路由分发,通过grpc协议调用kitex-client的请求,kitex-server通过解析client请求进行业务处理,最后通过上述路径返回,抖声App得到响应数据进行解析,App得以顺利工作。使用字节自研的kitex和hertz进行后端开发有着其独特的优势,同时也便于开发,优点包括但不限于:稳定可靠,高性能,分布式等特点。
本项目选择HTTP服务框架为Hertz,它是一个 Golang 微服务 HTTP 框架,具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。 本项目对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,因此选择Hertz 作为HTTP服务框架。
Hertz的架构设计如下图所示(www.cloudwego.io/zh/docs/her… 最底层传输层是字节自研的Netpoll池、Go Net等,因此对于普通HTTP请求,性能得到显著提升,有着基础的保障。而应用协议,有HTTP1.1等多协议支持,因为项目缘故,本项目采用的是HTTP1.1。而路由层,能够满足大部分的需求。最后是应用层,分为服务端和客户端,服务端通过建立连接,与rpc服务和前台应用进行对接,具体业务则是服务端通过调用客户端进行实现。客户端完成中间件、服务发现、回调等功能。因此Hertz首先满足基础HTTP功能的基础上,还对于一些影响性能例如传输层、上下文传输的细节,做了充足的优化,更加体现高易用性、高性能、高扩展性等特点。
同时对于我们开发者来说,Hertz的代码生成器对于开发人员极其友好,通过protoc、thrift等文件进行代码生成,使得开发人员能够将经历聚焦在业务逻辑实现上,而不是繁琐的操作调用上。
三、项目模块划分
- 项目模块设计依据官方给的接口文档进行设计,分别为基础接口、互动接口以及社交接口 (www.apifox.cn/apidoc/shar…
-
-
基础功能有:视频模块、用户模块
- 视频模块主要作用是视频播放、上传,包含接口有视频流Feed、视频上传以及视频发布列表
- 用户模块主要作用是权限、信息管理,包含接口有注册、登陆以及用户信息
-
他们共同支撑进阶功能模块,包括:社交模块以及互动模块
- 社交模块主要作用是实现关注、聊天功能,包含关注、粉丝列表以及好友聊天接口
- 互动模块主要作用是实现关注、聊天功能,包含点赞评论、点赞列表以及评论列表接口
-
四、个人小结
本文是接着上文对于rpc框架使用hertz进行改在的讲解,后续会使用本人负责的api-gateway进行说明讲解。