作者回复: Q1:无脑选Gateway Q2:服务间调用不经过gateway,是点对点 Q3:path里配置的是通配符,可以理解为正则表达式,路径要匹配pattern Q4:uri里指定微服务名称,后面课程会演示 Q3: Spring Boot组件 Q6:看个人习惯,经常混用 Q7:两者定位不同,不建议gatewa直接暴露在最外层,性能和nignx没有可比性
作者回复: 可以看做是政府大楼的门卫,要找哪个部门领导都要从门卫这走,如果领导比较忙还会被门卫打发走(网关层限流)
作者回复: yoyoyo,我好像漏了这个问题 1. 我提示同学一点哈,授人以渔。在请求处理的整个链路中,他要经历各种各样的谓词过滤器等等,这个请求其实是原始的请求。那怎么判定gateway在调用目标服务的时候,底层是采用什么方式呢?只要点击进uri()这个方法里,跟到底层的具体实现类顺藤摸瓜就知道了 2. gateway这里也可以在路由规则这一层设置各种限流降级,做保护 3. 真谛都在手里,在IDE里点进去gateway源码就明白了
作者回复: 金丝雀是给大家熟悉负载均衡的一个小案例,在各个公司里通常会有专门的AB test或者灰度框架来实现线上验证,每个大厂有自己的黑科技组件。如果自己实现黑科技方案,确实是可以做个谓词来判断,但后面的服务转发流程还要再次定制,因为gateway默认情况下没有加入Nacos metadata的判断逻辑
作者回复: 首次调用涉及到一些初始化加载流程,是正常现象,ribbon也有这个首次调用超时的坑~
作者回复: 企业级服务内部也会有网络分区,对于同一个network zone内部服务之间的调用,不用绕geteway,就采用直连的方式A->B即可,这个也是注册中心的服务发现机制所要实现的效果。 但如果你要跨zone调用,或者由外网访问,则需要经过网关。nginx是最常见的一种高性能对外网关,搭配LVS做路由。而spring cloud gateway一般不直接对外暴露,通常躲在外部网关背后来桥接微服务
作者回复: API网关前置的多层nginx路由的情况更常见一些,对于一些不使用阿里云计算资源的公司,也是买阿里系的高防再加上VIP+多级Nginx做前置的居多
作者回复: 对滴,可以使用order调整生效优先级