Hertz,是字节内部开源的http框架,具有高易用性、易扩展、低时延等特点,是一个可以代替Gin的企业级 HTTP 框架。下面简单看一下Hertz的启动方式和引擎。
type Hertz struct {
*route.Engine
// Used to receive signals for graceful shutdown
signalWaiter func(err chan error) error
}
Hertz引擎:
实体为Hertz结构体,一共两个变量:核心引擎 route.Engine 和接收关闭信号的变量方法。
初始化:
提供 New() 和 Default() 方法来生成引擎
func New(opts ...config.Option) *Hertz {
options := config.NewOptions(opts)
h := &Hertz{Engine: route.NewEngine(options)}
return h
}
- Default() 使用 Recovery 中间件,会 recover 导致程序溃奔的panic
func Default(opts ...config.Option) *Hertz {
h := New(opts...)
h.Use(recovery.Recovery())
return h
}
- New() 没有任何配置的引擎
启动服务:
Hertz提供Spin方法来启动服务,不建议直接用run,原因如下
- Spin 因为其会将服务注册到注册中心,使用signalWaiter监视错误,并支持优雅退出。而run不会。
func main() {
h := server.New()
h.Spin() // 使用signalWaiter监视错误
}
func main() {
h := server.New()
// Start with Run function
if err:= h.Run (); err != Nil {
panic(err) // panic
}
}