分布式系统的定义
分布式系统就是若干独立计算机的集合,这些计算机对于用户来说就像是单个相关系统。
当在不同的主机执行不同的功能来最终完成同一个服务,这就可以叫做分布式系统。当在不同的主机执行相同的功能,这就叫做集群。集群就是将相同的程序,通过不断横向扩展,以提高服务能力的方式。
分布式系统的优势
分布式系统因为将数据、功能等都分到多个主机,这样如果发生由于各种原因而导致的主机崩溃的时候,我们可以减轻风险,另一个重要的优势就是可扩展性,任何主机都会有性能的极限,而分布式可以通过不断扩张主机的数量以实现横向水平性能的扩展,主机数量越多,CPU、内存、存储资源等也就越多,能够处理的并发访问量也就越大。
分布式系统面临的挑战
- 异构性:分布式系统由于基于不同的网络、操作系统、计算机硬件和编程语言来构造,所以必须用一种通用的网络通信协议来屏蔽异构系统之间的差异。一般由中间件来处理这些差异。
- 一致性:数据被分散或者复制到不同的主机上,如何保证各台主机的一致性则成为一个难点。
- 故障独立性:分布式系统要求单个主机出现故障不会影响整个系统的正常使用。
- 安全性:由于分布式系统主要通过网络通信来相互沟通,所以网络通信中的数据安全也是一个需要解决的问题。
- 可扩展性:系统要设计成随着业务量的增加,相应的系统也必须要能扩展来提供相对应的服务。
分布式系统基础设施
- 分布式缓存系统
分布式缓存主要用于高并发环境相爱,减轻数据库的压力,提高系统的响应速度和并发吞吐量。当大量的读、写请求涌向数据库时,磁盘的处理速度和内存不再一个量级,因此,在数据库之前加一层缓存,能够显著提高系统的响应速度,并降低数据库的压力。 - 持久化存储
常见的分布式系统存储解决方案,包括Mysql的分布式扩展、HBase的API及使用场景、Redis的使用等。 - 分布式信息系统
消息可以被保存在队列中,直到被接受者取出。 - 搜索引擎
垂直化的搜索引擎。 - CDN系统
- 负载均衡系统
- 运维自动化系统
- 实时计算系统
- 离线计算系统
- 分布式文件系统
- 日志收集系统
- 监控系统
- 数据仓库
今天先写到这儿,后面补充。。。