A microservice gateway developed based on golang.With a variety of plug-ins which can be expanded by itself, plug and play. what's more,it can quickly help enterprises manage API services and improve the stability and security of API services.

GOKU

Go Report Card Releases LICENSE


Goku API gateway is a microservice gateway developed based on golang. It can achieve the purposes of high-performance HTTP API forwarding, multi tenant management, API access control, etc. it has a powerful custom plug-in system, which can be expanded by itself, and can quickly help enterprises manage API services and improve the stability and security of API services.

Note:The main branch is the main development branch. Frequent updates may lead to unstable use. If you need to use a stable version, please look release

Summary / 中文介绍

Why Goku

Goku API gateway is a microservice gateway running on the service boundary of enterprise system. When you build websites, apps, iots and even open API transactions, Goku API gateway can help you extract duplicate components from your internal system and run them on Goku gateway, such as user authorization, access control, firewall, data conversion, etc; Moreover, Goku provides the function of service arrangement, so that enterprises can quickly obtain the required data from various services and realize rapid response to business.

Goku API gateway has the following advantages:

  • Completely open source: the Goku project is initiated and maintained by eolinker for a long time. We hope to work with global developers to build the infrastructure of micro service ecology.
  • Excellent performance: under the same environment, Goku is about 50% faster than nginx, Kong and other products, and its stability is also optimized.
  • Rich functions: Goku provides all the functions of a standard gateway, and you can quickly connect your micro services and manage network traffic.
  • Extremely low use and maintenance cost: Goku is an open source gateway developed in pure go language. It has no cumbersome deployment and no external product dependence. It only needs to download and run, which is extremely simple.
  • Good scalability: most of Goku's functions are modular, so you can easily expand its capabilities.

In a word, Goku API gateway enables the business development team to focus more on business implementation.

Stargazers over time

Feture

Feture Description
Dynamic router Match the corresponding service by setting parameters such as location, query, header, host and method
Service discovery Support such as Eureka, Nacos and Consul
Load Balance Support polling weight algorithm
Authentication Anonymous, basic, apikey, JWT, AK / SK authentication
SSL certificate Manage multiple certificates
Access Domain The access domain can be set for the gateway
Health check Support health check of load nodes to ensure service robustness
Protocol HTTP/HTTPS、Webservice
Plugin The process is plug-in, and the required modules are loaded on demand
OPEN API Gateway configuration using open API is supported
Log Provide the operation log of the node, and set the level output of the log

RoadMap

  • Cluster:Use **raft ** algorithm to build clusters to ensure high program availability
  • Cli:Support cli command control gateway program
  • UI: The gateway configuration can be operated through the UI interface, and different UI interfaces (Themes) can be customized by loading as required
  • Multi protocol:Support a variety of protocols, including but not limited to grpc, websocket, TCP / UDP and Dubbo
  • Traffic control:Intercept abnormal traffic
  • Black and white list:Set the static IP black-and-white list to intercept illegal IP
  • Plugin Market:Because Goku mainly loads the required modules through plug-in loading, users can compile the required functions into plug-ins, or download and update the plug-ins developed by contributors from the plug-in market for one click installation
  • Service Orchestration:An orchestration API corresponds to multiple backends. The input parameters of backends support client input and parameter transfer between backends; The returned data of backend supports filtering, deleting, moving, renaming, unpacking and packaging of fields; The orchestration API can set the exception return when the orchestration call fails
  • Monitor:Capture the gateway request data and export it to Promethus and graphite for analysis
  • .....

RoadMap for 2021

image

Benchmark

Deployment

Get start

  1. Download and unzip the installation package (here is an example of the installation package of version v0.1.0)
wget https://github.com/eolinker/goku/releases/download/v0.1.0/goku-v0.1.0.linux.x64.tar.gz && tar -zxvf goku-v0.1.0.linux.x64.tar.gz && cd goku
  1. Start gateway:
./goku -data_path {data_path}

Contact

About

Eolinker is a leading API management service provider, providing professional API R & D management, API automation testing, API monitoring, API gateway and other services to more than 3000 enterprises around the world. It is the first enterprise to formulate API R & D management industry specifications for ITSS (China Electronics Industry Standardization Technology Association).

Official website:https://www.eolinker.com Download PC desktop for free:https://www.eolinker.com/pc/

Owner
Eolink
A powerful All-in-one API management and testing platform, we devote to making APIs Management easier!
Eolink
Comments
  • docs: Just a discussion

    docs: Just a discussion

    Current State

    Currently, I found when apinto upgrade. Should update latest link for readme. I think it's no necessary. Infer from releasing. We can know. Can redirect the link. So we don't need update readme and api-docs any more.

    Desired State

    I think we can change the release process to get rid of the version number. In past apinto-v0.7.0.linux.x64.tar.gz. For future apinto-linux.x64.tar.gz is enough.

  • bug: 文件内容转发失效

    bug: 文件内容转发失效

    Current Behavior

    使用form-data方式上传文件,文件内容不能正常转发

    Expected Behavior

    No response

    Error Logs

    No response

    Steps to Reproduce

    使用form-data方式上传文件

    Environment

    • APINTO version (run apinto version): v0.6.4
    • Operating system (run uname -a): centos
  • [Feature]: support yaml  config alias.

    [Feature]: support yaml config alias.

    Description

    Background

    Apinto is a great project. But i found apinto already support read yml config file. But as we all know .yaml is equal with .yml. But from the eosc/config.go. I notice it's only read .yml suffix file. I think we can set up an constant array containing .yaml and .yml.Then read .yml first.

  • The admin thread crashed after the nacos service was shut down

    The admin thread crashed after the nacos service was shut down

    Current Behavior

    shutdown registered nacos service, restart the apinto, admin collapse. The console keeps printing:admin controller ping...

    Expected Behavior

    No response

    Error Logs

    No response

    Steps to Reproduce

    1. Register the nacos service to apinto
    2. shutdown nacos service
    3. Restart the apinto
    4. admin thread collapse

    Environment

    • APINTO version (run apinto version):
    • Operating system (run uname -a): apinto-0.8.1
  • docs: https://help.apinto.com/docs/quick/arrange.html  is 404

    docs: https://help.apinto.com/docs/quick/arrange.html is 404

    Current State

    The documention for build guide is 404. https://help.apinto.com/docs/quick/arrange.html

    Desired State

    Could you please give a build guide?

  • nacos接入问题

    nacos接入问题

    Current State

    nacos接入 api提示成功了返回信息也正常 但是nacos中并未发现apinto网关服务 也没有日志提示是否接入成功 请完善下日志功能和说明文档吧 文档实在是难读

    Desired State

    nacos接入 api提示成功了返回信息也正常 但是nacos中并未发现apinto网关服务 也没有日志提示是否接入成功 请完善下日志功能和说明文档吧 文档实在是难读

  • ip-hash负载均衡算法增加node数量判断

    ip-hash负载均衡算法增加node数量判断

    Description

    Fixes # (issue) Checklist

    • I have explained the need for this PR and the problem it solves
    • I have explained the changes or the new features added to this PR
    • I have added tests corresponding to this change
    • I have updated the documentation to reflect this change
    • I have verified that this change is backward compatible (If not, please discuss on the apinto mailing list first)
  • 增加ip hash负载均衡算法

    增加ip hash负载均衡算法

    Description

    Fixes # (issue) Checklist

    • I have explained the need for this PR and the problem it solves
    • I have explained the changes or the new features added to this PR
    • I have added tests corresponding to this change
    • I have updated the documentation to reflect this change
    • I have verified that this change is backward compatible (If not, please discuss on the apinto mailing list first)
  • update install.sh: add install,upgrade

    update install.sh: add install,upgrade

    Description

    Fixes # (issue) Checklist

    • I have explained the need for this PR and the problem it solves
    • I have explained the changes or the new features added to this PR
    • I have added tests corresponding to this change
    • I have updated the documentation to reflect this change
    • I have verified that this change is backward compatible (If not, please discuss on the apinto mailing list first)
  • fix cors.DoHttpFilter http.MethodOptions">

    fix cors.DoHttpFilter "option" -> http.MethodOptions

    Description

    Fixes # (issue) Checklist

    • I have explained the need for this PR and the problem it solves
    • I have explained the changes or the new features added to this PR
    • I have added tests corresponding to this change
    • I have updated the documentation to reflect this change
    • I have verified that this change is backward compatible (If not, please discuss on the apinto mailing list first)
  • update resources files

    update resources files

    Description

    Fixes # (issue) Checklist

    • I have explained the need for this PR and the problem it solves
    • I have explained the changes or the new features added to this PR
    • I have added tests corresponding to this change
    • I have updated the documentation to reflect this change
    • I have verified that this change is backward compatible (If not, please discuss on the apinto mailing list first)
  • help request: 如果路由到静态配置的具体资源?

    help request: 如果路由到静态配置的具体资源?

    Description

    假如有一个api服务是:https://api.xxx.com,可以通过https://api.xxx.com/user/all获取所有用户 通过配置服务地静态配置域名为api.xxx.com,请问应该如何通过路由访问到https://api.xxx.com/user/all。

    我现在只能通过服务和路由配置以http地方式访问到api.xxx.com,无法访问到https://api.xxx.com/user/all

    Environment

    apinto 0.8.4,配合对应dashboard

  • bug: Cross domain plugin filtering options request failed

    bug: Cross domain plugin filtering options request failed

    Current Behavior

    Cross domain plugin options request failed to get the allow related header. image

    Expected Behavior

    image

    Error Logs

    No response

    Steps to Reproduce

    1、send ajax request 2、get corw allow header failure

    Environment

    • APINTO version (run apinto version):
    • Operating system (run uname -a): apinto v0.8.1
  • configure the gateway server configuration through configuration files or environment variables

    configure the gateway server configuration through configuration files or environment variables

    Description

    The server configuration can be made into a startup configuration, such as the request body size. Currently, the request body is limited to 4M. When the parameter is a file, it is easy to exceed this value.

  • Who is using apinto?

    Who is using apinto?

    Description

    Who is using apinto?

    Thank you for your support for apinto open source gateway. We will continue to support the development and Q & A of **apinto ** open source gateway, create more complete, safe and reliable **apinto **products, and build a more prosperous community.

    Why create this issue?

    -Listen to the voice of the community and let **apinto **solve practical problems

    -Attract more developers to participate and contribute

    -Understand the actual use scenarios of apinto, so as to determine the subsequent version iteration plan

    We look forward to your offer

    Submit a comment here, which includes:

    Your company, school or organization

    Your city and country

    Your contact information: email, wechat, QQ (at least one)

    What business scenarios will you use **apinto **for

    Has it been applied to the production environment

    You can refer to the following examples:

    Organization: apinto
    
    Location: Guangzhou, China
    
    contact information: [email protected]
    
    Use scenario: provide safe and reliable unified call entry for microservices
    
    Applied to production environment: Applied
    
    

    Thank you for your support!

    Apinto community

    谁在使用 Apinto?

    感谢大家对 Apinto 开源网关的支持,我们将持续支持 Apinto 开源网关的开发、答疑,打造更加完备、安全、可靠的 Apinto 产品,将社区建设得更加繁荣。

    为什么创建这个Issue?

    • 聆听社区的声音,让 Apinto 切实解决实际问题
    • 吸引更多开发者参与贡献
    • 了解 Apinto 的实际使用场景,以便确定后续的版本迭代计划

    我们期待您能提供

    在此提交一条评论, 评论内容包括:

    您所在公司、学校或组织

    您所在的城市、国家

    您的联系方式:邮箱、微信、QQ (至少一个)

    您将 Apinto 用于哪些业务场景

    是否已经应用到生产环境

    可以参考下面的示例:

    组织:apinto
    地点:中国广州
    联系方式: [email protected]
    使用场景:给微服务提供安全、可靠的统一调用入口
    是否已经应用到生产环境:已经应用
    

    多谢您的支持! Apinto 社区

    Environment

    • APINTO version (run apinto version):
    • Operating system (run uname -a):
  • apinto config.yml support listen range ip port

    apinto config.yml support listen range ip port

    Description

    Now:

    listen:   # node listen port
      - 8099
    
    admin:    # openAPI request info
      scheme: http # listen scheme
      listen: 9400 # listen port
      ip: 0.0.0.0 # listen ip
    
    

    just a case:

    listen:   # node listen port
      - 8099
      - 2000-3000,3001,3003,4000-50000
    
    

    more idea:

    only allow bind ports you list, if you set nothing, there won't be any limit and the port will used when config in the dashboard

