学习目标:
- 了解分布式
学习内容:
分布式系统是由多个计算机节点组成的系统,这些节点通过网络相互连接并协同工作,以完成共同的任务或服务。在分布式系统中,每个节点都运行着一部分应用程序,并且通常拥有自己的私有内存和计算资源。这些节点之间通过消息传递来交换信息和协调操作。
分布式系统的关键特性
-
可扩展性:系统可以通过增加更多的节点来提高其处理能力和存储容量。
-
容错性:系统能够在某些节点失败时继续运行,不会因为单个节点的问题而完全停止服务。
-
资源共享:系统中的节点可以共享数据和资源,如文件、数据库等。
-
并发性:系统可以同时处理多个任务,提高效率和响应速度。
-
透明性:分布式系统隐藏了其内部的复杂性,对用户来说就像是一个单一的、统一的系统。
分布式系统面临的挑战
- 一致性:确保所有节点上的数据在任何时候都是一致的。
- 可用性:系统需要能够随时响应用户的请求。
- 分区容忍性:即使网络分区发生,系统仍然能够继续运行。
- 网络通信:网络延迟和不可靠性可能会影响系统性能和正确性。
分布式系统的应用实例
- 互联网服务:如搜索引擎、社交网络和在线零售商。
- 企业应用:如电子邮件系统、客户关系管理(CRM)和供应链管理。
- 科学计算:如天气预测、基因序列分析和物理模拟。
分布式系统的设计原则
- 模块化:系统应该被设计成模块化的,每个模块负责一部分功能。
- 异步通信:节点之间的通信应该是异步的,以避免网络延迟导致的系统阻塞。
(通信异步必要性例子:假设我们有一个在线购物系统,这个系统由多个微服务构成,包括用户服务、商品服务、订单服务等。当用户浏览商品并下单时,这些微服务之间需要进行通信以完成订单处理。
在这个场景中,异步通信起到了关键的作用。例如,当用户下单时,订单服务会生成一个订单,并需要通知商品服务减少相应商品的数量。如果采用同步通信,订单服务必须等待商品服务确认减少数量后才能继续处理下一个订单,这可能会导致订单处理速度变慢,尤其是在商品服务响应较慢或出现故障时。) - 冗余:为了提高可靠性和可用性,系统应该包含冗余的数据和服务。
分布式系统的架构模式
- 客户端-服务器模式:客户端发送请求到服务器,服务器处理请求并返回结果。
- 对等网络:每个节点既是客户端又是服务器,节点之间直接通信。
- 微服务架构:应用被分解成一组小的、独立的服务,每个服务实现特定的功能。