文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

微服务为什么要用到服务网关?

2024-11-28 16:08

关注
一、什么是服务网关

服务网关为客户与服务系统之间的交互提供了统一的接口,也是管理请求和响应的中心点,选择一个适合的服务网关,可以有效地简化开发并提高系统的运维与管理效率。

服务网关 = 路由转发 + 过滤器

路由转发:接收一切外界请求,转发到后端的微服务上去;

过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。

二、为什么需要服务网关

上述所说的横切功能(以权限校验为例)可以写在三个位置:

每个服务自己实现一遍

写到一个公共的服务中,然后其他所有服务都依赖这个服务

写到服务网关的前置过滤器中,所有请求过来进行权限校验

第一种,缺点太明显,基本不用;第二种,相较于第一点好很多,代码开发不会冗余,但是有两个缺点:

而服务网关恰好可以解决这样的问题:

所以,需要服务网关!!!

三、服务网关技术选型

图片图片

引入服务网关后的微服务架构如上,总体包含三部分:服务网关、open-service和service。

1、总体流程

2、引入网关的注意点

3、网关基本功能

服务网关作为客户端和服务端的中间桥梁,为微服务系统提供统一的管理机制:除了基础的请求分发、API 管理和条件路由等功能,还包括身份验证、监控报警、调用链追踪、负载均衡、限流隔离和熔断降级。 

图片图片

图片图片

图片图片


4、主流网关对比

在微服务领域,有许多开源网关实现,有 NGINX、Kong、Apache APISIX 和 Envoy 等,Java 技术栈的有 Netfilx Zuul、Spring Cloud Gateway、Soul 等。
或许你会问“有了 NGINX 和 Kong,为什么还需要 Apache APISIX ?” ,下面做个简单对比。

网关

痛点

优势

NGINX

1. 修改配置需要 Reload 才能生效,跟不上云原生的发展。

1. 老牌应用;
2. 稳定可靠,久经考验;
3. 高性能。

Apache APISIX

1. 文档不够丰富和清晰,需要待改进。

1. Apache 基金会顶级项目;
2. 技术架构更贴合云原生;3. 性能表现优秀;
4. 生态丰富;5. 除了支持 Lua 开发插件外,还支持 Java、Go、Python、Node 等语言插件。

Kong

1. 默认使用 PostgreSQL 或 Cassandra 数据库,使得整个架构非常臃肿,并且会带来高可用的问题;
2. 路由使用的是遍历查找,当网关内有超过上千个路由时,它的性能就会出现比较急剧的下降;
3. 一些重要功能是需要付费的。

1. 开源 API 网关的鼻祖,用户数众多;
2. 性能满足大部分用户的需求;
3. 生态丰富;
4. 支持 Lua 和 Go 开发插件。

Envoy

1. 使用 C++,二次开发难度大;
2. 除了 C++ 开发 filter 外,还支持 WASM 和 Lua。

1. CNCF 毕业项目 更适合服务网格场景多语言架构部署。

Spring Cloud Gateway

1. 虽然 Spring 社区成熟,但是 Gateway 资源缺乏。

1. 内置了非常多的开箱即用功能,并且都可以通过 SpringBoot 配置或者手工编码链式调用来使用;
2. Spring 系列可扩展性强,易配置,可维护性好;
3. Spring 社区成熟;
4. 简单易用;
5. 对于 Java 技术栈来说方便。


四、总结

随着互联网的发展,互联网企业的业务也在不断的飞速发展,进而导致系统的架构也在不断的发生着变化,微服务架构已经在众多公司得到广泛应用。随着微服务的数据越来越多,API 的数量也越来越多,对于大流量的治理,选择一个优秀的服务网关是至关重要的。

本文列举了常见网关,并进行对比,列出各自的优缺点,如果你正在做服务网关的技术选型,或者你的微服务系统出现了性能问题,再或者你想搭建一个高效稳定的微服务系统,希望本文可以带给你一定的启发。

来源:架构精进之路内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