微服务架构核心 20 讲
杨波
拍拍贷框架研发部总监,资深架构师,微服务技术专家
48687 人已学习
新⼈⾸单¥29
微服务架构核心 20 讲
登录|注册
留言
26
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 10 | 微服务 API 服务网关(一)原理
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 什么是微服务架构?
02 | 架构师如何权衡微服务的利弊?
03 | 康威法则和微服务给架构师怎样的启示?
04 | 企业应该在什么时候开始考虑引入微服务?
05 | 什么样的组织架构更适合微服务?
06 | 如何理解阿里巴巴提出的微服务中台战略?
07 | 如何给出一个清晰简洁的服务分层方式?
08 | 微服务总体技术架构体系是怎样设计的?
09 | 微服务最经典的三种服务发现机制
10 | 微服务 API 服务网关(一)原理
11 | 微服务 API 服务网关(二)开源网关 Zuul
12 | 跟 Netflix 学习微服务路由发现体系
13 | 集中式配置中心的作用和原理是什么?
14 | 微服务通讯方式 RPC vs REST
15 | 微服务框架需要考虑哪些治理环节?
16 | 微服务监控系统分层和监控架构
17 | 微服务的调用链监控该如何选型?
18 | 微服务的容错限流是如何工作的?
19 | Docker 容器部署技术 & 持续交付流水线
20 | 容器集群调度和基于容器的发布体系&结课测试
本节摘要

登录 后留言

全部留言(26)

  • 最新
  • 精选
LMD
置顶
关于《微服务架构核心20讲》课程讲义(PDF 文件),学员可复制下面链接到浏览器下载获取。 http://t.cn/RQs9iTw
2018-01-26
1
10
thinkcat
老师,您好。我想问一下,反向路由还没有理解透,为什么叫反向路由这个名字?谢谢

作者回复: 你好,反向路由或者代理(reverse proxy),主要针对前向路由和代理(forward proxy)来讲的,都是技术术语。 举例,如果我们X要访问国外的一个网站Z,但是被墙了,这可以时候可以通过找代理Y来翻墙访问,这个代理就是前向代理,它帮助我们去访问目标服务(这个目标服务我们是知道的,只是被墙了),X->Y->Z。 对于企业内部的服务,一般躲在如nginx这样的反向代理后面,当我们X去访问企业的服务Z时候,我们并不知道具体服务部署在那里,反向代理Y知道并且会反向帮我们去转发,X->Y->Z这就是反向代理的作用,屏蔽内部服务的部署和实现细节。 两者的地位有点类似,但是具体作用不同。可以进一步参考stackoverflow上的详细解释:https://stackoverflow.com/questions/224664/difference-between-proxy-server-and-reverse-proxy-server

2019-05-26
6
Zihoo
网关上面放负载均衡是为了网关可以横向扩展,那么我看图上的负载均衡只画了一个,实际上负载均衡也应该是多个可横向扩展的吧?

作者回复: 对后端微服务做负载均衡可以是网关的一个主要功能(也有不靠网关做负载均衡的做法)网关一般无状态布部署多个,且可横向扩展,网关本身靠前置LB做负载均衡。

2018-03-01
4
飞舟
请问,如果负载均衡做在API gateway里,API gateway就有状态了,不能横向扩展了?只能主备,或者通过DNS roundrobin?谢谢!

作者回复: 有状态分为两种,一种是全局状态,一种是局部状态,局部状态相当于每个节点有一份自己的状态,这个不影响横向扩展。比方说,zuul gateway + ribbon + eureka 实现负载均衡,每个zuul有一个ribbon配合实现负载均衡,微服务启动时注册到eureka,之后每一个zuul上的ribbon会同步eureka中的服务实例列表,然后基于这个服务实例列表实现负载均衡和调用,这个服务实例列表就是局部状态,zuul仍然可以横向扩展,全局状态则在eureka中,eureka有自己的状态复制机制实现集群和HA。zuul前置可以有硬件负载均衡器(LB),这样可以实现对zuul的负载均衡访问,硬件LB一般采用主备,或者DNS roundrobi机制实现HA和扩展。

