01
introduction
什么是分布式系统
为什么使用分布式系统
一些例子
术语
优点,问题,挑战
- 挑战
系统模型
架构模型
DS的架构模型
Middleware 中间件
分布式系统是指由多台计算机或节点组成的计算系统,这些计算机或节点通过网络连接在一起,共同协作完成特定的任务或提供服务。与传统的集中式系统不同,分布式系统的核心特点是分散的计算资源和数据存储,这些资源分布在不同的地理位置或物理位置上。
以下是分布式系统的一些关键特征和概念:
- 多个节点:分布式系统由多个计算节点组成,这些节点可以是计算机、服务器、传感器或其他计算设备。
- 网络连接:这些节点通过计算机网络相互连接,以便彼此通信和协作。通常,它们使用互联网、局域网或专用网络进行通信。
- 并发性:分布式系统的节点可以并行执行任务,从而提高系统的性能和响应速度。
- 透明性:分布式系统通常会提供透明性,使用户无需关心底层的分布式性质,就可以像使用单一系统一样使用它。
- 高可用性:分布式系统通常被设计为具有高可用性,即使某个节点发生故障,系统仍然可以继续运行。
- 数据分布:数据在分布式系统中通常被分散存储在不同的节点上,这有助于提高系统的扩展性和容错性。
- 负载均衡:分布式系统可能需要使用负载均衡算法来平衡不同节点的工作负载,以确保各节点的资源充分利用。
- 容错性:分布式系统通常需要实施容错机制,以便在发生故障时保持系统的可用性和稳定性。
分布式系统的例子包括云计算平台、分布式数据库系统、分布式文件系统、分布式计算框架(如Hadoop和Spark)、分布式存储系统(如分布式文件系统和分布式键值存储)等。这些系统通常用于处理大规模数据、提供高可用性的服务以及支持分布式应用程序的开发。
introduction
什么是分布式系统
- 分布式系统:分布式系统是一种计算系统,它将计算资源和数据分散在多个节点上,这些节点可以通过网络连接在一起。分布式系统的目标是协调和管理这些分布在不同位置的资源,以实现特定的目标或提供服务。分布式系统可以采用各种不同的架构,包括集中式控制、客户端-服务器模型、P2P模型等。分布式系统通常更广泛地涵盖了各种不同的拓扑结构和通信模式。
- P2P模式:P2P(点对点)模式是分布式系统的一种特定形式,它强调节点之间的对等通信,没有中心服务器或中心节点。在P2P网络中,所有节点都可以直接与彼此通信和交互,而不需要中介。P2P模式通常用于文件共享、即时通讯、区块链等应用,它在分布式系统中强调了节点之间的平等性和去中心化。
因此,可以说P2P是分布式系统的一种子集,分布式系统可能包括各种不同的拓扑结构和通信模式,而P2P是其中一种特定的拓扑结构和通信模式。在分布式系统中,P2P模式通常被用于特定的用例,其中去中心化、平等性和节点间直接通信是重要的特点。
- 互联网等弱耦合系统(weakly-coupled system)到强耦合系统都会涉及到.这些系统可能在不同程度上涉及多台计算机或节点之间的协作和通信。
- 是由任何位于网络上的计算机的硬件或软件组成的系统,通过message passing进行通信和协调活动
- 简单来说就是各独立计算机的集合,用户与分布式系统交互时,它们感觉就像在使用单一的计算机,而不是多台计算机。
- 强调了用户对分布式系统的透明性,即用户不需要关心系统底层的分布式性质,就可以像使用单一计算机一样使用它
为什么使用分布式系统
-
以transparent,open,scalable的方法连接用户和资源
- 使用分布式系统的实体,实体包括用户、软件、计算机
- 分布式系统是一个抽象概念,它可以包括硬件和/或软件实体。用户不需要关心系统内部的具体结构和实现细节,因为分布式系统的目标是提供透明性,使用户感觉就像在使用单一系统。
- 对用户隐瞒系统真正的结构。避免实际上复杂混乱的系统对用户的实际使用造成影响,用户无需了解内部运行情况
- 可以在运行时添加删除资源,动态分配资源。开放性
- 可以扩展来满足增加的需求。比如增加硬件资源,优化软件体验,改进系统架构
- 将用户与资源连接在一起,使用户能够轻松访问和利用分布在不同地方的计算资源、数据或服务
- 对于用户增加时能够有效工作的问题,涉及到系统的性能和资源管理
- 分布式系统必然有这些特征
一些例子
- 因特网,通过网络连接各设备,所有设备相当于共享了好多资源
- 透明:ip地址
- 开放度:可以增减资源
- 扩展性:IPv4,IPv6扩展设备
术语
- site 站点:
- 是分布式系统一个或多个主机的物理地址或网路节点
- 一个站点可以是一个数据中心、一个机房、一个办公室,或者是一个网络中的一个特定位置。每个站点通常有其自己的资源和设备,例如服务器、存储设备和网络设备。
- host 主机,也叫node或machine:
- 是连接到DS的特定机器
- 主机是站点中的服务器或客户端(server/client),它们可以运行应用程序、存储数据,并提供服务
- 分布式系统是由多个计算机或节点组成的系统,这些计算机通过网络连接在一起,共同协作完成特定的任务或提供服务。这些节点可以分布在不同的站点上,站点之间的通信和协调是分布式系统的关键特征之一。
- resource 资源:
- 是主机上的程序或数据。程序可以被远程执行,数据也可以被调用保存
- task 任务 也叫computation/job:
- 是用户要求DS执行的一组特定指令
优点,问题,挑战
- 同步和互斥:需要确保多个任务之间的协同工作,以避免数据竞争和不一致性。
- 资源分配和负载均衡:需要有效地分配计算资源,以确保各个任务获得足够的资源。
- 错误处理:需要处理并发操作可能引发的错误,例如竞标冲突或数据损坏。
- 性能和可伸缩性:需要权衡并发性带来的性能提升与成本,以确保系统在高负载下仍然能够正常运行。
-
资源共享
- 直接访问之前无法访问的资源,共享数据或主机
-
concurrency 并发性
-
在分布式系统中,多台计算机允许多个用户同时执行任务,这意味着系统必须能够同时处理多个任务。
-
任务本身可以分解为子任务,这些子任务可以同时在不同的计算机上处理。
-
示例:
- 五个不同的用户尝试同时打印一份100页的文档。
- 10,000名用户尝试同时访问同一个网站。
- 考虑在线拍卖:如果两个并发竞标者(Smith和Jones)同时投标,我们如何确保它们的出价被正确记录。
并发性的好处:
- 计算速度提升:系统可以利用并行处理来减少完成任务所需的时间。这意味着可以更快地执行任务,提高效率。
并发性的问题:
- 资源过载:当太多用户尝试执行相同的任务时,可能会导致资源过载,从而增加任务完成时间。overload
- 并发性带来任务管理、网络通信开销等成本。
- 如何确保(可能冲突的)操作被正确执行。
-
-
global clock,记录事务以正确的顺序执行
-
可靠性
- 出现问题可以及时修正
- 是某个部分出现故障继续工作的能力
- 一个节点故障不影响其他节点使用;用户在一个站点找不到对应资源可以在另一个站点找
- redundancy冗余性可以提高可靠性
- 冗余指的是在系统中增加额外的组件、资源或备用设备,以便在主要组件或资源出现故障时能够提供备用或冗余支持
- 冗余表示部分资源会存储相同重复的数据或发挥相似的功能,其中一个坏掉了其他有相同功能的资源照样可以提供服务
-
scalability 可伸缩性
- 适应用户数量和资源数量不断变化
- 资源匹配:当添加新计算机时,需要确保它们具备适当的资源,以满足系统需求。这包括计算能力、内存、存储和网络带宽等。
- 网络开销:添加新计算机可能会增加网络使用量,这可能导致网络拥塞或延迟增加。需要考虑如何有效地管理网络资源。
- 系统可靠性:添加新计算机可能会影响系统的可靠性。如果新的计算机不可靠,可能会增加整个系统的故障风险。因此,需要谨慎考虑可靠性和冗余性。
挑战
- heterogeneity 异构性
- 指的是系统具备与不同网络、计算硬件、操作系统、编程语言以及不同开发者的实现互操作的能力
- 互联网可以连接使用不同网络技术和硬件的计算机,并在各种操作系统上运行。
- 分布式系统需要能够理解和解释不同语言之间的数据表示
- 异构性对于分布式系统非常重要,因为现实世界中的系统和组件通常是多样化的。不同的硬件、操作系统、编程语言和开发者实现可能需要协同工作,以实现系统的功能和目标
- 需要采用标准化和协议来确保各种不同类型的资源可以有效地协同工作。这有助于增强分布式系统的灵活性和互操作性
- 指的是系统具备与不同网络、计算硬件、操作系统、编程语言以及不同开发者的实现互操作的能力
- openness 开放性
- 指系统的可扩展程度,尤其在分布式系统中,它通常涉及到添加和集成新的资源共享服务的潜力
- 关键的软件接口定义统一的通信机制
- 为实现开放性,分布式系统通常需要定义开放的API和接口,使第三方开发者能够构建和集成新的功能。此外,定义统一的通信协议和数据格式也是重要的。
- 允许系统与不同来源的新服务和组件进行扩展和集成。这有助于系统适应不断变化的需求和技术。
- security 安全性
- 安全性关注的是如何保护那些可能对其所有者有价值但需要在分布式系统中共享的资源,尤其是信息资源。这些资源可能包括个人信息、信用卡信息、机密文件等。
- 信息传输的安全性,加密
- 访问资源的安全性,身份验证
- 拒绝服务攻击(Denial of Service Attacks)。这些攻击旨在使系统无法正常运行,通常通过超载系统或占用资源来实现
- failure handling 故障处理
- 硬件故障可能导致进程中的错误,甚至停止进程完成。
- 在分布式系统中,故障通常是部分的,这意味着一个组件的故障不会导致整个系统的故障。
- Failure Detection 系统需要能够检测到组件或节点的故障。这可能涉及到监控节点状态、心跳检测等机制
- Failure Masking (hiding the failure) 有时可以隐藏故障,使其不会对系统的其他部分产生影响。例如,通过冗余组件,可以在一个组件发生故障时继续提供服务。
- Failure Tolerance
- Recovery from Failure
- Redundancy 冗余组件或备份系统,可以提高系统的可用性和容错性
- Level of Availability - 99.9% uptime (3 nines) = 8.76 hours downtime per year - 99.999% uptime (5 nines) = 5.26 minutes downtime per year
- transparency 透明度
- 对组成DS的部分组件进行隐藏
系统模型
架构模型
At the core of this model is an initial classification of components into:
- Server processes: the provider of a service
- Client processes: the invoker(user) or a service
- Peer processes: processes that cooperate and communicate in a symmetrical manner to perform a task
DS的架构模型
Middleware 中间件
- 是一组计算机中的一组进程或对象,相互交互以实现分布式系统的通信和资源共享
- 一种计算机软件或服务层,位于操作系统和应用程序之间
- 可以帮助开发者更容易地构建分布式系统,并实现跨计算机的通信和资源共享。这些中间件框架提供了常用的功能和通信协议,以简化分布式应用程序的开发和管理。
- 提供了抽象的支持层,作为构建目标应用程序的基础组件。
- 提供了高级特性
- 远程调用
- 进程组通信
- event notification
- Sun RPC, CORBA, Java RMI, Web Services, Microsoft’s Distributed Component Object Model (DCOM)
- 对于特殊需求或复杂的交互模式,可能需要采用定制的解决方案来满足系统的需求,而不是依赖通用的中间件,比如FTP
- 某些关键功能需要在通信的端点处的应用程序层面实现,而不应该依赖于通信系统本身。这是因为只有应用程序了解其特定需求和上下文,并能够实现特定的行为。通信系统可以提供一些性能增强的功能,但不能完全代替应用程序层面的功能。