从0开始学微服务
胡忠想
微博技术专家
立即订阅
16266 人已学习
课程目录
已完结 42 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 微服务,从放弃到入门
免费
模块一 入门微服务 (10讲)
01 | 到底什么是微服务?
02 | 从单体应用走向服务化
03 | 初探微服务架构
04 | 如何发布和引用服务?
05 | 如何注册和发现服务?
06 | 如何实现RPC远程服务调用?
07 | 如何监控微服务调用?
08 | 如何追踪微服务调用?
09 | 微服务治理的手段有哪些?
10 | Dubbo框架里的微服务组件
模块二 落地微服务 (14讲)
11 | 服务发布和引用的实践
12 | 如何将注册中心落地?
13 | 开源服务注册中心如何选型?
14 | 开源RPC框架如何选型?
15 | 如何搭建一个可靠的监控系统?
16 | 如何搭建一套适合你的服务追踪系统?
17 | 如何识别服务节点是否存活?
18 | 如何使用负载均衡算法?
19 | 如何使用服务路由?
20 | 服务端出现故障时该如何应对?
21 | 服务调用失败时有哪些处理手段?
22 | 如何管理服务配置?
23 | 如何搭建微服务治理平台?
24 | 微服务架构该如何落地?
模块三 进阶微服务 (8讲)
25 | 微服务为什么要容器化?
26 | 微服务容器化运维:镜像仓库和资源调度
27 | 微服务容器化运维:容器调度和服务编排
28 | 微服务容器化运维:微博容器运维平台DCP
29 | 微服务如何实现DevOps?
30 | 如何做好微服务容量规划?
31 | 微服务多机房部署实践
32 | 微服务混合云部署实践
模块四 展望微服务 (4讲)
33 | 下一代微服务架构Service Mesh
34 | Istio:Service Mesh的代表产品
35 | 微博Service Mesh实践之路(上)
36 | 微博Service Mesh实践之路(下)
阿忠伯的特别放送 (4讲)
阿忠伯的特别放送 | 答疑解惑01
阿忠伯的特别放送 | 答疑解惑02
微博技术解密(上) | 微博信息流是如何实现的?
微博技术解密(下)| 微博存储的那些事儿
结束语 (1讲)
结束语 | 微服务,从入门到精通
从0开始学微服务
登录|注册

19 | 如何使用服务路由?

胡忠想 2018-10-04
专栏上一期,我给你讲解了常用的客户端负载均衡算法,它帮我们解决了服务消费者如何从众多可用的服务节点中选取一个最合适的节点发起调用的问题。但在业务中经常还会遇到这样的场景,比如服务 A 部署在北京、上海、广州三个数据中心,所有的服务节点按照所在的数据中心被分成了三组,那么服务 A 的消费者在发起调用时,该如何选择呢?这就是今天我要给你讲解的服务路由的问题。
那么什么是服务路由呢?我的理解是服务路由就是服务消费者在发起服务调用时,必须根据特定的规则来选择服务节点,从而满足某些特定的需求
那么服务路由都有哪些应用场景?具体都有哪些规则呢?

服务路由的应用场景

