08 字节后端训练营伴学直播 | 青训营笔记

69 阅读2分钟

李龙-hertz分层设计

hertz是什么?

是字节内部超大规模使用的高性能Golang HTTP框架

内部支持17k+的业务服务、峰值QPS超过7000万

Hertz

Hz:Hertz对外提供的代码生成工具(脚手架)(Scaffold)(Pb)

Common:提供的通用实现类。Log:打印框架内部错误 Tracing:面对内部关键信息。

Metrics:打点监控,Test:写单元测试

应用层:server和client。

路由层:

协议层:interface 方式解耦。可以通过HTTP/1.1 /2 /3 和Websocket协议。也可以进行自定义协议

传输层:自研的类库

Hertz提供了Hz脚手架工具,可以根据接口定义自动化生成项目骨架,帮助业务聚焦核心逻辑。(查看Hertz的官方文档)

网络层拓展

1、基于连接的网络库 CloudWeGo开源的Netpoll(不支持windows)。Golang原生的网络库net(windows默认使用)

2、基于流的网络库:quic-go网络库(主要是为了Http3)

高性能benchmark

这个就是论证不同的几种内容的比较,

字节服务网络依靠CloudWeGo抗住流量洪峰!

cpu开销 4k->2.5k

Goroutine数量 6w->不到100个

火焰图:框架开销几乎消失

(!重要)答疑:

redis学习推荐:redis源码实战,《redis设计与实现》很老但是很实在。

基础会比较重要一些。

多关于一些github和一些前沿、论坛。这些内容会比较新一些,也会比较贴合实际。

锻炼代码能力:crud,看常见的项目,自己做一个类似的。要持续的迭代和去写。要把自己的代码开源出去,给更多的人去了解和学习、交流。

自己做一个业务逻辑很简单、很简陋的项目。但是自己要经常去迭代,并且经常去思考。

书籍:豆瓣看下评分,经典的书籍看一本就够了。

比起语言和框架。语言的基础更重要一些。

计算机网络,tcp三次握手。看下操作的过程。不能纯看书,要结合实际。

《计算机...卷一卷二卷三》。基础比什么都重要,crud相对来说不太重要。

我个人什么都比较喜欢看一些,这些对我用处不太大。herz对我的吸引力不太大。

我个人现在做的工作和程序员的关系不大。主要喜欢的是青训营的那种纯粹和陪伴。工作是工作,而下班以后,看看课程是个人的兴趣。或许我未来不会从事程序员相关的职业,但是我真的很希望写代码,也希望以后有机会能当一个程序员。期待以后和各位优秀的人公事!