File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 22
33## 分布式系统的概念
44
5- 《分布式系统原理与范式》一书中是这样定义分布式系统的:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像是单个相关系统”。这里面包含了2个含义
5+ 《分布式系统原理与范式》一书中是这样定义分布式系统的:
66
7+ ** “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像是单个相关系统”**
8+
9+ 这里面包含了2个含义:
710* 硬件独立:计算机机器本身是独立的
811* 软件统一:对于用户来说,他们就像是跟单个系统打交道
912
10- 分布式系统的扩展和升级都比较容易。分布式系统某些节点故障,不影响整理可用。用户不会和应用程序不会察觉哪些部分正在替换或者维修 ,也不会感知到新部分的加入。
13+ 分布式系统的扩展和升级都比较容易。分布式系统某些节点故障,不影响整理可用。用户和应用程序交互时,不会察觉哪些部分正在替换或者维修 ,也不会感知到新部分的加入。
1114
1215万维网就是一个分布式文档模型的简单例子。要查看某个文档,用户只需要电机相关的链接即可,文档就会呈现在屏幕上。用户无需关心文档是位于哪个位置,是由什么服务器处理。概念上讲 Web 看起来就是一个单独的服务器。而实际上,Web 在物理上是分布到非常多的服务器上的。
1316
1417## 如何设计分布式系统
1518
16- 所以设计分布式系统的本质就是“如何将一个系统拆分成多个子系统部署到不同机器上”。
19+ 设计分布式系统的本质就是
20+
21+ ** “如何合理将一个系统拆分成多个子系统部署到不同机器上”**
1722
1823分布式系统的设计应考虑以下几个问题:
1924
2025* 系统如何拆分为子系统?
21- * 子系统间如何规划通信协议?
22-
23- ## 分布式计算的概念
24-
25- 把一个大计算任务拆分成多个小计算任务分布到若干台机器上去计算,然后再进行结果汇总。
26-
27- ## 目的
28-
29- * 可靠性:系统本身也不可能是完美的,随时可能会出错,为了避免故障,需要将业务分散开保留一定的冗余度,或者将系统部署到多台机器上提供相同的功能,这个也称为“集群”。
30- * 扩展性:系统负载高,单台机器无法承载,希望通过使用多台机器来提高系统的负载能力
31-
32- ## 注意点
33-
34- * 系统如何拆分为子系统
35- * 子系统间如何规划通信协议
36- * 一致性
37- * 容错
38- * 安全
26+ * 如何规划子系统间的通信?
27+ * 如何让子系统可以扩展?
28+ * 通信过程中的安全如何考虑?
29+ * 子系统的可靠性如何保证?
30+ * 数据的一致性是如何实现的?
3931
40- ## 基础设施
32+ 本书就是针对分布式系统中常见的问题进行探讨。
4133
42- * 缓存
43- * 异步
44- * 持久化存储
45- * 消息队列
46- * 搜索
47- * 集群
48- * 负载均衡:淘宝是LVS(Linux Virtual Server)、CDN节点、PV(Page View,页面访问量)、个UV(Unique Visitor,用户访问)
49- * 数据压缩
50- * 分析和挖掘
34+ ## Java 分布式系统
5135
52- 架构是一开始就能设计完美,需要不断优化
36+ 上面讲到的都是分布式系统的通用的概念,那么采用 Java 来实现分布式系统有什么好处呢?
5337
54- “火车模型”:一个功能没有测试通过,整个系统都不能发布。即任何一个乘客没有上车,都不许发车。
38+ * Java 编程语言是一种通用的、并行的、基于类的、面向对象的语言。它被设计得非常简单,这样程序员可以在该语言上流畅的交流。Java 编程语言与 C 和 C++ 有关联,但组织却截然不同,其中也省略了其他语言的一些用法,比如指针。它的目的是作为一个生产性语言,而不是一个研究性语言,因此,在设计上避免了包括新的和未经考验的功能。更多可以参考《Java 编程要点》。
39+ * Java 天然支持分布式应用。
40+ * Java 分布式系统应用广泛,且久经考验,很多大公司比如 Amazon,Linkedin,阿里巴巴等都提供了很多 Java 分布式系统技术方案。
41+ * Java 拥有丰富的中间件框架,避免了很多底层编码的复杂性,帮助你站在巨人的肩膀上。
5542
56- 超市的运维的抽象
5743
58- Memcache: 分布式缓存
59- Hadoop:离线分析
44+ 本书所讲的示例、代码也是基于 Java 语言或者 Java 框架。
6045
61- jetty tomcat
6246
63- :“I hear and I forget. I see and I remember. I do and I understand”
6447
65- 荀子说的“不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之。”
Original file line number Diff line number Diff line change 1+ ## 分布式计算的概念
2+
3+ 把一个大计算任务拆分成多个小计算任务分布到若干台机器上去计算,然后再进行结果汇总。
4+
5+ ## 目的
6+
7+ * 可靠性:系统本身也不可能是完美的,随时可能会出错,为了避免故障,需要将业务分散开保留一定的冗余度,或者将系统部署到多台机器上提供相同的功能,这个也称为“集群”。
8+ * 扩展性:系统负载高,单台机器无法承载,希望通过使用多台机器来提高系统的负载能力
9+
10+ ## 注意点
11+
12+ * 系统如何拆分为子系统
13+ * 子系统间如何规划通信协议
14+ * 一致性
15+ * 容错
16+ * 安全
17+
18+ ## 基础设施
19+
20+ * 缓存
21+ * 异步
22+ * 持久化存储
23+ * 消息队列
24+ * 搜索
25+ * 集群
26+ * 负载均衡:淘宝是LVS(Linux Virtual Server)、CDN节点、PV(Page View,页面访问量)、个UV(Unique Visitor,用户访问)
27+ * 数据压缩
28+ * 分析和挖掘
29+
30+ 架构是一开始就能设计完美,需要不断优化
31+
32+ “火车模型”:一个功能没有测试通过,整个系统都不能发布。即任何一个乘客没有上车,都不许发车。
33+
34+ 超市的运维的抽象
35+
36+ Memcache: 分布式缓存
37+ Hadoop:离线分析
38+
39+ jetty tomcat
40+
41+ :“I hear and I forget. I see and I remember. I do and I understand”
42+
43+ 荀子说的“不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之。”
You can’t perform that action at this time.
0 commit comments