简介:微服务网关被作为微服务面向客户端的单一入口,用来处理横向的关注点,包括访问控制、速率限制、负载均衡等等。真正用起来时,我们还需要关注更多的纵向因素,例如服务发现能力、更全面的监控可观测能力、更高的稳定性保障等。

【云原生应用加速发布会】传送门:https://yqh.aliyun.com/live/detail/22720
点击查看详情:https://yqh.aliyun.com/live/cloudnative_release

微服务网关被作为微服务面向客户端的单一入口,用来处理横向的关注点,包括访问控制、速率限制、负载均衡等等。真正用起来时,我们还需要关注更多的纵向因素,例如服务发现能力、更全面的监控可观测能力、更高的稳定性保障等。
近日,阿里云微服务引擎MSE重磅发布网关功能,将在网关的稳定性、安全性、功能完备性上提供更多增值价值,开启微服务“大门”的云化时代。

一、微服务“大门”有哪些选择?

1、性能选择-Nginx

Nginx 应该是 Web 应用的标配组件,使用场景包括负载均衡、反向代理、代理缓存等。Nginx 的内核的设计非常微小和简洁,实现的功能也相对简单,仅仅通过查找配置文件与请求进行 URL 匹配,用于启动不同的模块去完成相应的工作。
Nginx 在启动后,会有一个 Master 进程和多个 Worker 进程,Master 进程和 Worker 进程之间是通过进程间通信进行交互的。Worker 工作进程的阻塞点是在像 select()、epoll_wait() 等这样的 I/O 多路复用函数调用处,以等待发生数据可读 / 写事件。Nginx 采用了异步非阻塞的方式来处理请求,是可以同时处理成千上万个请求的。

2、服务亲和-Zuul & Sping Cloud Gateway

Zuul 是 Netflix 开源的微服务网关组件,其可以配合 Eureka、Nacos 等开源产品实现不错的服务发现能力,同时集成Ribbon、Hystrix 或 Sentinel 等组件实现对整个链路的流控。
Zuul 的核心是一系列的过滤器,这些过滤器许多功能,例如:

鉴权与访问控制:识别每次请求的合法性,并拒绝那些没有在授权列表中的来源请求。
审计与监控:记录每次请求/响应的内容,以及 RT/错误率等,从而分析出 API 的动态质量、安全情况。
动态路由负载:动态地将请求路由分流到不同的服务、应用或者集群。
统一上下文:在请求转发前根据业务需求设置公共的上下文信息向后传递。
Mock 响应:针对简单请求可以组合配置中心,直接在网关层直接响应,从而避免其转发到内部。

上面提及的这些特性是 Nginx 所没有的,Netflix 公司研发 Zuul 是为了解决微服务场景的诸多问题,而不仅仅是做一个类似于 nginx 的反向代理。
Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。
Spring Cloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cloud 2.0 以上版本中,没有对新版本的 Zuul 2.0 以上最新高性能版本进行集成,仍然还是使用的 Zuul 2.0 之前的非 Reactor 模式的老版本。而为了提升网关的性能,SpringCloud Gateway 是基于 WebFlux 框架实现的,而 WebFlux 框架底层则使用了高性能的 Reactor 模式通信框架 Netty。
Spring Cloud Gateway 的目标,不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。

3、两者兼得-Kong

Kong 是一款基于 Nginx_Lua 模块写的高可用服务网关,由于 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 网关具有以下的特性:

可扩展性:通过简单地添加更多的服务器,可以轻松地进行横向扩展,这相较于 nginx 能让你省心不少,但可能相对于 Zuul 稍稍弱些;
模块化:可以通过添加新的插件进行扩展,这些插件可以通过 RESTful Admin API 轻松配置;
在任何基础架构上运行:Kong 网关可以在任何地方都能运行,可以在云或内部网络环境中部署 Kong。

二、自建 OR 云产品

但是!有过使用经验的同学应该会发现,真正用起来我们还需要更多的服务发现能力、更全面的监控可观测能力、更高的稳定性保障,那么到底是自己手工打造还是购买成本更合适呢?我们先来看下自建和云产品的比较:

1、自建 VS 托管云产品


对比可以看到,这些能力使用托管的 MSE 微服务网关就相当于省去了一个运维团队、一个中间件团队、一个多语言开发能力的研发团队。现在,您只要结合自己的业务场景选择合适的引擎即可:

接入层场景选择 Kong,性能高 SSL 安全能力匹配;
业务分支选择 Zuul,自定义扩展方便还有很强的服务发现能力;
或者如果你是 Spring Cloud 技术体系,那么赶紧把 Spring Cloud Gateway 加入你的全家桶吧。

2、云产品的各引擎对比



三、总结

微服务网关作为微服务流量的“大门”,它的稳定性、安全性、功能完备性上的要求是要远远高于我们业务自身的,我们往往需要投入非常大的人力和时间在他的运维和开发上,并还未必能保证有非常好的效果;BaaS 化的服务型(全托管)云产品,帮助我们的用户坚持开源技术栈这一大方向不变的基础上,更稳定、更便捷、更专注的为我们业务保驾护航。