Ruuvi-go-gateway - Software replica of the Ruuvi Gateway

ruuvi-go-gateway ruuvi-go-gateway is a software that tries to replicate Ruuvi Ga

Dec 21, 2022
Authentication-microservice - Microservice for user authentication built with golang and gRPC

Authentication-microservice - Microservice for user authentication built with golang and gRPC

May 30, 2022
Customer-microservice - Microservice of customer built with golang and gRPC

?? Building microservices to manage customer data using Go and gRPC Command to g

Sep 8, 2022
Microservice - Microservice golang & nodejs
Microservice - Microservice golang & nodejs

Microservice Gabungan service dari bahasa pemograman go, nodejs Demo API ms-auth

May 21, 2022
A Micro-UTP, plug-able sanity checker for any on-prem JFrog platform instance

hello-frog About this plugin This plugin is a template and a functioning example for a basic JFrog CLI plugin. This README shows the expected structur

Dec 7, 2021
Microservice - A sample architecture of a microservice in go

#microservice Folder structure required. service certs config config.yaml loggin

Feb 3, 2022
micro-draft-manager is a microservice that helps you to manage unstructured data in your application with sorting and full-text search

micro-draft-manager is a microservice that helps you to manage unstructured data in your application with sorting and full-text search. For example, y

Nov 24, 2021
Go-rifa-microservice - Clean Architecture template for Golang services
Go-rifa-microservice - Clean Architecture template for Golang services

