Skip to content

Reverse proxy for highly-scalable rest api services

License

Notifications You must be signed in to change notification settings

rickcollette/gaetwae

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GAETWAE User Documentation

How to Deploy GAETWAE

  1. Pre-requisites:

    • Ensure that you have the GAETWAE binary and gaetwae.conf configuration file.
    • If using Redis or Memcached for caching, ensure those services are running.
  2. Deployment Steps:

    • Place the GAETWAE binary and gaetwae.conf in your desired directory.
    • Configure gaetwae.conf based on your requirements (see configuration examples below).
    • Run the GAETWAE binary: ./gaetwae (Linux/Mac) or gaetwae.exe (Windows).

Configuration Examples

1. Load Balancing Algorithms

{
    "loadBalancingAlgorithm": "leastConnections",
    "backends": [
        {"url": "http://backend1"},
        {"url": "http://backend2"}
    ]
}

2. Rate Limiting

{
    "rateLimiting": {
        "enabled": true,
        "requestsPerMinute": 1000
    }
}

3. Caching

In-Memory Cache

{
    "cache": {
        "enabled": true,
        "type": "inMemory",
        "capacity": 1000,
        "expirationTimeSeconds": 600
    }
}

Redis Cache

{
    "cache": {
        "enabled": true,
        "type": "redis",
        "redis": {
            "address": "localhost:6379",
            "password": "",
            "db": 0
        },
        "expirationTimeSeconds": 600
    }
}

Use Cases

1. API Gateway

Use GAETWAE as an API gateway to distribute incoming API requests to multiple backend services, ensuring efficient load distribution and improved availability.

2. Rate Limiting

Implement rate limiting to prevent abuse and ensure fair usage of your API services by limiting the number of requests a user can make in a given timeframe.

3. Caching

Improve response times and reduce backend load by caching the responses of frequent and resource-intensive requests.

Troubleshooting

  • Ensure the configuration file is correctly formatted and the specified paths and parameters are correct.
  • Check the logs for any error messages or warnings to diagnose issues.

For more details and advanced configurations, refer to the official documentation and resources.

TODO

Failover: Implement failover mechanisms to handle cases where backend instances become unavailable. This may involve retrying requests on alternative instances or redirecting traffic to a backup data center or region.

Session Persistence: Depending on your application, you may need to implement session persistence (sticky sessions) to ensure that requests from the same client are consistently routed to the same backend instance to maintain session state.

Monitoring and Metrics: Implement monitoring and metrics collection to keep track of the performance and health of your backend instances and load balancer. This can help you identify and troubleshoot issues quickly.

Scalability: Ensure that your load balancing solution can scale horizontally as well. As traffic increases, you may need to add more load balancer instances to handle the load.

Deployment Considerations: Depending on your infrastructure and deployment strategy, you may deploy the load balancer separately from your API Gateway. Tools like Nginx, HAProxy, or cloud-based load balancers (e.g., AWS ELB, Google Cloud Load Balancing) can be used for load balancing.

Testing and Validation: Thoroughly test your load balancing setup under various traffic conditions, including high loads, failures, and recovery scenarios. Load testing tools can help simulate real-world traffic patterns.

Documentation: Document how the load balancing and scaling aspects of your API Gateway work, including how to add or remove backend instances, configure the load balancer, and troubleshoot common issues.

About

Reverse proxy for highly-scalable rest api services

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages