微服务时代,从nginx到kong的演进
在我们传统业务中,Nginx广泛应用于七层网关场景。但近年来由于微服务的流行。 Nginx的生态链也在不断演化。
2007年,中国大师张一纯基于Nginx开发了OpenResty。 2009 年,marco 与 OpenResty 一起开发了 Kong。截至撰写本文时,该项目已拥有 33,000 颗星。
今天我通过腾讯云来给大家介绍一下Kong的不同特性。
1。 Nginx是如何演进kong的
在传统的互联网服务中,网关的主要需求是反向代理、负载均衡、路由等基础功能。
传统的企业架构图通常采用四层LVS进行外部IP汇聚,第七层采用Nginx,负责七层HTTPS协议的使用、反向代理、负载均衡和路由。 ![]()
每个Nginx Worker进程在底层都使用一个epoll对象来高效管理海量socket连接上的网络事件的处理。参见飞哥之前写的,了解Nginx的高性能网络是如何工作的! 这篇文章。
性能问题已经解决了,但是现在随着微服务的发展,服务被拆解得非常碎片化,降低了连接度,也使得服务很难统一管理。
例如,查找服务。在Nginx中,所有后台服务都以静态配置文件的形式存储。每当后端服务的IP地址发生变化时,就必须重新更改配置文件。
但微服务时代,后端采用容器部署,每次版本发布都会引起IP变化。另外,微服务时代还需要动态扩缩容,导致后端服务IP发生变化。传统的通过修改配置文件来重新分配流量的方式显然不能满足需求。
除了服务发现之外,微服务时代对网关还提出了一些新的要求,比如限流、协议转换、认证、安全等功能,这些功能都必须在网关中得到支持。
我们都知道Nginx是用c语言编写的。如果要基于Nginx来开发这些功能,成本还是相当高的。首先,C的门槛比其他语言高。其次,每一次功能的改变都需要Nginx重新编译和发布。
幸运的是,中国大师张一纯发明了OpenResrt,并将Lua JIT嵌入到Nginx中,以支持使用Lua语言方便地扩展和开发Nginx功能。这样,每当有新的功能插件时,只需发布 Lua 代码并重新加载 Nginx 即可。
飞哥之前负责的搜狗浏览器,很多模块都是采用这个模型,用lua语言来扩展Nginx的功能。简单方便,基本接近原生Nginx的性能。
在OpenResty的帮助下,网关实现其功能的技术方式现已开放。 Mashape后来迭代发布了基于OpenResty的新网关Kong。
我觉得Kong最优雅的设计就是它的插件机制。该网关依靠插件支持来扩展网关的功能,包含 60 多个插件。当您对网关有特定需求时,您可以通过直接选择一个或多个插件来轻松支持Nginx的新功能。 ![]()
Kong的扩展机制是其高扩展性的原因。 Kong可以轻松提供各种路由和服务插件。 Kong支持网关所需的所有基本功能。如果现有的插件不能满足您的需求,您还可以使用lua语言轻松开发满足您需求的插件。
2。腾讯云
kong的kong环境配置起来还是有点复杂。它需要Postgres或Cassandra等数据库来管理路由配置、服务配置、上游配置和其他信息。您还需要安装 Konga(最好的 Kong 管理器)。
为了方便,我以腾讯云上的Kong为例,展示Kong的功能。您可以在腾讯云微服务引擎后端一键创建kong网关。 ![]()
一旦您在云端创建了 kong 实例,数据库和管理器 Konga 将一键自动创建。 ![]()
在Konga管理后台,您可以通过服务和路线菜单来管理服务和路线。 ![]()
以下几乎所有工作都可以通过 conga 界面直观地完成。例如,如果您想添加证书,请单击“证书”按钮。在“Server Name”提示中填写“Certificate”、“Key”和“domain name”,单击“SEND CERTIFICATES”发送,即可完成。 ![]()
![]()
服务必须受到监控。 Google 的站点可靠性工程师 (SRE) 团队提出了几个用于跟踪服务的黄金指标,例如延迟、流量和错误。 kong 可以轻松地与 Prometheus 等基于云的组件结合起来,以实现这些黄金指标的跟踪功能。
腾讯云无需额外配置。这些功能是自动配置的,可以直接在实例监控页面查看。 ![]()
kong 还可以连接到 ELK 以查看和检索日志。 ![]()
如果您想长期保留日志,可以直接使用CLS日志服务来实现长期存储。 ![]()
此外,用户界面上并没有显示腾讯云的kong还支持无损扩展、同城多任务等高可用特性。
3。总结
微服务时代,网关的很多功能必须扩展。然而,在Nginx中扩展这些功能并不是很方便。需要开发和C语言知识,发布前还需要重新编译,非常费力。 OpenResty 支持 lua JIT,它允许您使用简单的 lua 语言扩展网关的功能。 Kong网关根据网关微服务的需求,通过插件机制扩展了网关的功能。并开发了很多现成的插件可以直接使用。
最后,我使用腾讯云展示了如何通过konga配置网关、监控服务的黄金指标以及执行日志搜索。简而言之,在当今的互联网中,kong 可能比 nginx 更适合您的业务!
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网