(原创)大话微服务架构之api网关-apiGateway-技术选型
Posted 微服务DevOps
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(原创)大话微服务架构之api网关-apiGateway-技术选型相关的知识,希望对你有一定的参考价值。
上篇简单的介绍了下微服务网关api gateway的一些基本功能和职责,这边我们来分享下微服务网关的技术选型。
在微服务架构体系中,微服务网关的重要性是不言而言了,那么我们该到底如何实现微服务网关中的这些功能或者是选择一些开源的网关呢?下面小编来分享下当下一些开源的微服务网关产品。
1、TYK,我第一次研究微服务网关就是这款啦。原因也很简单,开源(当然也有收费版本)、跨平台、容易部署,UI界面优美,支持多种鉴权方式,本身也是Go语言开发的,大家也知道Go语言性能还是非常好的、而且背后还有Google的大力支撑和推广。
Tyk优点:
l请求配额和速率限制
l多种认证方式
l数据分析
l不停机发布REST API
l能够导入Apiary 或者 Swagger接口文档,并Mock
l性能监控
l报文转换
l跨平台、跨语言调用
Tyk缺点:
l整体界面虽然美观,但Api管理界面不支持分页,展示不够友好,查询比较费劲。
l鉴权认证方式说明文档较少,之前试过几次都没有成功
lTyk只能支持HTTP REST API,不支持SOAP或者RPC等其他服务。
由于篇幅原因,这里先简单介绍到这里,后续独立起一个主题来详细分享下TYK的安装和各项功能的使用。
2、Kong网关
Kong是一款基于nginx_Lua模块写的高可用,易扩展由Mashape公司开源的API Gateway项目。由于Kong是基于Nginx的,所以可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。
Kong主要有三个组件:
Kong Server :基于nginx的服务器,用来接收API请求。
Apache Cassandra/PostgreSQL :用来存储操作数据。
Kong dashboard:官方推荐UI管理工具,当然,也可以使用 restfull 方式 管理admin api。
Kong采用插件机制进行功能定制,插件集(可以是0或n个)在API请求响应循环的生命周期中被执行。插件使用Lua编写,目前已有几个基础功能:HTTP基本认证、密钥认证、CORS( Cross-origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API请求限流、请求转发以及nginx监控。
Kong优点:
l支持多种客户端语言,如Java、Dotnet、Python
l社区繁荣,如Github星标数都超过了TYK
l基于Kong的第三方插件很多,比如关AdminUI工具都有很几个语言版本的
l基于Nginx性能超好
Kong缺点:
l功能太多(对,有时优点太多也就成了缺点)
l学习成本高、有一点的学习门槛
3、SpringCloud ApiGateway
这个就不用多说了,SpringCloud家族的一员。
优点:完美兼容SpringCloud那一套架构
缺点:只支持Java,功能单一、只提供简单的路由转发功能,而且还得手工配置路由映射规则(当然,现在已经有好多UI工具了)
4、Ocelot
国外牛人开源的一套基于NetCore的微服务网关,自从腾讯财付通开始基于它改造时才被火了起来,不过基于中间件的这种设计理念还真是值得借鉴,请看下图:
缺点是,路由规则得手工配置在文本文件中,yaml格式,没有UI操作界面。
5、基于公有云Saas平台的ApiGateway
这里需要吐槽一下的是亚马逊云的apigateway,除了基于resouce的这种api命名比较规范外,其UI操作界面和基于Lamba那一套真是让国人很不习惯,相反国内其它云都做得比较好,比如有阿里云、华为云和腾讯云。
6、自研Api gateway
如果公司自己有实力,有内外网需要网关进行网络中转的,那么可以根据具体业务需求和特色自己开发一套微服务网关,开发语言本身没有好坏,性能也是相对的,主要看场景,如何去平衡利弊。
以上是关于(原创)大话微服务架构之api网关-apiGateway-技术选型的主要内容,如果未能解决你的问题,请参考以下文章