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.

Overview

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/

Issues
  • 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?

    opened by strawcarb 2
  • change default port

    change default port

    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)
    opened by chen2eric 0
  • delete git action

    delete git action

    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)
    opened by chen2eric 0
  • fix .goreleaser.yaml

    fix .goreleaser.yaml

    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)
    opened by chen2eric 0
  • fix git action

    fix git action

    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)
    opened by chen2eric 0
  • chore(style): add editorconfig & vscode ignoer for vscode user

    chore(style): add editorconfig & vscode ignoer for vscode user

    Description

    Hi, I noticed this framework during this sharing session,And intersting in it , but I prefer to use vscode as a development tool. I noticed this project don't ignore .vscode dir , and no uniform development indentation specification. So I add it.

    CheckList

    • [x] Add .vscode as git ignore.
    • [x] Add .editorconfig for vsocde.
    opened by nonzzz 0
  • goku to apinto and add shell

    goku to apinto and add shell

    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)
    opened by chen2eric 0
  • nacos接入问题

    nacos接入问题

    Current State

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

    Desired State

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

    opened by dhazy 1
Releases(v0.6.3)
  • v0.6.0(Jun 17, 2022)

    1. 进程模型优化,新增admin进程,提供openAPI及渲染模版内容 进程名称及其作用如下:
    • master进程:
      • 类型:常驻进程
      • 作用
        • 守护进程,管理子进程的启停
        • 负责Raft集群的通信与同步
        • Cli命令交互
        • openAPI流量入口,监听管理端口
        • 将openAPI请求转发到leader节点的admin进程中处理
    • admin进程
      • 类型:常驻进程,仅当节点为leader时启动
      • 作用
        • 配置态进程,该进程缓存了worker进程运行所需要的所有信息
        • 处理openAPI请求,校验请求数据的合法性
        • 提供render模版,供dashboard渲染
    • worker进程
      • 类型:常驻进程
      • 作用
        • 网关核心进程,执行流量转发的工作流程
        • 支持加载外部插件
        • 当插件更新/重加载时,该进程会重启
    • help进程:
      • 类型:临时进程
      • 作用:
        • 由master启动,处理完临时任务后停止
        • 当执行安装/升级拓展时,会优先启动该进程校验拓展的可靠性及合法性
    1. raft集群模型优化,重写事件同步操作 集群同步模型如下: 集群同步模型

    2. 丰富openAPI接口,支持页面渲染。开发者可通过修改配置的tag 标签,生成相应格式的Json Scheme 渲染模版,tag 标签内容参考eosc/README.md at main · eolinker/eosc Dashboard调用流程如下:

    Dashboard调用流程

    1. 删除全局插件类型(原“type”字段),插件不再区分生效阶段,生效顺序及生效阶段由开发者进行定义。 插件执行顺序如下图: 7a4b7077-1a0f-4696-a51e-61f13e38b87e
    2. 移除Cli操作拓展插件功能(包括安装、更新、卸载等),拓展安装、更新、卸载等功能将在下版本通过openAPI方式提供,与插件市场同步上线。
    Source code(tar.gz)
    Source code(zip)
    apinto-v0.6.0.linux.x64.tar.gz(17.23 MB)
  • v0.4.0(Dec 27, 2021)

  • v0.3.0(Nov 25, 2021)

    1、cli新增extender操作命令 (1)安装拓展:goku extender install {group}:{project}:{version} (2)更新拓展:goku extender upgrade {group}:{project}:{version} (3)卸载拓展:goku extender uninstall {group}:{project} (4)获取可用拓展列表:goku extender version {group}:{project} (5)获取拓展信息:goku extender info {group}:{project}:{version} (6)下载拓展:goku extender download {group}:{project}:{version}

    2、程序支持加载插件操作 (1)内置插件:随程序代码一同编译的插件,如IP黑白名单、参数映射等,均放在driver/plugins目录内。 (2)外置插件:根据插件开发教程开发的外部插件,后缀为“.so”,可从插件市场直接获取。

    3、新增openAPI (1)新增全局插件相关openAPI (2)新增拓展信息获取等相关拓展openAPI

    4、修复程序启动时重置快照错误的问题

    5、新增内置插件 (1)IP黑白名单(eolinker.com:goku:ip_restriction) (2)参数映射(eolinker.com:goku:proxy_rewrite) (3)额外参数(eolinker.com:goku:extra_params) (4)请求重写(eolinker.com:goku:params_transformer) (5)流量控制(eolinker.com:goku:rate_limiting)

    6、修改端口监听模式:从动态配置监听变成启动时读取静态配置进行端口监听

    7、鉴权配置模式修改:作为内置插件引入。

    Source code(tar.gz)
    Source code(zip)
    goku-v0.3.0.linux.x64.tar.gz(14.43 MB)
  • v0.2.1(Oct 14, 2021)

  • v0.2.0-beta(Sep 30, 2021)

    :由于该版本的开发涉及到系统信号,不兼容window系统,因此代码不能在window上debug或运行。

    1、master-worker模式支持

    • 平滑重启程序,保证服务高可用
    • 自动开启守护操作,保证进程常驻
    • 保证服务运行正常,避免错误配置导致服务崩溃,通过这种模式可以重新新进程的方式检查配置
    • 支持多次加载同一插件
    • 使用unix socket进行进程间通信

    2、多节点集群

    • 使用raft算法同步集群信息,去中心化,保证服务高可用
    • 持久化集群日志存储

    3、支持cli命令操作

    • start:启动程序

    • stop:关闭程序

    • restart:重启程序

    • join:加入集群

    • leave:脱离集群

    • info:打印节点信息

    • env:打印程序环境变量

    4、新增日志驱动,

    • filelog:文件日志
    • httplog:http日志
    • syslog:系统日志
    • stdlog
    Source code(tar.gz)
    Source code(zip)
    goku-v0.2.0-beta.linux.x64.tar.gz(14.35 MB)
  • v0.1.0(Aug 14, 2021)

Owner
Eolink
A powerful All-in-one API management and testing platform, we devote to making APIs Management easier!
Eolink
Ruuvi-go-gateway - Software replica of the Ruuvi Gateway

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

Scrin 6 May 10, 2022
Authentication-microservice - Microservice for user authentication built with golang and gRPC

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

Isaque Veras 6 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

Isaque Veras Labs 2 Mar 26, 2022
Microservice - Microservice golang & nodejs

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

Didin Tri Anggoro 2 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

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

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

null 0 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

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

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

Evandro Martinelli 1 Feb 24, 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 -

abhijit wakchaure 0 Dec 13, 2021
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

null 2.5k Jun 17, 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.

Pulkit Tanwar 0 Jan 20, 2022
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

Mike 7 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

Ashef Habib Tishad 1 Feb 18, 2022
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

Liam Galvin 8 Jun 22, 2022
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

null 3.1k Jun 23, 2022
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

Suat KÖSE 46 Jun 13, 2022
a simple api gateway

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

null 2 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.

HashiCorp 65 Jun 15, 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

xylon 0 Nov 28, 2021