8000 GitHub - ats1999/dakia: A high-performance API gateway built with Rust, designed for low-latency request processing. Dakia supports dynamic configuration updates, allowing seamless changes to routing rules, authentication settings, rate limits, and other gateway policies without requiring a restart.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
/ dakia Public

A high-performance API gateway built with Rust, designed for low-latency request processing. Dakia supports dynamic configuration updates, allowing seamless changes to routing rules, authentication settings, rate limits, and other gateway policies without requiring a restart.

License

Notifications You must be signed in to change notification settings

ats1999/dakia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

1

Dakia: An API gateway tailored for modern distributed systems

Dakia is a high-performance API gateway built with Rust, designed for low-latency request processing. Dakia supports dynamic configuration updates, allowing seamless changes to routing rules, authentication settings, rate limits, and other gateway policies without requiring a restart. This ensures high availability and adaptability in rapidly evolving microservices architectures. Additional features include request routing, load balancing, caching, and fault tolerance, making it a robust solution for modern distributed systems.

It's under construction 🦺 🪚 🏗️ 🚧 🔨

Feature highlights

  • Configurable: Easily manage API configurations using various formats like YAML, JSON, and HTTP API calls.
  • Extensible: Add new functionality with support for custom middleware and plugins, written in any programming language (Rust, Java, C++, etc.).
  • Fully Programmable: Tailor the API Gateway to your specific needs with custom plugins and middleware in multiple languages.
  • Zero Downtime Upgrades: Perform upgrades and restarts without affecting the availability of your services.
  • Dynamic Middleware: Add, remove, or modify middleware on the fly without disrupting service.
  • Request and Response Management: Modify requests before they reach the upstream or read/write responses to meet your application's needs.
  • Real-Time Configuration: Modify your gateway configuration in real time with no downtime, using HTTP API calls.

Dakia ensures your services stay performant, reliable, and highly customizable, giving you full control.

Limitations ☠️

These limitations will be addressed over time as we continue to improve the dakia.

  • Currently supports only UTF-8 character encoding.
  • Only the round-robin load balancing algorithm is available at the moment.
  • IPv6 addresses are not supported at this time; only IPv4 is supported.
  • Currently it supports only HTTP protocol

Reasons to use Dakia

  • Security - Built with Rust, Dakia ensures enhanced memory safety and reduces vulnerabilities compared to services written in C/C++.
  • Performance - Powered by pingora, a battle tested protocol implemention, as it has been serving more than 40M+ internet requests per second for more than a few years.
  • Customization - You need ultimate customization, you can configure, extend and even further program in multiple languages.
  • Asynchronous and Multi-Threaded – Dakia is designed to handle tasks concurrently, ensuring efficient and high-performance request processing by default.

Benchmark of Dakia on a Local Machine (8 CPU Cores, 16GB RAM)

Performance test: 10s @ http://0.0.0.0:80
  - 1 thread, 100 concurrent connections

  Thread Statistics:
    - Average Latency: 699.64µs (±125.23µs)
    - Maximum Latency: 3.77ms
    - Requests per Second: 76.09k (±3.98k)
    - Peak Requests per Second: 81.89k

  Total Requests: 764,590 in 10.10s
  Data Transferred: 80.94MB
  Throughput: 75,678.12 requests/sec
  Transfer Rate: 8.01MB/sec

Architecture

flow

Getting started

📊 Progress Tracker

Dakia Configuration Sample

Task Status
Configurable(YAML + JSON) Done ✅
Virtual Host Done ✅
Wild card host matching (Wiki) Done ✅
Wild card route (Wiki) Done ✅
Proxy Done ✅
HTTP Protocol Suport Done ✅
Upstream SSL support Done ✅
Load Balancer Done ✅
Filter (MongoDB like query support) Done ✅
Dakia CLI Done ✅
PCRE support for pattern matching Done ✅
Extension, Interceptor & Interceptions Phases (Inbuilt Rust) Done ✅
Declarative filter support (Allows to use MongoDB like query syntax for filtering HTTP requests) Done ✅
FFI Support for interceptor Pending
UDS Support Pending
Load Balancer Algorithms (Least connection, Least response time, IP/Url hash) Pending
SSL Support Pending
Certbot Integration Pending
Controller (API to manage dakia over REST) Done ✅
TCP/UDP Proxy Pending
Web Socket Proxy Pending
gRPC Proxy Pending
Docs In-Progress 🚀

Load Balancing Algorithm

Algorithm Status
Round robin Done ✅
Least connection Pending
Least response time Pending
IP/URL hash Pending

Interceptor

Interceptor Description Status
Server Version Append server version into http response header. E.g Dakia/1.0.1 Done ✅
Request ID Append request id(UUID) into upstream request and downstream response headers. Done ✅
Basic Auth Basic Authentication Done ✅
Basic Auth ( External Storage Integration ) Use external storage for storing user name and password, support hashing. Pending
JWT Auth Support JWT authentication Pending
Use File Read data from a file and return its contents as the response. If the file is not found, respond with a 404 error. Done ✅
Use File ( Path rewrite support ) Allow to rewrite HTTP request path Pending
Try File Read data from a file and return its contents as the response. If the file is not found, make request to upstream, write response t 6021 o file and then serve response. Pending
Controller Allow to update dakia configuration in YAML/JSON format via REST endpoint without restarting the gateway Done ✅
Rate Limiter Token bucket rate limiter algorithm Done ✅
Prometheus Integration Expose server interval metric using prometheus (New TCP connection, Reused TCP connection, TCP connection failure, etc) Pending

About

A high-performance API gateway built with Rust, designed for low-latency request processing. Dakia supports dynamic configuration updates, allowing seamless changes to routing rules, authentication settings, rate limits, and other gateway policies without requiring a restart.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

0