微服务引擎MSE: https://www.aliyun.com/product/aliware/mse
微服务引擎MSE客户交流钉群:23371469

原文链接:https://developer.aliyun.com/article/782976?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

阿里云微服务引擎MSE网关功能,开启微服务“大门”云化时代相关推荐

  1. 计算机管理服务哪个是打印机的,开启打印机服务,教您win7开启打印机服务

    打印机是我们在日常的工作中经常都会使到的打印设备,我们也知道,打印机要使用的话就要确保打印机服务是否有开启:如果打印机服务没有开启的话,就无法打印或者打印出错.我们在Win7系统上打印的时候,提示打印 ...

  2. android自动启动无障碍服务,Xamarin.Android:如何开启无障碍服务永久

    我写的辅助服务,以避免USSD请求过程中AlertWindow开幕:Xamarin.Android:如何开启无障碍服务永久 [Service(Label = "BalanceAccessib ...

  3. linux关闭telnet服务的命令,linux如何开启telnet服务

    linux系统你只到吗,他可以开启telnet服务,那linux如何开启telnet服务的呢?下面是学习啦小编收集整理的linux如何开启telnet服务,希望对大家有帮助~~ linux开启teln ...

  4. 阿里云微服务引擎 MSE 2022 年 3 月产品动态

    愚你同乐,4 月优惠享不停,MSE 注册配置中心专业版首购享 8 折优惠,MSE 云原生网关预付费全规格享 7 折优惠. 点击此处,掌握一手产品动态~

  5. 微服务最佳实践:MSE 微服务引擎

    简介:微服务引擎 MSE(Microservice Engine)是一个面向业界主流开源微服务框架 Spring Cloud 和 Dubbo 的一站式微服务平台.其由四个主要部分组成:微服务治理中心. ...

  6. 阿里云 EDAS 3.0 助力唱鸭提升微服务幸福感

    简介:EDAS 3.0 提供的微服务治理,很好的支持了唱鸭 APP 实现微服务应用的发布.监控.管理等日常业务场景.作为运维侧的重要平台和开框架的提供者,EDAS 3.0 帮助用户可以更专注业务.微服 ...

  7. 谈谈surging 微服务引擎 2.0的链路跟踪和其它新增功能

    一.前言 surging是基于.NET CORE 服务引擎.初始版本诞生于2017年6月份,经过NCC社区二年的孵化,2.0版本将在2019年08月28日进行发布,经历二年的发展,已经全部攘括了微服务 ...

  8. 微服务引擎的线上流量治理最佳实践

    简介:本实践将重点介绍如何快速集成主流开源微服务框架,实现业务零改造,解决开源框架在生产落地过程中的痛点,例如无损上下线.标签路由等,并通过托管微服务开源组件(API网关.注册中心.配置中心等)的服务 ...

  9. 《深入理解 Spring Cloud 与微服务构建》第二章 微服务应该具备的功能

    <深入理解 Spring Cloud 与微服务构建>第二章 微服务应该具备的功能 文章目录 <深入理解 Spring Cloud 与微服务构建>第二章 微服务应该具备的功能 一 ...

最新文章

  1. html点击保持,如何保持:点击元素后的活动CSS样式
  2. 十年学术生涯新开端:港中文助理教授周博磊宣布加入UCLA
  3. 某程序员吐槽:女朋友老板给她包了1314元开工红包,正常吗?网友:这是绿包!...
  4. linux下配置tomcat、resin
  5. 智能推荐算法在直播场景中的应用
  6. 2017西安交大ACM小学期数论 [更新学号]
  7. java office文件加水印_文档预览加水印——或可一用的防泄密方式
  8. (31)SystemVerilog语言编写D触发器
  9. 分布式事务的四种解决方案,值得参考!
  10. Aapache status / apache2ctl status 总是403
  11. 《DOOM启示录》读书感
  12. 黑马程序员pink老师_CSS学习笔记
  13. oreo另一个意思_墓碑上的“故,显,考,妣”是什么意思?
  14. linux进程假死的原因_linux下程序假死
  15. 自定义maven插件的实现
  16. 门户通专访爱思网创始人韩笑:SNS网站必然走向实用化!
  17. Zabbix自动发现和自动注册
  18. “蘑菇书“配套在线课程上线
  19. 汇聚数据库创新力量,加速企业数字化转型
  20. C语言 将十六进制字符串转为十六进制数 (二进制、十进制都适用)

热门文章

  1. 大学生如何实现经济独立 ?
  2. 腾讯和阿里在B站“打起来了”,你何时见过这场面?
  3. centos7.6arm安装mysql8.0.17_Centos yum安装 MySQL 5.7
  4. c 自动生成html文件,webpack4系列教程(三):自动生成项目中的HTML文件
  5. java通用解析excel_java读取简单excel通用工具类
  6. Java读取模板文件您好,RtfTemplate 读取word模板生成文件
  7. 机器学习:决策树及ID3,C4.5,CART算法描述
  8. APUE读书笔记-第15章-进程间通信
  9. 利用鼠标点击绘制出三棱锥
  10. [课程设计]Scrum 2.5 多鱼点餐系统开发进度(下单一览页面-菜式添加框架设计)