A high-performance, high-extensibility Go HTTP framework for building microservices.
Hertz is a high-performance, high-extensibility, and high-usability Go HTTP framework designed for building microservices. It was developed to meet the demanding internal requirements of ByteDance and is now widely used in production environments. The framework emphasizes a layered architecture that allows developers to tailor it to complex, large-scale microservice needs.
Go developers building high-performance microservices, particularly those in large-scale enterprise environments with demanding performance and customizability requirements. It is suitable for teams that need a framework that can be extensively extended to meet internal protocol, network, or middleware needs.
Developers choose Hertz for its combination of superior performance, achieved through the self-developed Netpoll network library, and its exceptional extensibility via a layered design with extensive interfaces and plugin support. It offers the unique ability to switch network layers on-demand and customize protocol parsing, which is critical for large-scale, complex deployments.
Go HTTP framework with high-performance and strong-extensibility for building micro-services.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses the self-developed Netpoll network library, which provides superior QPS and latency compared to standard Go net in many scenarios, as demonstrated in the hertz-benchmark project.
Features a layered design with extensive interfaces and plugin support, allowing developers to customize protocol parsing, network layers, and middleware, as highlighted in the framework extension documentation.
Focuses on an intuitive API and active user feedback to help write correct code quickly, emphasizing a smooth development experience for microservices.
Supports on-demand switching between Netpoll and Go net, and allows custom network library extensions via plugins, providing adaptability for different deployment scenarios.
Key functionalities like HTTP/2, WebSockets, and advanced observability are not built-in but require community extensions from hertz-contrib, adding setup complexity and potential maintenance risks.
The layered design for high extensibility introduces additional abstraction that can be overkill for straightforward projects, leading to a steeper learning curve and potential boilerplate code.
Being optimized for ByteDance's internal use, it may include assumptions or dependencies tailored to their ecosystem, which might not align with all external development practices or tooling.