第五届青训营后端第六天学习笔记| 青训营笔记

113 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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等文件进行代码生成,使得开发人员能够将经历聚焦在业务逻辑实现上,而不是繁琐的操作调用上。

图片.png

三、项目模块划分

  • 项目模块设计依据官方给的接口文档进行设计,分别为基础接口、互动接口以及社交接口 (www.apifox.cn/apidoc/shar…
    • 基础功能有:视频模块、用户模块

      • 视频模块主要作用是视频播放、上传,包含接口有视频流Feed、视频上传以及视频发布列表
      • 用户模块主要作用是权限、信息管理,包含接口有注册、登陆以及用户信息
    • 他们共同支撑进阶功能模块,包括:社交模块以及互动模块

      • 社交模块主要作用是实现关注、聊天功能,包含关注、粉丝列表以及好友聊天接口
      • 互动模块主要作用是实现关注、聊天功能,包含点赞评论、点赞列表以及评论列表接口

四、个人小结

本文是接着上文对于rpc框架使用hertz进行改在的讲解,后续会使用本人负责的api-gateway进行说明讲解。

五、引用参考:

1.www.cloudwego.io/zh/docs/her… 2.github.com/paigu1902/d…