左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家,骨灰级程序员
立即订阅
40357 人已学习
课程目录
已完结 108 讲
0/6登录后,你可以任选6讲全文学习。
开篇词 | 洞悉技术的本质,享受科技的乐趣
免费
01 | 程序员如何用技术变现(上)
02 | 程序员如何用技术变现(下)
03 | Equifax信息泄露始末
04 | 从Equifax信息泄露看数据安全
05 | 何为技术领导力?
06 | 如何才能拥有技术领导力?
07 | 推荐阅读:每个程序员都该知道的知识
08 | Go语言,Docker和新技术
09 | 答疑解惑:渴望、热情和选择
10 | 如何成为一个大家愿意追随的Leader?
11 | 程序中的错误处理:错误返回码和异常捕捉
12 | 程序中的错误处理:异步编程以及我的最佳实践
13 | 魔数 0x5f3759df
14 | 推荐阅读:机器学习101
15 | 时间管理:同扭曲时间的事儿抗争
16 | 时间管理:如何利用好自己的时间?
17 | 故障处理最佳实践:应对故障
18 | 故障处理最佳实践:故障改进
19 | 答疑解惑:我们应该能够识别的表象和本质
20 | Git协同工作流,你该怎么选?
21 | 分布式系统架构的冰与火
22 | 从亚马逊的实践,谈分布式系统的难点
23 | 分布式系统的技术栈
24 | 分布式系统关键技术:全栈监控
25 | 分布式系统关键技术:服务调度
26 | 分布式系统关键技术:流量与数据调度
27 | 洞悉PaaS平台的本质
28 | 推荐阅读:分布式系统架构经典资料
29 | 推荐阅读:分布式数据调度相关论文
30 | 编程范式游记(1)- 起源
31 | 编程范式游记(2)- 泛型编程
32 | 编程范式游记(3) - 类型系统和泛型的本质
33 | 编程范式游记(4)- 函数式编程
34 | 编程范式游记(5)- 修饰器模式
35 | 编程范式游记(6)- 面向对象编程
36 | 编程范式游记(7)- 基于原型的编程范式
37 | 编程范式游记(8)- Go 语言的委托模式
38 | 编程范式游记(9)- 编程的本质
39 | 编程范式游记(10)- 逻辑编程范式
40 | 编程范式游记(11)- 程序世界里的编程范式
41 | 弹力设计篇之“认识故障和弹力设计”
42 | 弹力设计篇之“隔离设计”
43 | 弹力设计篇之“异步通讯设计”
44 | 弹力设计篇之“幂等性设计”
45 | 弹力设计篇之“服务的状态”
46 | 弹力设计篇之“补偿事务”
47 | 弹力设计篇之“重试设计”
48 | 弹力设计篇之“熔断设计”
49 | 弹力设计篇之“限流设计”
50 | 弹力设计篇之“降级设计”
51 | 弹力设计篇之“弹力设计总结”
52 | 管理设计篇之“分布式锁”
53 | 管理设计篇之“配置中心”
54 | 管理设计篇之“边车模式”
55 | 管理设计篇之“服务网格”
56 | 管理设计篇之“网关模式”
57 | 管理设计篇之“部署升级策略”
58 | 性能设计篇之“缓存”
59 | 性能设计篇之“异步处理”
60 | 性能设计篇之“数据库扩展”
61 | 性能设计篇之“秒杀”
62 | 性能设计篇之“边缘计算”
63 | 区块链技术的本质
64 | 区块链技术细节:哈希算法
65 | 区块链技术细节:加密和挖矿
66 | 区块链技术细节:去中心化的共识机制
67 | 区块链技术细节:智能合约
68 | 区块链技术 - 传统金融和虚拟货币
69 | 程序员练级攻略:开篇词
70 | 程序员练级攻略:零基础启蒙
71 | 程序员练级攻略:正式入门
72 | 程序员练级攻略:程序员修养
73 | 程序员练级攻略:编程语言
74 | 程序员练级攻略:理论学科
75 | 程序员练级攻略:系统知识
76 | 程序员练级攻略:软件设计
77 | 程序员练级攻略:Linux系统、内存和网络
78 | 程序员练级攻略:异步I/O模型和Lock-Free编程
79 | 程序员练级攻略:Java底层知识
80 | 程序员练级攻略:数据库
81 | 程序员练级攻略:分布式架构入门
82 | 程序员练级攻略:分布式架构经典图书和论文
83 | 程序员练级攻略:分布式架构工程设计
84 | 程序员练级攻略:微服务
85 | 程序员练级攻略:容器化和自动化运维
86 | 程序员练级攻略:机器学习和人工智能
87 | 程序员练级攻略:前端基础和底层原理
88 | 程序员练级攻略:前端性能优化和框架
89 | 程序员练级攻略:UI/UX设计
90 | 程序员练级攻略:技术资源集散地
91 | 程序员面试攻略:面试前的准备
92 | 程序员面试攻略:面试中的技巧
93 | 程序员面试攻略:面试风格
94 | 程序员面试攻略:实力才是王中王
95 | 高效学习:端正学习态度
96 | 高效学习:源头、原理和知识地图
97 | 高效学习:深度,归纳和坚持实践
98 | 高效学习:如何学习和阅读代码
99 | 高效学习:面对枯燥和量大的知识
左耳听风
登录|注册

26 | 分布式系统关键技术:流量与数据调度