2019-08-11
3
Ethan
杨老师,api 统一网关我可以用hapoxy 做吗,HAPoxy可以做到分流熔断,但是好像做不了安全检验,难道应用程序层面还要再做一次统一网关,然后在去掉聚合层吗,那聚合层在去掉用服务,这样中间走了2几次socket 了,另外服务的调用我现在用的自定义tcp 协议,有人说用http 就好了,但是http 协议不是还要多走一次7层的nginx 吗,效率不是更慢吗

作者回复: 1,haproxy可以做成网关,但是门槛比较高,需要深度定制,你有没有研发资源可以hold住? 2,haproxy -> GW -> Service,中间再加一层网关也可以,haproxy相当于只做四层转发,对GW做负载均衡,现在不少是这样做的 3,聚合层一般是一种前端service,对后端服务进行聚合的,haproxy -> GW -> aggregator service -> backend service,这种模式用得也挺多 4, http绝对性能应该比不上tcp,但是要看场景,大部分互联网应用(比如电商)http足够 5,如果你求绝对性能,可以直接haproxy(tcp)-> service,开销最小,haproxy上可以扩展网关功能,需要定制自研能力,有研发资源能hold住

2018-05-10
3
郭新鹏
网关是否也可称为接入层

作者回复: 可以,术语没有明确规范,各家叫法可能不同,方便理解和沟通即可。

2020-03-31
2
小黄鸡
杨波老师,想问下如果网关不参与业务逻辑,那网关怎么知道路由到后端服务呢? 我目前设计的网关都是后端服务新增对外提供服务的api后,都需要更新网关

作者回复: 网关有路由表(服务名 or id <> 后台服务地址的映射)和路由逻辑,路由逻辑和业务逻辑不同,前者偏技术,后者偏业务。

2019-06-30
2
Jed
为什么接入负载均衡以后就保证了网关无状态?关联在哪里,有点不太明白

作者回复: 不是说接了负载均衡以后就保证了网关无状态,而是说网关本身需要无状态多份部署,这样一方面可以按需水平扩容,另一方面可以保证高可用。无状态多份部署以后,就需要前置负载均衡设备,将流量按一定的负载均衡策略分发到不同的网关实例上。

2019-01-14
2
lucky star
请教老师几个问题: 1, 因为gateway不能存在单点问题, 所以可以使用nginx做负载均衡。 而应用服务如果做集群的话, 同样需要gateway做负载均衡, gateway怎么做负载均衡呢?还是要再用nginx呢? 2, 老师说gateway是要无状态的, 那登录之类的拦截是在哪一层完成? 3, gateway建不建议直接连接redis? 我还是没具体太明白gateway的在微服务中的地位 期待老师解答

作者回复: 1,一种部署方式为:硬件LB(或云端SLB)->nginx->gateway->app services,硬件LB(或云端SLB)对nginx做负载均衡,nginx对gateway做负载均衡,gateway对app services做负载均衡,上述是一个简化模式,实际使用中还有很多变体。 2,gateway是无状态部署,但是它可以连有状态服务,例如,gateway可以连redis进行登录态校验。

2019-01-08
2
在路上
杨老师,网关上面的负载均衡一般是指nginx这种软件负载均衡吗?可以横向扩展吗?如果是集中式的,负载均衡器挂了,整个服务是不是也访问不了了?请指教!

作者回复: 网关上面的LB可以是硬件LB,比如F5,也可以是如nginx这样的软件LB,还可以是硬件+软件两层结构,LB一般做成高可用(比如主丛+故障自动切换),不会随便挂,LB要真挂了服务肯定都访问不了了

2018-09-05
2
收起评论