Welcome to petrel.
Complex software systems are often build as distributed collections of small services - or micro services. When building those services you and your team need to focus on implementing the business logic. You want to be fast and flexible. You want things to be stable and scalable. But you don't want to spend weeks in writing low level event based network code in your beloved C++. Of course, deployments need to by as simple and dynamic as possible because your release cycles are supposed to be very short.
-- This is where petrel comes in.
What is petrel?
- Open Source (licensed unter MIT)
- Written in modern C++ (requires at least C++11)
- A framework/tool for rapid development of micro/web services
- A web server with HTTP/1 and HTTP/2 support including SSL
- Combines fibers with LUA (no callbacks, just write your "blocking" code and don't care about threads or non-blocking IO)
- Provides a C++ library interface to implement performance critical code
- Provides a LUA framework to implement business logic
- Easy to extend (write native libs in C++ and implement the rest in LUA)
Contributing to petrel
As petrel is an open source project under the MIT license, contributions are more than welcome! Please read the Developer Guide to learn how to setup a development environment and how to submit patches.
Architecture
The following diagram shows the internal design of petrel. It embeds lua and uses a couple of libraries to implement the http and http2 protocols as well as fibers and network/disk IO. Check out the github page for detailed build instructions of petrel and the dependencies.
Read more about how petrel works...