当前位置: 首页 > 软件库 > 程序开发 > 微服务框架 >

Hertz

Golang 微服务 HTTP 框架
授权协议 Apache 2.0
开发语言 Google Go
所属分类 程序开发、 微服务框架
软件类型 开源软件
地区 国产
投 递 者 鲜于承基
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Hertz[həːts] 是字节跳动开源的一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttpginecho 的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。 如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择。

框架特点

  • 高易用性

    在开发过程中,快速写出来正确的代码往往是更重要的。因此,在 Hertz 在迭代过程中,积极听取用户意见,持续打磨框架,希望为用户提供一个更好的使用体验,帮助用户更快的写出正确的代码。

  • 高性能

    Hertz 默认使用自研的高性能网络库 Netpoll,在一些特殊场景相较于 go net,Hertz 在 QPS、时延上均具有一定优势。关于性能数据,可参考下图 Echo 数据。  

  • 关于详细的性能数据,可参考 https://github.com/cloudwego/hertz-benchmark

  • 高扩展性

    Hertz 采用了分层设计,提供了较多的接口以及默认的扩展实现,用户也可以自行扩展。同时得益于框架的分层设计,框架的扩展性也会大很多。目前仅将稳定的能力开源给社区,更多的规划参考 RoadMap

  • 多协议支持

    Hertz 框架原生提供 HTTP1.1、ALPN 协议支持。除此之外,由于分层设计,Hertz 甚至支持自定义构建协议解析逻辑,以满足协议层扩展的任意需求。

  • 网络层切换能力

    Hertz 实现了 Netpoll 和 Golang 原生网络库 间按需切换能力,用户可以针对不同的场景选择合适的网络库,同时也支持以插件的方式为 Hertz 扩展网络库实现。

框架性能

性能测试只能提供相对参考,工业场景下,有诸多因素可以影响实际的性能表现。

我们提供了 hertz-benchmark 项目用来长期追踪和比较 Hertz 与其他框架在不同情况下的性能数据以供参考。

相关项目

  • Netpoll: 自研高性能网络库,Hertz 默认集成
  • Hertz-Contrib: Hertz 扩展仓库,提供中间件、tracer 等能力
  • Example: Hertz 使用例子
  • 在 Hertz 的服务发现中可以进行配置使用负载均衡来实现服务高可用性与流量均衡。 Hertz Hertz 是一个超大规模的企业级微服务 HTTP 框架,具有高易用性、易扩展、低时延等特点。 Hertz 默认使用自研的高性能网络库 Netpoll,在一些特殊场景中,相较于 go net,Hertz 在 QPS、时延上均具有一定优势。 在内部实践中,某些典型服务,如框架占比较高的服务、网关等服务,迁

  • 前言 在上一篇文章中已经解读了 Hertz 中服务注册的实现,在这一篇文章中我们会重点解读 Hertz 的服务发现部分。 Hertz Hertz 是一个超大规模的企业级微服务 HTTP 框架,具有高易用性、易扩展、低时延等特点。 Hertz 默认使用自研的高性能网络库 Netpoll,在一些特殊场景中,相较于 go net,Hertz 在 QPS、时延上均具有一定优势。 在内部实践中,某些典型服务

  • Hertz Hertz 是一个超大规模的企业级微服务 HTTP 框架,具有高易用性、易扩展、低时延等特点。 Hertz 默认使用自研的高性能网络库 Netpoll,在一些特殊场景中,相较于 go net,Hertz 在 QPS、时延上均具有一定优势。 在内部实践中,某些典型服务,如框架占比较高的服务、网关等服务,迁移 Hertz 后相比 Gin 框架,资源使用显著减少,CPU 使用率随流量大小降低

  • 前言 在参与 Hertz 框架的开发迭代过程中,对 Hertz 的主库也越来越熟悉。接下来的几篇文章我将分别解析 Hertz 的服务注册、服务发现和负载均衡拓展,最后会使用适配于 Hertz 的 etcd 拓展进行实战,欢迎大家关注。 Hertz Hertz 是一个超大规模的企业级微服务 HTTP 框架,具有高易用性、易扩展、低时延等特点。 Hertz 默认使用自研的高性能网络库 Netpoll,

  • 版本预配置 VMware 配置 CentOS 7 64位,参考 链接 PS : swap分区设置 3G 左右 Golang 下载 go1.17.linux-amd64.tar.gz PS : 不要下载 go 1.20 的新版本,因为有些东西暂不支持会报错1 安装 Golang 将 go 1.17 上传到 虚拟机的 /home/music 目录下 删除任何以前的 Go 安装(如果存在),然后将 go

  • 前言 作为一个接触开源社区快要一年的准大二生,对开源社区进行贡献的同时自己也想要造一个属于自己的框架—— goffee ,在边学边写的过程中发现了很多自己不足,正巧 CSG 正在举行解析 Hertz 源码的活动,就趁着这个机会学习一下企业级的框架内部的实现并给我自己的框架提供一点思路。 Hertz Hertz 是一个超大规模的企业级微服务 HTTP 框架,具有高易用性、易扩展、低时延等特点。 He

 相关资料
  • 本文向大家介绍微服务哪些框架相关面试题,主要包含被问及微服务哪些框架时的应答技巧和注意事项,需要的朋友参考一下 Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点。阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的,比如:JStorm 捐赠给 Apache 并加入 Apache 基金会等,为中国互联网人争足了面子,使得阿里巴巴在国人眼里已经从电商升级为一

  • ketchup 是一个基于 dotnet core 的微服务框架。网关:兼容 kong,rpc:grpc支持远程调用。

  • Adnc 是一个轻量级的 .Net Core 微服务开发框架,同时也适用于单体架构系统的开发。支持经典三层与DDD架构开发模式、集成了一系列主流稳定的微服务配套技术栈。

  • Seata 的事务上下文由 RootContext 来管理。 应用开启一个全局事务后,RootContext 会自动绑定该事务的 XID,事务结束(提交或回滚完成),RootContext 会自动解绑 XID。 // 绑定 XID RootContext.bind(xid); // 解绑 XID String xid = RootContext.unbind(); 应用可以通过 RootCon

  • 我有一个不是WebService的微服务。 它是一个Spring Boot(1.5)CommandLineRunner应用程序,不需要公开API或使用HTTP执行任何操作。 我添加了这个配置来启用Spring的infoendpoint 我实现了这个健康检查类 这个想法能行得通吗?或者我必须重构它来为web请求服务吗? 谢谢你提供的任何线索

  • nestjs 一个服务如何既做微服务也做http服务器? 比如一个接口既可以做 http 又可以做微服务.不想再写一个专门的http 服务器. 接口是否可以相同?

  • 我在 PLay 2 中将我的应用程序划分为不同的项目。但我刚刚意识到我不知道如何在同一台服务器中运行多个播放应用程序。 有人知道怎么做吗? 让我们假设这是不可能的,因此,我将在同一个根项目中部署多个播放应用程序(微服务将充当插件)。你认为这会打败微服务架构吗?。我会让每个模块独立行动。

  • 基本 Nest 微服务是一种使用与HTTP不同的传输层的应用程序。 安装 首先,我们需要安装所需的软件包: $ npm i --save @nestjs/microservices 概述 通常,Nest支持一系列内置的传输器。它们基于 请求-响应 范式,整个通信逻辑隐藏在抽象层之后。多亏了这一点,您可以轻松地在传输器之间切换,而无需更改任何代码行。我们不支持具有基于日志的持久性的流平台,例如 Ka