根据我的实践经验,服务路由主要有以下几种应用场景:
分组调用。一般来讲,为了保证服务的高可用性,实现异地多活的需求,一个服务往往不止部署在一个数据中心,而且出于节省成本等考虑,有些业务可能不仅在私有机房部署,还会采用公有云部署,甚至采用多家公有云部署。服务节点也会按照不同的数据中心分成不同的分组,这时对于服务消费者来说,选择哪一个分组调用,就必须有相应的路由规则。
灰度发布。在服务上线发布的过程中,一般需要先在一小部分规模的服务节点上先发布服务,然后验证功能是否正常。如果正常的话就继续扩大发布范围;如果不正常的话,就需要排查问题,解决问题后继续发布。这个过程就叫作灰度发布,也叫金丝雀部署。
流量切换。在业务线上运行过程中,经常会遇到一些不可抗力因素导致业务故障,比如某个机房的光缆被挖断,或者发生着火等事故导致整个机房的服务都不可用。这个时候就需要按照某个指令,能够把原来调用这个机房服务的流量切换到其他正常的机房。
读写分离。对于大多数互联网业务来说都是读多写少,所以在进行服务部署的时候,可以把读写分开部署,所有写接口可以部署在一起,而读接口部署在另外的节点上。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学微服务》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(15)

  • 波波安
    我们现在处理的方式是先圈定一批友好用户作为灰度白名单用户。对于这一批用户在登录时会写特定的cookie标识,访问时ng根据cookie标识做路由策略。将请求分发到升级好的灰度集群,验证新功能。
    2018-10-14
    23
  • ylw66
    老师好,Dubbo白名单和黑名单的例子有没有写反?
    2018-12-21
    2
    5
  • 拉欧
    可以通过网关配置规则,将特定的用户导流到某一数据中心,然后通过金丝雀发布升级这一数据中心的服务
    2018-10-09
    3
  • Cain
    答:可以考虑使用statefulset+headless service的方式,使用k8s内部的dns,比如pod1.svc.com方式直接访问这个pod

    用一个简单的路由规则,如果希望百分之一的用户体验新版本,将用户id取模100等于1的用户请求转发给新的服务器。验证后逐步扩大用户比例,最终达到全量。
    这里有个问题想请教一下老师,用docker和k8s部署一个mysql的服务,如果这个服务可以弹性伸缩,且我们通过一个虚拟ip来连接这个服务,那么我的请求会按照k8s的负载均衡规则进行路由,我希望操作一个用户相关的请求,都到同一个数据库里面,不知道这个应该怎么操作。如果有多个服务,而且可以动态的增减,这里应该会碰到一堆的问题,如果老师有碰到类似的问题,这里想知道老师是怎么解决的。
    2019-02-15
    1
  • 酱了个油
    注册中心也可以管理访问的服务名单,这和服务路由有什么区别呢?是不是一般只是帮助服务重新路由注册中心?
    2018-10-20
    1
  • 宝爷
    用一个简单的路由规则,如果希望百分之一的用户体验新版本,将用户id取模100等于1的用户请求转发给新的服务器。验证后逐步扩大用户比例,最终达到全量。
    这里有个问题想请教一下老师,用docker和k8s部署一个mysql的服务,如果这个服务可以弹性伸缩,且我们通过一个虚拟ip来连接这个服务,那么我的请求会按照k8s的负载均衡规则进行路由,我希望操作一个用户相关的请求,都到同一个数据库里面,不知道这个应该怎么操作。如果有多个服务,而且可以动态的增减,这里应该会碰到一堆的问题,如果老师有碰到类似的问题,这里想知道老师是怎么解决的。

    作者回复: 我理解这里主要是访问路由的问题,又想用k8s做到mysql的动态扩缩容,又想按照用户访问hash到固定数据库、我不知道k8s能否自定义数据访问路由,我们的做法没有使用k8s,自定义数据访问路由

    2018-10-04
    1
  • 做的网关对于服务端api的灰度发布提供了两种分发策略。
    一种是按比例流量切分,按照用户设备号。
    一种是定点测试(多用于内部体验),指定用户pin,用户设备号
    2019-07-02
  • godtrue
    我们是通过开关控制的,可以有不同的维度,我们主要以用户维度,四级地址维度,配送中心和仓库维度。和服务路由有差异,主要是通过流量路由到不同的业务逻辑分支里去处理了。
    2019-06-15
  • 波波安
    我们现在处理的方式是先圈定一批友好用户作为灰度白名单用户。对于这一批用户在登录时会写特定的cookie标识,访问时ng根据cookie标识做路由策略。将请求分发到升级好的灰度集群,验证新功能。
    2018-10-14
  • 大光头
    圈定用户需要路由规则能够识别用户ID或者某些标识,比如地区等。有了这个功能就能够做到圈定用户发布。
    我现在的服务并没有服务路由功能,所以这些都是做到服务内部
    2018-10-08
  • 大光头
    首先圈定用户是根据用户的ID,那就需要根据用户ID进行路由。所以需要路由规则里要能够识别用户ID才能满足要求。
    2018-10-08
  • 大光头
    首先圈定用户是根据用户的ID,那就需要根据用户ID进行路由。所以需要路由规则里要能够识别用户ID才能满足要求。
    2018-10-08
  • 莲花
    如果通过路由尽量将访问限定在同一个数据中心,如果同一个数据中心访问满了,怎么分流到另一个数据中心去呢?

    作者回复: 可以通过配置中心下发指令改变订阅的分组,比如一个分组承担70%,一个承担30%

    2018-10-04
  • 阿恺
    注册中心也可以根据路由规则进行过滤,将最终的api urls结果作为服务提供者告知消费者。当然前提是注册中心是自研可控。
    2018-10-04
  • _CountingStars
    配置中心配置路由之后也是需要下发的 那这和动态下发方式不是重复了吗 有什么主要区别呢

    作者回复: 配置中心存储可能只是做一个集中存储的地方,客户端启动的时候才会从配置中心拉取配置。动态下发是客户端订阅了配置的更新,如果有变化,客户端就会拉取

    2018-10-04
收起评论
15
返回
顶部