Test CI Go Clean template Clean Architecture template for Golang services Overvi

Sep 22, 2022
An example microservice demo using kubernetes concepts like deployment, services, persistent volume and claims, secrets and helm chart

Docker vs Kubernetes Docker Kubernetes container tech, isolated env for apps infra management, multiple containers automated builds and deploy apps -

Dec 13, 2021
a microservice framework for rapid development of micro services in Go with rich eco-system
a microservice framework for rapid development of micro services in Go with rich eco-system

中文版README Go-Chassis is a microservice framework for rapid development of microservices in Go. it focus on helping developer to deliver cloud native a

Dec 27, 2022
Omh-users-management - A go microservice that can enables us to create, modify, fetch, and delete users

Users Management System A go microservice that can enables us to create, modify, fetch, and delete users Usage To Run the application $ go run main.

Jan 20, 2022
A simple HTTP/HTTPS API Gateway in Golang.
A simple HTTP/HTTPS API Gateway in Golang.

mice A simple API Gateway in Golang. Installation: Using go install: First install Go, if not already there Set GOPATH and GOBIN if not already set as

May 19, 2022
A banking microservice based on hexagonal architecure.

1. Banking Microservice Design Decisions 1. Hexagonal Architecture. 2. REST Api. 3. Dependency Injection. 4. Database Transactions. 5. Structured Erro

Feb 18, 2022
Test your API gateway routed lambdas locally and in CI
Test your API gateway routed lambdas locally and in CI

Lambo Test API Gateway wrapped lambda functions locally. Lambo can also be used to test API GW lambdas in CI without needing docker-in-docker. It will

Jun 22, 2022
HTTP API Gateway
HTTP API Gateway

Manba/简体中文 Manba is a restful API gateway based on HTTP, which can be used as a unified API access layer. Tutorial A very detailed tutorial for beginn

Dec 29, 2022
This is a shopping basket workshop that shows how to use KrakenD API Gateway.
This is a shopping basket workshop that shows how to use KrakenD API Gateway.

Go Restful Microservices and KrakenD API Gateway Workshop This is a shopping basket workshop that shows how to use KrakenD API Gateway. Consist of 5 m

Jan 3, 2023
a simple api gateway

鉴权网关 根据登录接口返回UIN判断是否登录/退出成功 自动添加跨域处理 会话重启即失效 TLS鉴权 负载均衡 随机 Config # 开启验证 enable_verify: false # 验证证书 ca_path: "./conf/ca.pem" module_cert_pem: "./conf

Feb 10, 2022
The Consul API Gateway is a dedicated ingress solution for intelligently routing traffic to applications running on a Consul Service Mesh.

The Consul API Gateway is a dedicated ingress solution for intelligently routing traffic to applications running on a Consul Service Mesh.

Dec 14, 2022
A gateway to expose s3 standard API for any storage type.

s3-gateway this project is used to be compatible with any other storage type. there are tons of object storage services in the internat. However, many

Nov 28, 2021