array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 微服务网关Kong 1.0正式发布!提供100+项功能 - 爱码网

今天,我们很高兴地发布Kong 1.0 GA——一个可扩展、快速、开源的微服务API网关,用于管理、保护和连接混合和云原生架构。Kong位于服务之前,并可通过插件进行扩展,包括身份验证、流量控制、可观察性等。

经过多年的开发,成千上万的用户在生产环境中使用了Kong,我们增加了众多重要的功能,并进行了大量的修复,让Kong变得更快、更灵活、更具弹性。

服务网格

用户现在不仅可以将Kong作为API网关部署,还可以作为独立的service-mesh代理。Kong插件提供了与服务网格相关的关键功能,可以与其他云原生技术集成,包括Prometheus、Zipkin、健康检查、金丝雀部署、蓝绿部署,等等。

借助边车代理提供的跟高的可见性、安全性和弹性,服务网络有助于解决微服务所面临的一些挑战。除了这些好处之外,与其他供应商相比,Kong的服务网络提供了一些关键优势,所有这些优势都源于我们注入了与边缘边车代理相同的运行时。

微服务网关Kong 1.0正式发布!提供100+项功能

Mutual TLS和TCP

在1.0版本中,Kong集群创建了一个Certificate Authority,Kong节点可以用它来建立Mutual TLS身份验证。此外,Kong现在可以路由原始TCP流量,这意味着Kong现在可以平衡来自邮件服务器和其他基于TCP的应用程序的流量,一直从L7到L4。

gRPC

除了REST之外,Kong 1.0现在还支持gRPC协议。gRPC基于HTTP/2,为希望以低开销和低延迟连接东西向流量的Kong用户提供了另一种选择,有助于用户在混合环境中进行更多网格部署。

新的迁移框架

Kong 1.0引入了一个新的数据库抽象对象(Database Abstraction Object,DAO),它可以简化从一个数据库模式到另一个数据库模式的迁移,并且停机时间几乎为零。新的DAO允许用户一次性升级他们的Kong集群,无需手动升级每一个节点。

插件开发套件(PDK)

PDK是一组Lua函数和变量,自定义插件可用它们实现自己的逻辑。尽管它早在0.14.0中就已发布,不过1.0版本的变更可以保证使用PDK构建的插件与1.0及更高版本兼容。与从头开始编写插件相比,它提供了很多优势,其中包括:

标准化

所有Kong插件都需要一系列标准功能,而PDK提供了这些开箱即用的功能,既节省了插件开发人员的时间,又保证了使用PDK开发的插件具有相似的行为(相同的解析规则、相同的错误等),使它们更易于使用。

可用性

PDK的接口比ngx_lua API更容易使用。PDK允许用户将某些插件操作(例如日志记录或缓存)与其他插件隔离开。

兼容性

PDK的语义版本化可以保持向后兼容。在未来,插件将能够锁定它们所依赖的PDK版本。

自由移动服务

借助Kong,你可以立即将在边缘使用的功能扩展到网格中。将Kong部署在与容器相同的主机上,就可以轻松地将容器中的服务移到网格中。

无缝连接

将网格中的服务与所有环境、平台和供应商的服务相连接。在不修改服务代码的情况下,使用Kong来弥合云原生设计与传统架构模式之间的差距。

健壮的插件库

我们的插件架构为用户提供了无与伦比的灵活性。Kong插件提供了开箱即用的关键功能,并支持与其他云原生技术的无缝集成,包括Prometheus、Zipkin和其他很多技术。插件在本地与每个服务运行在一起,不需要额外的网络跳转到另一个组件。

低延迟

Kong及其插件针对性能进行了优化。其他平台可能会在容器或网格的服务之间引入延迟,而我们引入的延迟不到一毫秒。

数据平面与控制平面的分离

Kong 1.0允许用户在配置中指定单独的控制平面和数据平面。以前,你需要单独配置每个集群的数据平面和控制平面,现在你可以在同一个地方配置,然后反映在多个Kong集群中。独立的数据平面和控制平面配置让Kong用户可以更好地控制大型部署。这种配置分离让部署变得更加安全,因为你可以将Kong的配置放在防火墙后面,仅暴露出数据平面。

微服务网关Kong 1.0正式发布!提供100+项功能

Runloop性能改进

为了确保数据平面的性能能够满足服务网格和其他去中心化架构的需求,我们对插件Runloop进行了一些改进。

预读取执行

插件现在可以在预读取阶段执行代码。Kong用户可以在建立初始TCP连接时初始化插件来提高性能。

网关与网格配置

所有插件都有一个新字段run_on,用于在服务网格和“常规API网关”模式下控制插件的**。这样可以更精细地控制插件的活动,避免冗余并进一步提高性能。

AWS Lambda和Azure FaaS

Kong 1.0还改进了与AWS Lambda和Azure FaaS的交互,包括Lambda Proxy Integration和Azure Functions插件的改进,用以过滤掉在将HTTP/1.1响应代理到HTTP/2客户端时不被HTTP/2允许的标头。

100多项功能和修复

你可以在Changelog中找到所有Kong版本的变更列表。1.0版本包含了很多重大变更,因此在升级时请务必阅读1.0版本的升级路径

Kong的未来

虽然我们现在承诺Kong会保持稳定和向后兼容,但我们仍然有很长的路要走。我们很高兴继续与你一起构建Kong项目和社区!我们非常感谢社区为实现这一里程碑提供的所有支持,我们期待着继续共同构建和成长。

微服务网关Kong 1.0正式发布!提供100+项功能

自从四年前开源Kong以来,来自世界各地的数百名贡献者对Kong代码库进行了无数次的改进,这些改进让我们迎来了1.0版本。我们十分感谢Kong的用户和贡献者。我们最初在开源Kong时,并没有想到它的社区会有如此惊人的增长,并且一直在持续!

Kong CTO Marco Palladino说,“在开发Kong时,我们怀揣着一个混合世界的愿景,而Kong 1.0代表了实现这一愿景的关键一步。我们与社区一起对平台架构进行了重大变更,包括支持服务网格的能力,这将使我们的用户能够处理任何跨供应商、环境和生态系统的部署。在未来,我们将会更加深入支持更多新兴的生态系统”。

英文原文:https://konghq.com/blog/kong-1-0-ga/

相关文章: