2020年6月12日13:48:33
github:https://github.com/apache/incubator-apisix
支持的功能很多,我个人比较推荐服务发现,这个很省资源,不然得吧java的一套全部上上去,这样其他语言的也可以轻松做微服务了
APISIX 是一个云原生、高性能、可扩展的微服务 API 网关。
它是基于 Nginx 和 etcd 来实现,和传统 API 网关相比,APISIX 具备动态路由和插件热加载,特别适合微服务体系下的 API 管理。
如果你正在构建网站、移动设备或 IoT(物联网)的应用,那么你可能需要使用 API 网关来处理接口流量。
APISIX 是基于云原生的微服务 API 网关,它是所有业务流量的入口,可以处理传统的南北向流量,也可以处理服务间的东西向流量,也可以当做 k8s ingress controller 来使用。
APISIX 通过插件机制,提供动态负载平衡、身份验证、限流限速等功能,并且支持你自己开发的插件。
你可以把 Apache APISIX 当做流量入口,来处理所有的业务数据,包括动态路由、动态上游、动态证书、
A/B 测试、金丝雀发布(灰度发布)、蓝绿部署、限流限速、抵御恶意攻击、监控报警、服务可观测性、服务治理等。
全平台
多协议
client_id 对 MQTT 进行负载均衡,同时支持 MQTT 3.1.* 和 5.0 两个协议标准。全动态能力
host、uri、schema、enable_websocket、headers信息。status code、body、headers。精细化路由
cookie, args 等做为路由的条件,来实现灰度发布、A/B 测试等功能{"arg_age", ">", 24}安全防护
运维友好
conf/config.yaml 中的 allow_admin 字段,指定允许调用 Admin API 的 IP 列表。同时需要注意的是,Admin API 使用 key auth 来校验调用者身份,在部署前需要修改 conf/config.yaml 中的 admin_key 字段,来保证安全。高度可扩展
init, rewrite,access,balancer,header filer,body filter 和 log 阶段。balancer 阶段使用自定义负载均衡算法。APISIX 在以下操作系统中可顺利安装并做过运行测试,需要注意的是:OpenResty 的版本必须 >= 1.15.8.1:
CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, ARM64 Ubuntu 18.04
安装 APISIX 的步骤:
sudo apisix start
入门指南是学习 APISIX 基础知识的好方法。按照 入门指南的步骤即可。
更进一步,你可以跟着文档来尝试更多的插件。
APISIX 内置了对 Dashboard 的支持,使用步骤如下:
确保你的运行环境中使用了最新的 Node.js 版本(>= 10)。
下载 dashboard 子模块的源码:
git submodule update --init --recursive
安装 yarn
安装依赖并构建
cd dashboard
yarn && yarn build:prod
/dist 目录下的所有文件,拷贝到 apisix/dashboard 目录下。cp -r dist/* .
使用浏览器打开 http://127.0.0.1:9080/apisix/dashboard/ 即可使用,
不用填写用户名和密码,直接登录。
Dashboard 默认只允许 127.0.0.1 访问。你可以自行修改 conf/config.yaml 中的 allow_admin 字段,指定允许访问 dashboard 的 IP 列表。
使用 AWS 的 8 核心服务器来压测 APISIX,QPS 可以达到 140000,同时延时只有 0.2 毫秒。
| 功能 | Apache APISIX | KONG |
|---|---|---|
| 动态上游 | 支持 | 支持 |
| 动态路由 | 支持 | 支持 |
| 健康检查和熔断器 | 支持 | 支持 |
| 动态SSL证书 | 支持 | 支持 |
| 七层和四层代理 | 支持 | 支持 |
| 分布式追踪 | 支持 | 支持 |
| 自定义插件 | 支持 | 支持 |
| REST API | 支持 | 支持 |
| CLI | 支持 | 支持 |
| 功能 | Apache APISIX | KONG |
|---|---|---|
| 项目归属 | Apache 软件基金会 | Kong Inc. |
| 技术架构 | Nginx + etcd | Nginx + postgres |
| 交流渠道 | 微信群、QQ群、邮件列表、Github、meetup | Github、论坛、freenode |
| 单核 QPS (开启限流和prometheus插件) | 18000 | 1700 |
| 平均延迟 | 0.2 毫秒 | 2 毫秒 |
| 支持 Dubbo 代理 | 是 | 否 |
| 配置回滚 | 是 | 否 |
| 支持生命周期的路由 | 是 | 否 |
| 插件热更新 | 是 | 否 |
| 用户自定义:负载均衡算法、路由 | 是 | 否 |
| resty <--> gRPC 转码 | 是 | 否 |
| 支持 Tengine 作为运行时 | 是 | 否 |
| MQTT 协议支持 | 是 | 否 |
| 配置生效时间 | 事件通知,低于1毫秒更新 | 定期轮询,5 秒 |
| 自带控制台 | 是 | 否 |
| 对接外部身份认证服务 | 是 | 否 |
| 配置中心高可用(HA) | 是 | 否 |
| 指定时间窗口的限速 | 是 | 否 |
| 支持任何 Nginx 变量做路由条件 | 是 | 否 |
有很多公司和组织把 APISIX 用户学习、研究、生产环境和商业产品中,包括:
欢迎用户把自己加入到 Powered By 页面。
如果你对 APISIX 的开发和使用感兴趣,欢迎加入我们的 QQ 群来交流:
灵感来自 Kong 和 Orange。
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古
matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现