-
Apinto V0.9版本发布
新特性
1、支持websocket协议转发,在路由中启用即可生效
2、Apinto访问地址标准化,引入广播地址,以支持docker容器、kubernetes pod间通信。
旧配置listen: - 8099 # 服务端口 ssl: # 服务端口的ssl配置 listen: - port: 8099 ## 端口 certificate: ## 证书配置 - cert: "" key: "" admin: # 管理端口配置 scheme: http listen: 9400 ip: 0.0.0.0 certificate: key: "" cert: "" certificate: # 证书默认目录 dir: /etc/apinto/cert
新版本配置(使用旧配置时会自动充血并初始化新配置)
version: 2 # 配置版本,新版本为2,非 2 当做旧版本 certificate: # 证书根目录 dir: /etc/apinto/cert client: advertise_urls: # open api 服务的广播地址 - http://192.168.3.110:9400 - http://192.168.3.116:9400 - http://10.8.0.15:9400 certificate: # 对 https 的证书配置 - cert: key: listen_urls: - http://0.0.0.0:9400 # open api 服务的监听地址 gateway: # 网关服务配置 advertise_urls: # 广播地址 - tcp://192.168.3.110:8081 - tls://192.168.3.116:8081 - tcp://10.8.0.15:8081 listen_urls: # 监听地址 - tcp://0.0.0.0:8081 - tls://192.168.3.116:8081 peer: # 节点通信配置 advertise_urls: - http://192.168.3.110:9401 - http://192.168.3.116:9401 - http://10.8.0.15:9401 certificate: - cert: key: listen_urls: # 监听地址 - http://0.0.0.0:94001
3、新增监控插件,并支持将请求记录输出到InfluxDB。
4、修改网关连接上游服务默认最大连接数为10240,默认最大连接等待时间为60s,客户端请求体最大为100M
5、输出器驱动新增作用范围配置(scope),默认支持scope:access_log、monitor。
当access log插件output配置为空列表时,scope为access_log的输出器会默认生效。如下:Bug修复
1、修复匿名应用删除后仍生效的问题
2、修复路由禁用后,缺少提示的问题
写在最后
目前Apinto 及其周边项目已经开源,我们希望通过Apinto强大的插件拓展能力,用户可像乐高积木一样根据需要自行拓展Apinto的插件,以满足不同的业务市场需求。
Apinto 目前属于萌芽阶段,我们希望集合广大开源爱好者的力量,与大家一起讨论方案,接受大家的批评指正,一起将产品打磨完善,做下一个端与端间的Traffic Middleware。
这是一个开放和积极的项目,我们诚挚地邀请您一起参与到我们的项目开源工作中。每一个贡献都是有意义的,包括但不限于:-
查找bugs,取得性能上的提升
-
帮助完善文档,提供用户操作体验
-
提交你们的issue,让我们知道您的奇思妙想
-
参与自定义插件的开发,丰富apinto的能力
-
...
欢迎各位开源爱好者参与到Apinto 项目中,和我们一起为开源事业贡献自己的力量。
联系我们
-
Github 链接:https://github.com/eolinker/apinto
-
QQ群号:725853895
-
-
Apinto企业版本试用用户招募
Apinto企业版即将在12月初发布。
Apinto企业版囊括了Apinto开源网关的所有功能,并在此基础上,提供了更加友好的用户体验、更加强大的管理功能,更好地满足企业安全需求。
为了答谢社区用户对Apinto开源网关的长期支持,现从社区中招募Apinto企业版试用用户,名额有限,先到先得,报名立享优惠。
填写完试用申请后,将会有专人联系您,提供试用部署及疑难解答服务。感谢各位的支持。
联系我们
-
Github 链接:https://github.com/eolinker/apinto
-
QQ群号:725853895
-
Apinto v0.8.5版本发布
v0.8版本变更
路由规则格式修改
改动前:一个路由支持配置多组路由规则
旧版路由规则配置(此处使用Apinto Dashboard示例)如下图所示:
改动后:一个路由仅支持配置一组路由规则
新版本路由规则配置(此处使用Apinto Dashboard示例)如下图所示:
多协议底层支持
通过对Eosc底层改动,Apinto支持端口协议复用,为后续Apinto支持gRPC、WebSocket、TCP等多种通信协议奠定底层基础。
新增模块:插件模版
该模块用于统一配置插件,生成可复用的插件模版。多个路由可以绑定同一个插件模版,以减少重复配置操作。
插件模版配置示例如下:
路由绑定插件示例如下
新增模块:应用
应用是对请求来源的抽象概念,其可以是一个客户端App,也可以是一个后端服务,还可以是Web App......
请求达到网关时,会先进行鉴权检验,鉴权通过后,将匹配唯一应用,并进行应用设置的规定行为,包括但不限于流量限制、数据修饰(额外参数、格式转换等)、访问控制等。
新增插件:应用(eolinker.com:apinto:plugin_app)
该插件用于控制应用模块的生效范围,若需要使应用模块生效,则需要在全局插件中新增该插件,并设置插件生效范围(enable 或 global )。
删除模块:鉴权
鉴权模块在v0.8.0中删除,鉴权相关操作将转移到应用模块中。
删除插件:鉴权(eolinker.com:apinto:auth)
鉴权插件在v0.8.0中删除,鉴权相关操作将转移到应用模块中。
新增apinto version命令
执行下列指令,即可看到apinto编译的相关信息
修复输出器部分字段获取失败的问题
字段涉及范围:
- proxy_header
- proxy_query
- 以proxyheader 为前缀的字段
- 以proxyquery 为前缀的字段
- 以header_为前缀的字段
- 以query_为前缀的字段
修复当上游为https协议时,转发失败的问题
写在最后
目前Apinto 及其周边项目已经开源,我们希望通过Apinto强大的插件拓展能力,用户可像乐高积木一样根据需要自行拓展Apinto的插件,以满足不同的业务市场需求。
Apinto 目前属于萌芽阶段,我们希望集合广大开源爱好者的力量,与大家一起讨论方案,接受大家的批评指正,一起将产品打磨完善,做下一个端与端间的Traffic Middleware。
这是一个开放和积极的项目,我们诚挚地邀请您一起参与到我们的项目开源工作中。每一个贡献都是有意义的,包括但不限于:
-
查找bugs,取得性能上的提升
-
帮助完善文档,提供用户操作体验
-
提交你们的issue,让我们知道您的奇思妙想
-
参与自定义插件的开发,丰富apinto的能力
-
...
欢迎各位开源爱好者参与到Apinto 项目中,和我们一起为开源事业贡献自己的力量。
联系我们
-
Github 链接:https://github.com/eolinker/apinto
-
QQ群号:725853895
-
Goku_lite、Goku企业版、Apinto网关版本对比
GoKu网关 提供企业版【EE】 与开源版【CE】 两个版本,满足不同阶段用户对于微服务的需求,两个版本均支持 私有云部署 。
Apinto开源版本 是 Goku 开源版【CE】的一次架构升级,经过前面几年的网关架构和客户需求的摸索,我们已经在微服务网关上面积累了大量的实践经验,现在我们抱着更加开放的心态,希望能够将过往的产品和技术经验重新整理并回馈技术社区,因此我们在今年3月开始了新的一轮重构。
版本适用范围
GoKu企业版: 适用于中大型企业,可加速企业数字化转型,是一个降低成本和提高灵活性的微服务解决方案;
Goku开源版:适用于个人或小型团队,仅支持最基本的网关功能。获取仓库请点击Goku开源版
Apinto开源版: 适用于个人或小中型团队,提供网关核心功能,拥有简易控制台。获取仓库请点击Apinto开源版
免费试用企业版,申请地址 https://www.eolink.com/apply_ams_cloud/
版本功能对比
功能 描述 Goku开源版 Goku企业版 Apinto开源版 控制台界面 全Web化配置,操作易用 √
自带可视化界面√
自带可视化界面√
可视化界面仓库水平扩展 多集群、多节点 √ √ √ 容器部署 支持通过容器(Kubernets等)动态扩展 √ √ √ 节点异地多活 节点自动切数据源 √ √ √ 动态路由 根据请求参数、请求路径进行动态路由匹配,分配流量到指定服务,支持Header、Query、Location(Location指标类似Nginx的Location)等路由指标 √ √ √ 协议 通信相关协议,如HTTP/HTTPS、Webservice等 HTTP
HTTPS
Restful
Webservice
* SOAPHTTP
HTTPS
Restful
Webservice
* SOAPHTTP
HTTPS
Restful
Webservice
SOAP
gRPC(后续接入)
TCP(后续接入)
WebSocket(后续接入)SSL证书 可为网关配置多个ssl证书 √ √ √ 访问域名 可为网关配置多个域名进行访问 √ √ √ 数据处理 请求内容与返回内容支持JSON与XML互转 多租户 多个访问策略 √ √ √ 服务编排 把多个API封装成一个API提供服务,对返回数据做重新组装 √ √ 服务发现 支持对接Eureka、Nacos、Consul、Kubernetes等多个服务注册中心 Eureka
Nacos
Consul
KubernetesEureka
Nacos
Consul
KubernetesEureka
Nacos
* Consul负载均衡 根据权重动态分配流量,减小服务器压力 √ √ √ 健康检查 转发列表自动剔除异常后端,后端正常再恢复转发 √ √ √ 用户鉴权 匿名、Basic、Apikey、OAuth2、JWT、OAuth2第三方认证、AK/SK认证等多种鉴权 匿名
Basic
* Apikey匿名
Basic
Apikey
OAuth2
JWT
OAuth2.0第三方认证
* AK/SK认证匿名
Basic
Apikey
JWT
AK/SK认证流控控制 粒度可达API级别 √ √ 熔断API 熔断单个API √ 服务降级 给某个API进行服务降级 √ 灰度发布 金丝雀发布 √ √ API监控统计 监控数据输出到控制台,提供图表(请求数、响应时间等)查看;也可对接Pormetheus、Graphite等第三方组件 √ API告警 告警粒度最细可达API级别,可发送告警邮件,也通过Webhook对接企业内部通知系统、短信API等 √ 日志分析 全面的请求日志、节点日志和控制台日志,方便排查问题和做统计分析,支持输出日志内容到 Prometheus、Graphite等第三方组件 √ √ 节点异常自启 节点异常重新拉起,并产生告警 √ Redis告警 自动监控Redis,异常则产生告警 √ 插件化 基于Golang自行开发插件 √ √ √ 用户权限 给不同的用户添加不同模块的操作权限 √ 导入导出接口文档 Eolinker √ √ 超时 API设置不同超时限制 √ √ √ 重试 为避免网络抖动的情况,API超时重新发送请求 √ √ √ 其他 OPEN API √ √ 服务支持 规划方案、在线客服、产品培训 √ GoKu网关开源版支持插件:
IP黑白名单、Basic鉴权、Apikey鉴权、参数映射、额外参数
GoKu网关企业版支持插件:
流量控制、Basic鉴权、Apikey鉴权、OAuth2.0鉴权、OAuth2.0第三方认证、JWT鉴权、AK/SK认证、IP黑白名单、跨域、防重放攻击、返回头部、默认返回、参数映射、额外参数、熔断、服务降级、请求大小限制、数据缓存、请求xml/json转换、响应xml/json转换
Apinto开源网关支持插件:
请求重写、响应重写、Basic鉴权、Apikey鉴权、JWT鉴权、AK/SK认证、额外参数、参数映射、gzip压缩、流量控制、ip黑白名单、跨域、熔断、access日志
-
如何Debug Apinto微服务网关
前提
操作系统:linux/mac
Golang版本:1.17及其以上
IDEA:Goland
Linux
1、安装最新的gops
go install github.com/google/gops@latest
2、编写启动配置
上图红框处需要特别注意,需要和图中保持一致,此处设置了环境变量APINTO_DEBUG=true,开启Apinto的Debug模式。
如果选择在命令行编译程序,则在编译需要携带-gcflags="all=-N -l"参数,如下
go build -gcflags="all=-N -l" -o apinto
此文不再说明命令行编译程序的debug方法。
3、运行程序
此处需要选择Debug的按钮4、Attach To Process
在弹出的进程列表中选择需要Debug的进程即可
注意 : Debug模式开启后,master进程名称为“apinto start”,当Debug模式关闭,master进程名称为“apinto: master”
Windows
由于Apinto 在实现restart、stop操作时,需要使用到linux系统的信号指令,Windows 上没有相关指令的支持,因此Apinto 不能直接在Windows 上编译运行。
若想在Windows 上启动,则需要在Windows 上安装Ubuntu 子系统。
安装ubuntu子系统
1、安装部署WSL2:安装WSL(一定要升级到WSL2,否则会有些不兼容的问题)
2、安装ubuntu可视化界面,具体教程请参考Ubuntu安装可视化界面
3、Debug程序,Linux Debug方法一致
MAC
与Linux Debug方法一致,若在arm架构上attach失败,无法找到对应的apinto进程,可以先将gops删除,再重新安装。
go install github.com/google/gops@latest
-
Apinto 七月归档
事件一览
一、发布Apinto 0.6.4版本
0.6.4版本修复了0.6.3版本的一系列问题,详情如下:
-
修改额外参数插件value类型
-
修复cli命令操作失败无日志输出的问题
-
修复output拓展缺少CheckSkill方法,导致apinto dashboard不能联动的问题
二、发布Apinto V0.7版本
-
升级raft算法,将kv存储替换成etcd内置的kv实现
注意:由于raft算法升级,旧配置不兼容,若之前使用的 apinto为0.6.x及更老的版本,需要使用apinto-import进行升级 -
修复文件日志驱动配置错误时,删除操作阻塞的问题
-
新增proxy_rewrite_v2插件
-
服务发现忽略scheme字段
关闭的Issue
在七月我们解决并关闭了Github 上的四个Issue,感谢 Github 用户 nonzzz 、Dot-Liu 、chen2eric 、strawcarb 的支持
一、端口占用失败,程序未提示
- Issue传送门:https://github.com/eolinker/apinto/issues/56
- 提供者:chen2eric
- 问题描述:
- 原因:Apinto在cli命令执行时未指定日志输出位置,导致日志输出失败。
- 解决方案:新增初始化cli日志方法,并在程序启动时进行调用
二、快速部署教程访问失败
- Issue传送门:https://github.com/eolinker/apinto/issues/58
- 提供者:strawcarb
- 问题描述:
- 原因:apinto-dashboard教程上线,Readme文档中相关的链接未及时修改
- 解决方案:修改Readme文档中的教程链接
三、支持配置导入导出
- Issue传送门:https://github.com/eolinker/apinto/issues/52
- 提供者:Dot-Liu
- 问题描述:
- 解决方案:官方提供导入工具apinto-import ,支持网关配置通过文件方式导入导出,具体可访问仓库https://github.com/eolinker/apinto-import
四、安装包下载链接固定
- Issue传送门:https://github.com/eolinker/apinto/issues/64
- 提供者:nonzzz
- 问题描述:
- 解决方案:不处理。文件的版本名可以有效减少信息差异,让使用者知道当前下载的版本号、适用的系统和架构。我们了解了其他相关项目,如NSQ和Nacos,他们也是这么做的。
常见问题整理
一、openApi的代码入口在哪?
- 代码目录:github.com/eolinker/eosc/process-admin
二、Apinto转发代码的入口
- 代码目录:github.com/eolinker/apinto/router/router.go. 55行
三、apinto和eosc的关系
eosc是apinto依赖的底层框架,apinto更像是一个有多个拓展组装而成的程序,eosc实现了下述特性:
-
多进程模型,使各个进程各司其职
-
cli命令实现
-
可插拔的插件框架
-
raft集群同步机制
-
定义程序的执行流程
-
端口监听与流量通信机制
-
环境变量机制
-
日志模块底层实现
-
......
四、如何开启Debug模式
Debug模式描述:
-
Apinto执行时只会输出error等级的日志,一般的使用已经满足
-
对于开发调试来说,往往需要了解程序执行各个阶段的交互信息,此时可以开启Debug模式,输出更详细的执行信息
-
由于Debug模式会输出较多日志,除了开发调试、排查程序执行失败等情况,其余时候不建议开启
-
Debug模式默认关闭
开启步骤
(1)在执行程序的服务器/系统设置环境变量
export APINTO_DEBUG=true
(2)启动程序(默认程序已停止运行)
./apinto start
关闭步骤
(1)在执行程序的服务器/系统设置环境变量
export APINTO_DEBUG=false
(2)启动程序(默认程序已停止运行)
./apinto start
写在最后
目前Apinto 及其周边项目已经开源,我们希望通过Apinto强大的插件拓展能力,用户可像乐高积木一样根据需要自行拓展Apinto的插件,以满足不同的业务市场需求。
Apinto 目前属于萌芽阶段,我们希望集合广大开源爱好者的力量,与大家一起讨论方案,接受大家的批评指正,一起将产品打磨完善,做下一个端与端间的Traffic Middleware。
这是一个开放和积极的项目,我们诚挚地邀请您一起参与到我们的项目开源工作中。每一个贡献都是有意义的,包括但不限于:
-
查找bugs,取得性能上的提升
-
帮助完善文档,提供用户操作体验
-
提交你们的issue,让我们知道您的奇思妙想
-
参与自定义插件的开发,丰富apinto的能力
-
...
欢迎各位开源爱好者参与到Apinto 项目中,和我们一起为开源事业贡献自己的力量。
联系我们
-
Github 链接:https://github.com/eolinker/apinto
-
QQ群号:725853895
-
-
升级指南 | 如何从Apinto v0.6升级到v0.7
前言
Apinto v0.7版本已经发布,由于该版本主要是针对Raft协议的实现进行了一次升级,使用etcd的kv实现替换了eosc自研的kv实现,导致新旧版本数据不兼容,若直接使用0.7版本替换旧版本,会导致数据加载失败。
Raft协议升级考虑
- 由于早期选型时对etcd的源码调研不够完整,旧版本只使用了etcd的raft协议实现,eosc重新实现了kv的处理,该实现的可靠性、性能未经证明
- 本次升级抛弃了eosc自己实现的kv,使用etcd内置的kv实现,该模型及代码经历过海量用户长时间、大规模的使用,可靠性、性能方面具有一定保证,并且方便以后同步升级到etcd的新版本
为了确保前后数据可以正常迁移备份,官方提供工具库apinto-import进行数据的导入操作,确保数据正常迁移。升级操作分为单节点升级和集群升级两种情况,详细操作如下
单节点升级
1、将旧数据导出,浏览器访问接口:{ip}:{port}/export
2、关闭旧节点
./apinto stop
3、下载并解压新版本节点
cd {存放目录} && wget https://github.com/eolinker/apinto/releases/download/v0.7.0/apinto-v0.7.0.linux.x64.tar.gz && tar -zxvf apinto-v0.7.0.linux.x64.tar.gz && cd apinto
4、启动新节点
./apinto start
5、下载并解压导入程序
wget https://github.com/eolinker/apinto-import/releases/download/v1.0.0/apinto-import-v1.0.0.linux.x64.tar.gz && tar -zxvf apinto-import-v1.0.0.linux.x64.tar.gz && cd apinto-import
6、导入配置数据(当前版本只支持zip类型文件)
./apinto-import import -path "{压缩包名称}" --apinto-address {apinto访问地址}
示例:
./apinto-import import "export_2022-07-29 161215.zip" --apinto-address http://127.0.0.1:9400
集群节点升级
1、下载并解压导入程序
wget https://github.com/eolinker/apinto-import/releases/download/v1.0.0/apinto-import-v1.0.0.linux.x64.tar.gz && tar -zxvf apinto-import-v1.0.0.linux.x64.tar.gz && cd apinto-import
2、将旧数据导出,浏览器访问接口:{ip}:{port}/export
3、进入任意节点服务器(下述描述为节点A),让该节点离开集群
./apinto leave
4、关闭节点A
./apinto stop
5、下载并解压新版本节点
cd {存放目录} && wget https://github.com/eolinker/apinto/releases/download/v0.7.0/apinto-v0.7.0.linux.x64.tar.gz && tar -zxvf apinto-v0.7.0.linux.x64.tar.gz && cd apinto
6、启动新节点A
./apinto start
7、导入配置数据
./apinto-import import -path "{压缩包名称}" -apinto-address {apinto访问地址}
示例:
./apinto-import import -path "export_2022-07-29 161215.zip" -apinto-address http://127.0.0.1:9400
8、进入到剩余的其他节点,依次执行步骤3、4、5、6
9、新节点加入节点A所在集群
./apinto join --ip {新节点广播ip} --addr={节点A请求地址}
示例:
./apinto join --ip 10.18.0.1 --addr=10.18.0.2:9400
写在最后
目前Apinto 及其周边项目已经开源,我们希望通过Apinto强大的插件拓展能力,用户可像乐高积木一样根据需要自行拓展Apinto的插件,以满足不同的业务市场需求。
Apinto 目前属于萌芽阶段,我们希望集合广大开源爱好者的力量,与大家一起讨论方案,接受大家的批评指正,一起将产品打磨完善,做下一个端与端间的Traffic Middleware。
这是一个开放和积极的项目,我们诚挚地邀请您一起参与到我们的项目开源工作中。每一个贡献都是有意义的,包括但不限于:-
查找bugs,取得性能上的提升
-
帮助完善文档,提供用户操作体验
-
提交你们的issue,让我们知道您的奇思妙想
-
参与自定义插件的开发,丰富apinto的能力
-
...
欢迎各位开源爱好者参与到Apinto 项目中,和我们一起为开源事业贡献自己的力量。
联系我们
-
Github 链接:https://github.com/eolinker/apinto
-
QQ群号:725853895
-
更新|Apinto V0.7.版本发布
更新说明
1、该版本主要涉及到raft协议的升级,kv实现部分替换成etcd内置的kv实现
- 升级原因:
- 由于早期选型时对etcd的源码调研不够完整,旧版本只使用了etcd的raft协议实现,eosc重新实现了kv的处理,该实现的可靠性、性能未经证明
- 本次升级抛弃了eosc自己实现的kv,使用etcd内置的kv实现,该模型及代码经历过海量用户长时间、大规模的使用,可靠性、性能方面具有一定保证,并且方便以后同步升级到etcd的新版本
2、修复文件日志配置错误时,导致程序阻塞的问题
配置错误包括以下场景:
-
没有创建文件夹、日志权限
-
文件目录不存在
-
磁盘空间满,无法创建日志文件
-
......
3、新增proxy_write_v2 插件,提供更加灵活直观的转发重写配置,若先前已经使用了proxy_write 插件,可自行删除旧插件,重新配置proxy_write_v2 插件,相关教程请参考proxy_write_v2插件配置
4、删除服务发现的scheme 字段
注意事项
当前版本由于替换了内置的kv实现,其数据和v0.6.4 及其之前版本不兼容,官方提供了数据导入工具apinto-import ,导入操作请点击Apinto升级指南了解具体升级细节
版本预告(v0.8.0)
1、会话机制升级,为多协议提供底层会话支持
2、新增Websocket协议转发功能
3、新增环境变量模块,支持使用环境变量配置网关转发信息,包括但不限于路由、上游服务、服务发现、鉴权、各类插件
写在最后
目前Apinto 及其周边项目已经开源,我们希望通过Apinto强大的插件拓展能力,用户可像乐高积木一样根据需要自行拓展Apinto的插件,以满足不同的业务市场需求。
Apinto 目前属于萌芽阶段,我们希望集合广大开源爱好者的力量,与大家一起讨论方案,接受大家的批评指正,一起将产品打磨完善,做下一个端与端间的Traffic Middleware。
这是一个开放和积极的项目,我们诚挚地邀请您一起参与到我们的项目开源工作中。每一个贡献都是有意义的,包括但不限于:-
查找bugs,取得性能上的提升
-
帮助完善文档,提供用户操作体验
-
提交你们的issue,让我们知道您的奇思妙想
-
参与自定义插件的开发,丰富apinto的能力
-
...
欢迎各位开源爱好者参与到Apinto 项目中,和我们一起为开源事业贡献自己的力量。
联系我们
-
Github 链接:https://github.com/eolinker/apinto
-
QQ群号:725853895
- 升级原因:
-
更新 | Apinto v0.6版本发布
前言
经过两个月的设计开发,Apinto v0.6版本于2022年6月12日正式发布
本次更新与Apinto Dashboard同步更新上线,重写了openAPI渲染模版逻辑,大家可以选择使用开源的Apinto Dashboard进行可视化网关配置操作,也可以通过最新版的openAPI,开发属于自己的一套可视化UI界面。
进程模型优化
新增admin进程,提供openAPI及渲染模版内容
进程名称及其作用如下:
- master进程:
- 类型:常驻进程
- 作用
- 守护进程,管理子进程的启停
- 负责Raft集群的通信与同步
- Cli命令交互
- openAPI流量入口,监听管理端口
- 将openAPI请求转发到leader节点的admin进程中处理
- admin进程
- 类型:常驻进程,仅当节点为leader时启动
- 作用
- 配置态进程,该进程缓存了worker进程运行所需要的所有信息
- 处理openAPI请求,校验请求数据的合法性
- 提供render模版,供dashboard渲染
- worker进程
- 类型:常驻进程
- 作用
- 网关核心进程,执行流量转发的工作流程
- 支持加载外部插件
- 当插件更新/重加载时,该进程会重启
- help进程:
- 类型:临时进程
- 作用:
- 由master启动,处理完临时任务后停止
- 当执行安装/升级拓展时,会优先启动该进程校验拓展的可靠性及合法性
raft集群模型优化,重写事件同步操作
集群同步模型如下:
丰富openAPI接口,支持页面渲染
开发者可通过修改配置的tag 标签,生成相应格式的Json Scheme 渲染模版,tag 标签内容参考json-scheme标签说明
Dashboard调用流程如下:
删除全局插件类型(原“type”字段)
插件不再区分生效阶段,生效顺序及生效阶段由开发者进行定义。
插件执行顺序如下图:
移除Cli操作拓展插件功能(包括安装、更新、卸载等)
拓展安装、更新、卸载等功能将在下版本通过openAPI方式提供,与插件市场同步上线。
写在最后
目前Apinto 及其周边项目已经开源,我们希望通过Apinto强大的插件拓展能力,用户可像乐高积木一样根据需要自行拓展Apinto的插件,以满足不同的业务市场需求。
Apinto 目前属于萌芽阶段,我们希望集合广大开源爱好者的力量,与大家一起讨论方案,接受大家的批评指正,一起将产品打磨完善,做下一个端与端间的Traffic Middleware。
这是一个开放和积极的项目,我们诚挚地邀请您一起参与到我们的项目开源工作中。每一个贡献都是有意义的,包括但不限于:-
查找bugs,取得性能上的提升
-
帮助完善文档,提供用户操作体验
-
提交你们的issue,让我们知道您的奇思妙想
-
参与自定义插件的开发,丰富apinto的能力
-
...
欢迎各位开源爱好者参与到Apinto 项目中,和我们一起为开源事业贡献自己的力量。
联系我们
-
Github 链接:https://github.com/eolinker/apinto
-
QQ群号:725853895
- master进程:
-
虽迟但到,Apinto Dashboard v1.0 Beta版本正式发布🎉🎉
让各位久等了,经过将近两个月的设计开发,Apinto Dashboard V1.0 Beta版本于2022年6月19日正式发布🎉🎉。
此次发布的Apinto Dashboard是开源网关Apinto 的衍生项目,它为Apinto提供了可视化配置界面。
从此,我们将告别繁复的命令行curl命令,只需要在ui界面轻轻一点,就可以自动生成配置,上手成本极低。我们可以快速将后端接口托管到网关中,并可以配置鉴权、流控等安全性操作,用Apinto构建安全可靠的服务Api。
特性
通过UI界面动态更新Apinto网关配置
动态加载模版,根据需要开启/隐藏相关界面
修改文件config.yml的professions配置,即可在侧边栏中隐藏/显示
配置信息:
导航栏:
Json Scheme交互,自动渲染界面,约束配置数据
交互数据如下:
界面渲染:
提供丰富的操作日志,监控配置变更记录
在Dashboard的所有都会记录在操作日志列表中,点击详情可以看到相关操作涉及的数据改动详情。我们也可以通过搜索功能,查找某个时间段的记录,这样我们以后排查问题的时候也能判断是否有非法操作。
友好的操作体验,自动获取流程依赖
Dashboard提供友好的操作体验,在我们配置插件的时候,可以自行选择直接输入完整json配置,也可以选择使用UI配置,配置完成后,json部分将自动同步,ui也是页面也是根据json-scheme语法自动生成。
以后开发apinto的模块或者拓展时,只需要定义好配置的类型、label、最大值最小值等相关限制,就可自动生成页面。
整个操作也是联动的,比如我们现在需要为路由新增一个鉴权,此时,只要在路由页面点击增加鉴权插件,然后在选择框里选择相应的鉴权,提交即可,这样,带有鉴权的路由便生成完成。
相信大家已经迫不及待想去试用了,接下来我将给大家介绍下如何部署Apinto Dashboard。
部署
由于Apinto Dashboard 是Apinto 的可视化UI项目,因此在部署该项目前,需要确保Apinto项目已经部署完成。
若未部署Apinto ,请参考教程Apinto部署
1. 下载并解压安装包
wget https://github.com/eolinker/apinto-dashboard/releases/download/v1.0.4-beta/apinto-dashboard-v1.0.4-beta.linux.x64.tar.gz && tar -zxvf apinto-dashboard-v1.0.4-beta.linux.x64.tar.gz && cd apinto-dashboard
2. 启动程序
nohup ./apinto-dashboard > logs/stdout_apinto-dashboard_"$(date '+%Y%m%d-%H%M%S')".log 2>&1 &
该命令会将日志输出到logs 目录下以stdoutapinto-dashboard 为前缀的日志文件中
3. 浏览器打开Apinto Dashboard 地址
本示例在本地部署,因此ip为127.0.0.1,端口为8081,在浏览器中输入账号密码登录即可
至此,Dashboard部署完毕,如果大家需要了解更多的使用信息,请点击更多
写在最后
-
APINO 简介:Apinto是一个基于 Golang 开发的微服务网关,能够实现高性能 HTTP API 转发、多租户管理、API 访问权限控制等目的,拥有强大的自定义插件系统,用户可以自行扩展,能够快速帮助企业进行 API 服务治理、提高 API 服务的稳定性和安全性。接下来我们将提供插件市场,通过Apinto强大的插件拓展能力,用户可像乐高积木一样根据需要自行拓展Apinto的插件,丰富Apinto的能力。
-
Github 链接:https://github.com/eolinker/apinto
-
QQ群号:725853895
-