Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal: Build an API Gateway Based on CloudWeGo Projects #75

Closed
felix021 opened this issue Aug 21, 2023 · 11 comments
Closed

Proposal: Build an API Gateway Based on CloudWeGo Projects #75

felix021 opened this issue Aug 21, 2023 · 11 comments
Assignees

Comments

@felix021
Copy link

felix021 commented Aug 21, 2023

Goal

The primary goal of this proposal is to implement a demo API Gateway on Hertz which accepts HTTP requests encoded in JSON format and uses the Generic-Call feature of Kitex to translate these requests into Thrift binary format requests. The API Gateway will then forward the request to one of the backend RPC servers discovered from the registry center.

Requirements and Deliverables

  1. Implement an API Gateway that accepts HTTP requests with JSON-encoded bodies.
  2. Use the Generic-Call feature in Kitex to translate JSON requests into Thrift binary format.
  3. Integrate a load balancing mechanism to distribute requests among backend RPC servers.
  4. Integrate a service registry and discovery mechanism for the API Gateway and RPC servers.
  5. Develop backend RPC servers using Kitex for testing the API Gateway.
  6. Document the project, including design decisions, implementation details, and usage instructions.

You're encouraged to post your implementation here for others' reference.

Template:

Project Name:
Authors: [feel free to mention your github id, email, school/company, and/or any other information you'd like to provide]
Github: [url]
Documentation: [url]
Description: [brief introduction on your project]

@felix021 felix021 self-assigned this Aug 21, 2023
@yiwen101
Copy link

Project Name: API Gateway
Author: GitHub id: yiwen101, email: [email protected]
Github: https://github.com/yiwen101/CardWizards
Description: A working API Gateway that support runtime behavior control and come with a functional control web GUI. Applied listener pattern to maintain the idl to client map in run time. Still a work in progress, plan to add support for plugins, error handling etc

@tanyyyming
Copy link

@simbayippy
Copy link

Project Name: Svb_2.0

Author Yip Sin Hang, Niu wen jia. Our emails are [email protected] and [email protected].

Repo: https://github.com/simbayippy/OrbitalxTikTok

Documentation: here

Description: A High performance API Gateway that is able to dynamically update any service updates in IDL file during run time, supporting the 4 different types of generic clients of Kitex. Additional attempts made for the protojson_codec was made - close but still a work in progress

The full scope of our project can be found in our documentation process.

@jieqiboh
Copy link

Project Name: Godzilla Gateway (Inspired from the Kong API Gateway)

Authors: Boh Jie Qi, Winson Zheng, our emails are [email protected] and [email protected] respectively.

Repo: https://github.com/jieqiboh/Godzilla-Gateway

Documentation: This page provides links to our entire submission, including the system design document, relevant setup videos, and github repositories

Description:
A tested, highly performant, full-fledged API Gateway that implements all the basic requirements listed above:

  • Accepts HTTP requests with json payloads and routes them to the respective services
  • Employs the Kitex Generic Call mechanism to make json generic calls to microservices
  • Utilises an etcd cluster as part of microservice registration and service discovery, as well as load-balancing mechanisms

Our API Gateway also provides the following features:

  • Fully functioning IDL management system with an easy-to-use UI, enabling users to register, update and delete microservices for their API Gateway
  • Code Generator that is able to generate gateway code based on microservices registered on the fly
  • Elaborate gateway architecture comprising multiple gateway instances and an NGINX reverse proxy that allows for smooth updating of the gateway while it is running.

We also made our own custom benchmarking tool using Apache Bench that is able to measure key metrics like TP99 and QPS for our gateway, and made a cool logo :)

@1rbg
Copy link

1rbg commented Aug 24, 2023

Project Name: API Gateway

Authors: Gabriel Chua, Loh Jian Rong. Our emails are [email protected] and [email protected] respectively.

Repo: https://github.com/jianrong7/orbital-23

Documentation: This page provides links to our entire submission, including the system design document, cloud deployment documentation, as well as testing.

Description:

A working API Gateway that is able to support server-side updates to the IDL, and service registration using Consul. It supports the JSON Generic Call function of the Kitex framework.

@RashawnXue
Copy link

Project Name: CloudWeGo-API-Gateway

Authors:

Repo: https://github.com/RashawnXue/CloudWeGo-API-Gateway

Documentation: You can find the documents of the project in README.md and this page

Description:

  • The project implemented an API Gateway with two CloudWeGo' s frameworks: Hertz and Kitex.
  • The client can send HTTP requests to the Gateway, then it will generic and forward the requests to the corresponding RPC servers.
  • It supports IDL management, which allows to hot update IDL.

@lar0129
Copy link

lar0129 commented Aug 25, 2023

Project Name: Hertz API-gateway

Authors:

Repo: https://github.com/lar0129/hertz-APIgateway

Documentation:

  • Chinese version: README
  • English version: To be continued

Description:

  • In this project, the API gateway serves as the entry point for the system, receives all incoming HTTP requests, parses the URLs in the requests, forwards them to the relevant back-end RPC servers in JSON format, retrieves the responses, and returns them to the clients.
  • It supports IDL management, load balancing mechanism, service registry and discovery mechanism

@sherry-500
Copy link

Project Name: Cloudwego Apigateway

Authors:

Repo: https://github.com/sherry-500/apigateway

Documentation:

  • Chinese version: README

  • English version: To be continued

Description:

The project implemented an API Gateway with two CloudWeGo' s frameworks: Hertz and Kitex. In this project, the API gateway accepts HTTP requests with json payloads and routes them to the respective services, retrieves the responses, and returns them to the clients. It also supports IDL management, which allows to hot update IDL.

@JiaXinEu
Copy link

JiaXinEu commented Sep 1, 2023

Project Name: API_Gateway
Authors:

Github: https://github.com/yashma-sonara/API_Gateway

Documentation: System Design Document

Demo: Demo Video

Description: This project is an API Gateway implementation that serves as a centralized entry point for accessing and managing multiple backend services. Our project includes:

  • Built using Golang upon the Hertz and Kitex frameworks.

  • Supports service registry and discovery on Nacos and dynamic IDL updates.

  • Translates HTTP requests encoded in JSON format into Thrift binary format using Kitex Generic Call feature.

  • Load balancing through weighted round robin.

  • Unit, integration testing and benchmarking.

@iksars
Copy link

iksars commented Sep 7, 2023

Project Name: cloudwego-api-gateway

Authors:

Github: https://github.com/iksars/cloudwego-api-gateway

Documentation: docs

Description: Our project implements the following functions
1.basic api gateway functions

2.lruCache optimization for generic call client

3.idl management platform(frontend & backend) which support to curd IDL file and manage service interface

4.api gateway support IDL dynamically update

@SYuan03
Copy link

SYuan03 commented Sep 9, 2023

Project Name:

apigateway

Authors:

TwinDagger email: [email protected]
Jiao-Yiyang email: [email protected]
ARK_Fung email: [email protected]

Github:

https://github.com/iksars/cloudwego-api-gateway

Documentation:

apidoc
idl-management-platform doc
deploy doc1
deploy doc2

Description:

Here are the features and technologies used in our project:

  1. basic api gateway functions : we use studentservice as example

  2. client: we use Hertz to generate the sample code of client

  3. idl management platform

  4. Service-side: generated by idl using Kitex

  5. etcd

@GuangmingLuo GuangmingLuo pinned this issue Nov 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests