首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客874864093号
门头沟学院 Java
发布于广东
关注
已关注
取消关注
@已删除:
为什么微服务一定要有API网关?
微服务不能没有网关,就如同 Java 程序员不能没有IDEA、Eclipse。为什么呢? 之所以网关对微服务这么重要,主要有以下几点原因: 1. 解决 API 放哪里的问题 要知道,采用微服务架构的系统本身是由很多的独立服务单元组合起来的。而客户端要调用系统,则必须通过系统提供的各种对外开放的功能 API 来实现。 问题来了,这些 API 要放在哪里呢?直接放在组成系统的服务单元上行不行? 比如,在一套电商系统上,关于订单相关的 API ,放在组成订单服务的服务单元上;风控服务的 API ,放在组成风控服务的服务单元上。 好,咱们假设有这么一个场景,有一位用户想在这套电商系统上查看下商品详情。那么,这个查看商品详情的操作,就可能: 调用商品服务的 API 获取商品描述 调用评价服务的 API 获取相关评价 调用商家服务的 API 获取商家信息 调用礼券服务的 API 获取相关礼券 …… 可以看到,就这么一个商品查看操作,就可能会调用许多服务的 API。 那这些 API 如果全部分散到各个服务单元上,供客户端调用,像查看商品这么简单的一次操作,客户端就可能需要远程访问好几次甚至十几次服务器。 微服务员自己有讲究把 API 的粒度划分得很细,也就是说,可能从商品服务上调用商品信息,不止是调用一次商品服务就够了,很可能需要多次对商品服务的不同 API 进行调用,才能获取到足够的数据。 这样一来,客户端需要访问服务器的次数就更多了,可能十几次都不够,得几十次。 这种多次访问服务器的行为,会极大延迟客户端的界面响应时间,很不现实。 所以,把 API 放到各个业务相关的服务单元上,看上去问题很大。 那为什么引入网关就能解决这个问题呢? 因为引入网关,就相当于在客户端和微服务之间加了一层隔离。通常,网关本身会和各个服务单元处于同一个机房,这样,客户端做业务操作的时候,只需要访问一次网关。然后剩下的事情,再由网关分别访问同在一个机房的不同的服务,再把拿到的数据统一在网关封装好,返回给客户端就好。 2. 解决边缘功能集成的问题 在一套微服务组成的系统里,除了必须的业务功能以外,还有为了系统自身的健壮与安全,以及微服务本身的管理,而必须引入的一些非业务功能。对于这些非业务又很重要的功能,我们统称为边缘功能。 还是拿电商系统为例,我们来看一些重要的边缘功能。 假设因为我们做了一次非常大的促销活动,导致流量过大,系统承载不了了。此时,为了保证系统本身的稳定,我们就需要把一些承载不了的流量给通过各种手段消化掉,一般的做法有三种: 限流:通过令牌桶等算法,把一些额外的流量挡在系统外面,不让其访问。 降级:由于系统可能已经过载了,此时,我们就放弃处理一些服务和页面的请求或者进行简单处理,比如直接返回一个报错。 熔断:有些时候,系统过载过度或者上线出了问题 bug,降级都解决不了问题。比如,缓存失效了,导致大量请求频繁访问了数据库,而这种频繁访问数据库可能造成了大量的 IO 操作,结果又影响了数据库所在的操作系统,同时,这个操作系统上又有着别的重要服务,直接也被影响了。对于这种连锁反应,我们称之为雪崩。而为了防止雪崩,我们就会坚决把缓存失效导致数据库被频繁访问的服务给停掉,这就是熔断。 可以看到,像限流、降级、熔断这些系统保障策略,最合适的地方应该是有一个集中的请求入口点,就像古时候,老百姓进城需要过城门那样。 当系统出现问题的时候,直接就在这个入口点做相应的操作即可。 限流,就直接在这个入口点限制后续请求。 降级,就直接在这个入口点判断请求想要访问的服务或者页面,直接报错返回。 熔断,就直接在这个入口点,断开所有访问特定服务的请求连接,然后再把后继对特定服务的访问,也统统拦在门外。 在电商系统里,有很多特殊场景的接口,需要受到严格的限制。 比如,支付接口,访问它就需要认证和权限控制。又比如,对于系统的访问,有时候不能让国外的人去访问国内的网站,这就需要限制客户端的访问 IP,所以系统还需要认证和授权功能。 那这种认证和授权也是最合适放在请求的一个集中入口点,统一实现。 还记得上面咱们说过的网关的 API 统一存放吗?我们只需要对这些 API 做对应的权限设置,当请求访问特殊场景接口的时候,必定会通过 API 访问。所以,限制接口的访问,本质上就是对特定 API 的限制,那么,放在网关再合适不过了。 现实里,我们有时候需要把线上的流量镜像出来,转发到灰度环境,利用这些镜像出来的流量既可以用于小范围测试,又可以更好的评估系统所能承载的最大吞吐量,也因此,系统需要有一个统一入口做分流。 可以看到,无论是系统需要的保障策略,认证授权,还是流量分流等功能,都应该放到一个统一的请求入口处才能得到最好的实现。网关恰好就承担了这么个统一请求入口的角色。 所以,对于微服务中,林林总总的边缘功能,往往会通过插件的形式,集成在 API 网关中。 3. 解耦了客户端和后端微服务 一套项目,在使用微服务模式的初期,往往后端变化是十分频繁的。 频繁变化的原因有很多,像业务领域划分不合适啊,像某个业务模块急速膨胀啊,都可能导致后端微服务的剧烈变化。 在这种情况下,如果没有网关,很可能就会出现客户端需要被迫随着后端的变化而变化的情况。 比如,在电商系统里,初期我们很可能会把风控服务做得非常小。随着业务的发展,风控服务越来越庞大,此时,风控服务就可能被分解为决策引擎和分析中心等更多更细的服务。 在电商里,风控往往是下单、支付等操作的必要前置操作。如果没有网关去分隔开客户端和微服务,客户端直接和风控服务打交道,那么风控服务拆分,API 必然不会稳定,API 的变化,自然会引发调用 API 客户端代码的变化。 有了网关之后,情况就好了很多了。当风控服务本身频繁变化的时候,我们只需要改动网关的代码就好。而服务器代码的升级可是远远要比客户端代码的升级容易太多了。
点赞 6
评论 3
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
10-08 15:48
学而思_HR(准入职员工)
学而思内推,学而思内推码
1️⃣ 请先做个简单的自我介绍? 😊 2️⃣ 能否谈下你应聘这个岗位的优势? 🌟 3️⃣ 你的职业规划是什么? 🎯 4️⃣ 为什么选择学而思作为你的求职目标? 🏢 5️⃣ 你对学而思的课程顾问岗位有哪些了解? 📋 6️⃣ 描述一次团队合作的经历,你在其中扮演了什么角色? 🤝 7️⃣ 遇到工作压力大时,你通常如何应对? 😊 8️⃣ 面对家长和学生的投诉,你会如何处理? 💬 9️⃣ 如何向一个对学而思课程持怀疑态度的家长介绍课程? 📚 🔟 请举例说明你如何通过有效沟通解决过一个问题。 💡 1️⃣1️⃣ 描述一次你认为成功的销售或推广经验。 🚀 1️⃣2️⃣ 你如何看待持续学...
点赞
评论
收藏
分享
10-08 19:23
莉莉丝游戏_2026届校招HRBP(准入职员工)
众安保险内推,众安保险内推码
众安保险产品运营1自我介绍2你偏向于产品运营还是产品经理3你能说说这两者的区别吗4 你认为两者分别有什么特质5 你认为自己具备什么特质6 你说一个你的缺点7你现在做的措施有帮助你改正缺点吗 你还有采取什么其他的措施吗8 你喜欢什么样的领导和团队氛围9 讲一个你实习内容10 你们部门架构是什么,你的leader主要负责什么?11说一个跨部门交流的经历 有没有遇到什么困难12 你为什么想投众安的产品运营呢?和你专业经历不太相符13 你为什么不留在现在实习的公司14 可以提前实习吗 目前投递了哪些公司15 你家哪里的 性格?星座?16 你如何看待加班呢众安保险26届校招启动啦【关于众安】众安保险是中...
点赞
评论
收藏
分享
08-19 19:57
石河子大学 C++
家人们,能找到工作吗,投了一阵没反应,
企鹅百度字节的孝子:
为啥本科只有两年啊
校招求职吐槽
点赞
评论
收藏
分享
10-11 20:26
电子科技大学 Java
学习路线选择 java or 算法
现在是研二,Java才把Java基础看完,老师的话会放实习,发论文也比较猛,但是因为之前摆烂的原因,也没怎么好好看论文,组里面基本上没项目,所以有时间做自己想做的事情,暑期实习应该是会放的,本硕都是双9的,本科是软件,研究生专业是计算机,想请教一下各位前辈应该如何规划一下,是继续学Java找实习还是可以有其他的方案,做算法的话学习哪方面?#牛客AI配图神器# #求助##学习路线##选择#
投递牛客等公司10个岗位
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
从摆烂到OC,嵌入式人的血泪史
4787
2
...
害,找工作哪有不上当的!
4529
3
...
找到靠谱的公司,少走些弯路
3364
4
...
双非秋招大厂time line参考
3183
5
...
最近面试回答不出来的题
2920
6
...
26国考公告出炉,放宽到38岁意味着什么
2890
7
...
末9四段大厂实习|秋招收尾结束
2753
8
...
牛牛求救🆘,不敢梭哈后端第二技能点怎么搭配
2263
9
...
国庆可能会被打折,但发疯文学永远不打折!
2141
10
...
京东官宣发布新车,会有新的HC吗?
2135
创作者周榜
更多
正在热议
更多
#
找工作中的小确幸
#
10505次浏览
98人参与
#
秋招踩过的“雷”,希望你别再踩
#
19850次浏览
223人参与
#
爱玛科技集团求职进展汇总
#
30211次浏览
209人参与
#
面包vs爱情,怎么选?
#
17111次浏览
187人参与
#
实习在多还是在精
#
3182次浏览
44人参与
#
发面经攒人品
#
2348949次浏览
32660人参与
#
反问环节如何提问
#
107021次浏览
2009人参与
#
实习下班不想学习,正常吗?
#
3540次浏览
48人参与
#
机械求职避坑tips
#
67384次浏览
449人参与
#
校招谈薪一定要知道的事
#
3359次浏览
53人参与
#
你觉得什么岗位会被AI替代
#
4850次浏览
83人参与
#
贝壳求职进展汇总
#
36339次浏览
202人参与
#
机械人值得去的小众企业
#
24434次浏览
54人参与
#
浪潮求职进展汇总
#
17980次浏览
137人参与
#
秋招结束之后的日子
#
88829次浏览
986人参与
#
实习最想跑路的瞬间
#
82046次浏览
524人参与
#
你做过哪些dirty work
#
20005次浏览
143人参与
#
选完offer后,你后悔学机械吗?
#
39497次浏览
243人参与
#
投格力的你,拿到offer了吗?
#
119304次浏览
686人参与
#
诺瓦星云求职进展汇总
#
220019次浏览
1715人参与
#
机械人,签完三方你在忙什么?
#
61802次浏览
235人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务