下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 10 | 微服务 API 服务网关(一)原理
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

微服务架构核心20讲

共20讲 · 20课时·约160分钟
13958
免费
01 | 什么是微服务架构?
免费
02 | 架构师如何权衡微服务的利...
免费
03 | 康威法则和微服务给架构师...
04 | 企业应该在什么时候开始考...
05 | 什么样的组织架构更适合微...
06 | 如何理解阿里巴巴提出的微...
07 | 如何给出一个清晰简洁的服...
08 | 微服务总体技术架构体系是...
09 | 微服务最经典的三种服务发...
10 | 微服务 API 服务网关(...
11 | 微服务 API 服务网关(...
12 | 跟 Netflix 学习微服务...
13 | 集中式配置中心的作用和原...
14 | 微服务通讯方式 RPC vs...
15 | 微服务框架需要考虑哪些治...
16 | 微服务监控系统分层和监控...
17 | 微服务的调用链监控该如何...
18 | 微服务的容错限流是如何工...
19 | Docker 容器部署技术 &...
20 | 容器集群调度和基于容器的...
本节摘要

精选留言(22)

  • LMD 置顶
    2018-01-26
    关于《微服务架构核心20讲》课程讲义(PDF 文件),学员可复制下面链接到浏览器下载获取。 http://t.cn/RQs9iTw
    8
  • 2018-02-11
    聚合服务逻辑尽量别放网关上,关注分离(separation of concerns)是一种重要微服务架构理念,网关只关注路由,安全,限流等跨横切面逻辑,聚合服务逻辑单独一层
    18
  • 2019-05-26
    老师,您好。我想问一下,反向路由还没有理解透,为什么叫反向路由这个名字?谢谢

    作者回复: 你好,反向路由或者代理(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

    3
  • 2018-03-01
    网关上面放负载均衡是为了网关可以横向扩展,那么我看图上的负载均衡只画了一个,实际上负载均衡也应该是多个可横向扩展的吧?

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

    3
  • 2018-05-10
    杨老师,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住

    2
  • 2018-01-31
    我们就是把网关和前面说的聚合服务放在了一起。但是看完感觉不应该这么来,有些聚合服务可以在多个网关使用。还在摸索重构中。。。路漫漫
    2
  • 2019-08-11
    请问,如果负载均衡做在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和扩展。

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

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

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

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

    1
  • 2018-07-11
    杨老师,想确认一下,即便采用客户端-网关-聚合服务-基础服务这样的服务层次,网关层面也依然可以访问基础服务吧。聚合服务不会完全隔离网关对基础服务的访问吧?企业实际落地情况如何

    作者回复: 没有限制说网关不能直接访问基础服务,上述划分是逻辑性的,不是物理性的

    1
  • 2018-07-09
    个人理解,好处就是少了一层,复杂度减少了。坏处就是复杂度增加了,并且结构没有那么清晰。但其实可以使用filter或者aop的方式,让开发聚合逻辑的同学 不要关心网关本身承担的四项功能。

    作者回复: filter或aop也是一种简单做法,规模不大可以

    1
  • 2018-02-22
    咨询下杨老师,网关放安全限制,比如api的id,ip调用次数限制,应该可以吧.我就是这么处理,感觉安全性的,放在这里没有问题

    作者回复: 网关适合放跨横切面(cross-cutting concerns)的逻辑,统计限流属于跨横切面逻辑,放网关比较合适的。

    1
  • 2019-01-08
    请教老师几个问题:
         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-04
    H5和PC的网关Zuul, 一般是合并部署还是分开部署?

    作者回复: 视情况,如果你团队小资源少,可以暂时合在一起,如果业务和团队大,就要考虑单一职责,拆分部署。

  • 2019-01-04
    GW1和GW1之间, 按照netflik的架构图,好像少了 Edge Service这个聚合层次哦;

    作者回复: 对,课程中这个图是简化表示,netflix术语edge service + middle layer service统称微服务msx

  • 2019-01-03
    请问LB自身如何做负载均衡呢?

    作者回复: 最前面的LB如果有多个,如需要做负载均衡的话,可以采用DNS round robin轮转。一个LB通常也做成Master/Standby模式高可用。

  • 2018-11-15
    网关内的逻辑与边界服务内的逻辑有什么不同?
    感觉如果已经存在边界服务,网关内就不要再有业务逻辑。
  • 2018-11-02
    杨老师,网关有没有负载均衡的作用?

    作者回复: 网关可以支持负载均衡,比如zuul启用ribbon配合eureka,就在zuul网关上就具有负载均衡能力

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

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

  • 2018-07-10
    api网关与mvc控制器什么区别

    作者回复: 两个概念,api网关是微服务体系中的基础服务,mvc控制器是mvc框架中的一个层次