左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家,骨灰级程序员
立即订阅
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 | 高效学习:面对枯燥和量大的知识
左耳听风
登录|注册

25 | 分布式系统关键技术:服务调度

陈皓 2017-12-26
服务治理,你应该听得很多了。但是我想说,你所听到的服务治理可能混合了流量调度等其它内容。我们这里会把服务治理和流量调度分开来讲。所以,今天这篇文章只涉及服务治理上的一些关键技术,主要有以下几点。
服务关键程度
服务依赖关系
服务发现
整个架构的版本管理
服务应用生命周期全管理

服务关键程度和服务的依赖关系

下面,我们先看看服务关键程度和服务的依赖关系。关于服务关键程度,主要是要我们梳理和定义服务的重要程度。这不是使用技术可以完成的,它需要细致地管理对业务的理解,才能定义出架构中各个服务的重要程度。
然后,我们还要梳理出服务间的依赖关系,这点也非常重要。我们常说,“没有依赖,就没有伤害”。这句话的意思就是说,服务间的依赖是一件很易碎的事。依赖越多,依赖越复杂,我们的系统就越易碎。
因为依赖关系就像“铁锁连环”一样,一个服务的问题很容易出现一条链上的问题。因此,传统的 SOA 希望通过 ESB 来解决服务间的依赖关系,这也是为什么微服务中希望服务间是没有依赖的,而让上层或是前端业务来整合这些个后台服务。
但是要真正做到服务无依赖,我认为还是比较有困难的,总是会有一些公有服务会被依赖。我们只能是降低服务依赖的深度和广度,从而让管理更为简单和简洁。在这一点上,以 Spring Boot 为首的微服务开发框架就开了一个好头。
微服务是服务依赖最优解的上限,而服务依赖的下限是千万不要有依赖环。如果系统架构中有服务依赖环,那么表明你的架构设计是错误的。循环依赖有很多的副作用,最大的问题是这是一种极强的耦合,会导致服务部署相当复杂和难解,而且会导致无穷尽的递归故障和一些你意想不到的问题。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《左耳听风》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(18)

  • 夜行观星
    每篇文章都看好几次
    2017-12-22
    16
  • 菩提树下的杨过
    服务的循环依赖,有时候是公司组织结构和管理不合理导致的,比如几个相对独立的部门,A部门要搞一个新需求,依赖B部门提供的服务,B部门又依赖C部门的服务,而C又依赖A部门的服务。如果没有能站在上帝视角俯视全局的明白人指路(通常是公司最熟悉技术及业务的资深人士或xx委员会),部门之间沟通又不顺畅的情况下,服务依赖环就这么产生了,甚至还可以顺利上线,为将来又添新坑
    2018-06-24
    1
    10
  • zipkin好像对代码侵入性有点大
    2018-04-21
    9
  • ytz
    腾讯的tars也带有versionset,配合序列化协议实现兼容和升级也是非常便利。
    2018-08-23
    5
  • 冒泡
    关于分布式调用监控,为什么您推荐zipkin?skywalking和pinpoint您有什么评价吗?目前项目正在考虑分布式调用监控的问题,谢谢

    作者回复: 主要是社区和、跨语言、轻量、可扩展性这几个方面

    2018-01-01
    1
    4
  • 恩言
    皓哥,能推荐一两本相关书籍么

    作者回复: 后面的文章会有

    2017-12-25
    3
  • AT
    关于分布式调用监控,为什么您推荐zipkin?skywalking和pinpoint您有什么评价吗?目前项目正在考虑分布式调用监控的问题,谢谢
    2018-01-01
    2018-09-06
    2
  • edisonhuang
    从服务关键程度、服务依赖关系、整个架构的版本管理,服务和资源的调度,服务的故障恢复和动态扩容,全面阐述了分布式系统架构五大关键技术之——服务资源调度。
    2019-06-10
    1
  • Hector
    真知灼见和学富五车的感觉,皓哥的内力真的是深厚
    2019-05-24
    1
  • Dale
    我们工作中使用kubernetes进行服务部署,镜像带上版本信息,服务升级只需要更新镜像,对POD点进行灰度发布。使用容器化,kubernetes集群管理大大提高工作效率
    2019-01-13
    1
    1
  • 幼儿编程教学
    请教。state和status的区别是什么?
    2018-12-31
    1
  • godtrue
    zipkin,长见识了
    2018-12-30
    1
  • 安静
    服务直接不能循环依赖
    2018-11-22
    1
  • 蟹蟹
    前面都看懂 但是最后的服务编排没明白…
    2018-07-02
    1
  • 几叶星辰
    老师可否讲下,负载均衡,比如一个主机通过负载均衡器到达服务器A,在已建立路由表的情况下,那台主机到负载均衡器的所有包都是路由给服务器A吗
    2018-05-31
    1
  • JasonZ
    如果系统架构中有服务依赖环,那么表明你的架构设计是错误的。循环依赖有很多的副作用,最大的问题是这是一种极强的耦合,会导致服务部署相当复杂和难解

    这个能举例说明下么?而不是结论
    2019-09-07
  • JasonZ
    服务循环依赖的有什么大的问题么?
    2019-09-07
  • IT大飞说
    作为一个App开发,看的是一脸懵逼,但是感觉后台的架构,分布式系统,还有自动运维这些技术是真的牛逼!希望有机会可以更深入学习一下。
    2019-07-08
收起评论
18
返回
顶部