陈皓 2017-12-28
关于流量调度,现在很多架构师都把这个事和服务治理混为一谈了。我觉得还是应该分开的。一方面,服务治理是内部系统的事,而流量调度可以是内部的,更是外部接入层的事。另一方面,服务治理是数据中心的事,而流量调度要做得好,应该是数据中心之外的事,也就是我们常说的边缘计算,是应该在类似于 CDN 上完成的事。
所以,流量调度和服务治理是在不同层面上的,不应该混在一起,所以在系统架构上应该把它们分开。

流量调度的主要功能

对于一个流量调度系统来说,其应该具有的主要功能是:
依据系统运行的情况,自动地进行流量调度,在无需人工干预的情况下,提升整个系统的稳定性;
让系统应对爆品等突发事件时,在弹性计算扩缩容的较长时间窗口内或底层资源消耗殆尽的情况下,保护系统平稳运行。
这还是为了提高系统架构的稳定性和高可用性。
此外,这个流量调度系统还可以完成以下几方面的事情。
服务流控。服务发现、服务路由、服务降级、服务熔断、服务保护等。
流量控制。负载均衡、流量分配、流量控制、异地灾备(多活)等。
流量管理。协议转换、请求校验、数据缓存、数据计算等。
所有的这些都应该是一个 API Gateway 应该做的事。

流量调度的关键技术

但是,作为一个 API Gateway 来说,因为要调度流量,首先需要扛住流量,而且还需要有一些比较轻量的业务逻辑,所以一个好的 API Gateway 需要具备以下的关键技术。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《左耳听风》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(17)

  • 永靖
    APIGateway采用什么语音实现比较好?

    作者回复: 你说的是语言吧。C/C++、Java、Go。我觉的Go最好

    2017-12-27
    14
  • 摇滚代码
    每一篇都值得精读,重复读
    2017-12-28
    6
  • godtrue
    水平有限这节没完全理解,记一笔,后面再看几遍
    2018-12-30
    5
  • Ryoma
    耗子哥觉得 Kong 这个API Gateway如何?

    作者回复: 挺好的

    2018-09-27
    5
  • javaworker
    耗子哥,一个服务号有1亿的关注关系,我们有5个类似的服务号,也就是有约5亿的关注关系,我们都存在一张表里了,这张表只做了分区。发送1亿条消息时,我们会反复的查这张表,所以这就是瓶颈,我打算把这张表的数据都存到redis里,分成多个list存,类似表的分区,发时多个线程并行发送,每个线程负责一个redis的list,这样设计可以吗,耗子哥?

    作者回复: 可以的。最好传文可灵活配置list大小的

    2018-03-13
    3
  • javaworker
    耗子哥,请教个问题,我在做一个类似微信的app,公司有个需求,要求1亿条消息在5分钟内发送到用户,现系统1亿条消息大概需要1小时才能都发给用户,您能提示我一些优化方向吗,谢谢

    作者回复: 现在的具体瓶颈是……?

    2018-03-01
    3
  • 沙漠之鹰
    在 IaaS 层上解决这个问题,一般来说有三种方案,一种是使用比较廉价的开源产品,如:NFS、Ceph、TiDB、CockroachDB、ElasticSearch、InfluxDB、MySQL Cluster 和 Redis Cluster 之类的;另一种是用云计算厂商的方案。

    耗子哥,这些应该是paas层吧
    2019-01-29
    2
  • springchan
    耗子哥,我想咨询个问题:以前你在微信朋友圈发过一个治疗痛风的药:GPro,效果如何?
    2018-05-22
    2
  • 向飞
    收获很大,帮助将自己的很多知识点进行了系统化的梳理,理解更加清晰和深刻,非常感谢!

    另外,megaease的“联系我们”部分有语病:这样能才提供最好的服务和支持。

    作者回复: 谢谢

    2018-04-03
    2
  • vvsuperman
    阿里不是还有个rocketmq用来做分布式事务么,这个怎样呢
    2018-01-14
    2
  • neilyu
    “然后拼命地使用各种 tricky 的方式来提高 latency”
    我理解是降低latency吧

    作者回复: 是的,应该是降低。谢谢指正

    2017-12-26
    2
  • FWW
    smasMegaEase.com 这个地址访问不了
    2019-07-03
    1
  • edisonhuang
    流量调度的功能在于可以自动扩展调度流量,可以应对突发情况,需要做服务流量调度,流量控制。
    流量调度的关键性能要保证高性能,扛流量,可编程,服务化。
    同时流量调度存在状态数据调度的问题,应该在iaas层解决有状态数据的问题
    2019-06-11
    1
  • 西北偏北
    流量控制,采用api gateway

    数据的分布式一致性和事务,应由数据组件自己负责,而不是在业务中,分库分表,这些思想体现在让功能分离,专业的组件做专业的事,从而才能那个不同的组件够精简,同时把自己关注的事情发挥到极致。
    2019-06-10
    1
  • songgoogle
    这块之前没有涉及太多,部分需要再消化
    2019-03-22
    1
  • 幼儿编程教学
    tidb和mysql cluster,请教,这2种比较,如何?
    2019-01-01
    1
  • 骨汤鸡蛋面
    为什么paxos不可以用在应用层呢?是因为数据层主要是副本一致性,比较适合paxos么?
    2018-09-26
    1
收起评论
17
返回
顶部