feat: add hand-written Prometheus remote write request parser (#1628)

## Rationale

A hand-written remote write request parser to replace prost, with the
primary goal of achieving zero-allocation parsing.

## Detailed Changes

- The new `remote_write` directory contains the core implementation of
the hand-written parser.

- Add benchmarks.

- Add a .proto file in `pb_types`.

- Fix CI errors.

## Test Plan

- Unit tests can be found at the end of the `pb_reader.rs`.

- A comprehensive equivalence test is available in
`equivalence_test.rs`, which validates the correctness of the
hand-written parser by comparing its output with that of the prost
auto-generated parser.
33 files changed
tree: 97419cc46d0f643aa40c55e04168f11f8227b92f
  1. .github/
  2. docs/
  3. licenses/
  4. scripts/
  5. src/
  6. .asf.yaml
  7. .dockerignore
  8. .gitignore
  9. .pre-commit-config.yaml
  10. Cargo.lock
  11. Cargo.toml
  12. clippy.toml
  13. CONTRIBUTING.md
  14. DEPENDENCIES.tsv
  15. DISCLAIMER
  16. LICENSE
  17. licenserc.toml
  18. Makefile
  19. NOTICE
  20. README.md
  21. rust-toolchain.toml
  22. rustfmt.toml
README.md

HoraeDB

License CI OpenIssue HoraeDB Docker HoraeMeta Docker

Apache HoraeDB (incubating) is a high-performance, distributed, cloud native time-series database.

[!IMPORTANT] Apache HoraeDB (incubating) is an effort undergoing incubation at the Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC.

Please read the DISCLAIMER and a full explanation of “incubating”.

Notice

The main branch is used for developing new engine described in this RFC. It‘s currently in a phase of rapid development and remains somewhat unstable, and it’s scheduled to be publicly available towards the end of 2025.

The legacy, stable engine is in analytic-engine branch.

Community

Thrive together in Apache HoraeDB (incubating) community with users and developers from all around the world.

  • Ask questions on GitHub Discussion.
  • Chat with developers/users on Discord or DingTalk.
  • Mailing lists are a form of communication used by the Apache community. See guide here to subscribe to our list.

Read our Contributing Guide and make your first contribution!

Acknowledgment

When develop we benefit a lot from several other open source projects, such as VictoriaMetrics, thanks for their awesome work.

License

Apache License 2.0