《分布式系统:概念与设计》一1.4 关注资源共享

简介: 本节书摘来华章计算机《分布式系统:概念与设计》一书中的第1章 ,第1.4节,(英) George Coulouris Jean DollimoreTim Kindberg Gordon Blair 著 金蓓弘 马应龙 等译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.4 关注资源共享

用户已经习惯了资源共享带来的好处,以致很容易忽视它们的重要性。大家通常共享硬件资源(如打印机)、数据资源(如文件)和具有特定功能的资源(如搜索引擎)。14
从硬件资源的观点看,大家共享设备(如打印机和磁盘)可以减少花费,但对用户具有更大意义的是共享与用户应用、日常工作和社会活动有关的更高层的资源。例如,用户关心以共享数据库或Web页面集方式出现的共享数据,而不是实现上述服务的硬盘和处理器。类似地,用户关心诸如搜索引擎或货币换算器之类的共享资源,而不关心提供这些服务的服务器。
实际上,资源共享的模式随其工作范围和与用户工作的密切程度的不同而不同。一种极端是,Web上的搜索引擎给全世界的用户提供工具,而用户之间并不需要直接接触;另一种极端是,在计算机支持协同工作(Computer Supported Cooperative Working,CSCW)中,若干直接进行合作的用户在一个小型封闭的小组中共享诸如文档之类的资源。用户在地理上的分布以及用户之间进行共享的模式决定了系统必须提供协调用户动作的机制。
我们使用术语服务表示计算机系统中管理相关资源并提供功能给用户和应用的一个单独的部分。例如,我们通过文件服务访问共享文件;通过打印服务发送文件到打印机;通过电子支付服务购买商品。仅仅通过服务提供的操作可以实现对服务的访问。例如,一个文件服务提供了对文件的read、write和delete操作。
服务将资源访问限制为一组定义良好的操作,这在某种程度上属于标准的软件工程实践,同时它也反映出分布式系统的物理组织。分布式系统的资源是物理地封装在计算机内的,其他计算机只能通过通信才能访问。为了实现有效的共享,每个资源必须由一个程序管理,这个程序提供通信接口使得对资源进行可靠和一致的访问和更新。
大多数读者很熟悉术语服务器,它指的是在连网的计算机上的一个运行程序(一个进程),这个程序接收来自其他计算机上正在运行的程序的请求,执行一个服务并适当地做出响应。发出请求的进程称为客户,整个方案称为客户-服务器计算。在这个方案中,请求以消息的形式从客户发送到服务器,应答以消息的形式从服务器发送到客户。当客户发送一个要执行的操作请求时,就称客户调用那个服务器上的操作。客户和服务器之间的完整交互,即从客户发送一个请求到它接收到服务器的应答,称为一个远程调用。
同一个进程可能既是客户又是服务器,因为服务器有时调用其他服务器上的操作。术语“客户”和“服务器”仅仅是针对在一个请求中扮演的角色而言。客户是主动的(发起请求),服务器是被动的(仅在它们收到请求时唤醒);服务器是连续运行的,而客户所持续的时间只是客户所属的那部分应用程序持续的时间。
注意,默认情况下,术语“客户”和“服务器”指的是进程而不是运行客户或服务器的计算机,15虽然在日常用法中这些术语也指计算机。另一个不同(我们将在第5章讨论)是在用面向对象语言实现的分布式系统中,资源被封装成对象,并由客户对象访问,这时,称一个客户对象调用了一个服务器对象上的方法。
许多(但不是所有的)分布式系统可以完全用客户和服务器交互的形式来构造,万维网、电子邮件和连网的打印机都符合这种模式。第2章将讨论除客户-服务器系统之外的其他系统类型。
一个正在执行的Web浏览器是一个客户的例子。Web浏览器与Web服务器通信,从服务器上请求Web页面。我们在1.6节详细讨论Web和其相关的客户-服务器体系结构。

相关文章
|
NoSQL 关系型数据库 MySQL
使用redis分布式锁解决并发线程资源共享问题
使用redis分布式锁解决并发线程资源共享问题众所周知, 在多线程中,因为共享全局变量,会导致资源修改结果不一致,所以需要加锁来解决这个问题,保证同一时间只有一个线程对资源进行操作 但是在分布式架构中,我们的服务可能会有n个实例,但线程锁只对同一个实例有效,就需要用到分布式锁----redis s...
1226 0
|
1月前
|
NoSQL 算法 安全
Redlock 算法-主从redis分布式锁主节点宕机锁丢失的问题
Redlock 算法-主从redis分布式锁主节点宕机锁丢失的问题
153 0
|
1月前
|
NoSQL 关系型数据库 MySQL
分布式锁(redis/mysql)
分布式锁(redis/mysql)
58 1
|
3月前
|
NoSQL Java 测试技术
字节二面:Spring Boot Redis 可重入分布式锁实现原理?
字节二面:Spring Boot Redis 可重入分布式锁实现原理?
160 1
|
3月前
|
存储 缓存 NoSQL
【分布式】Redis与Memcache的对比分析
【1月更文挑战第25天】【分布式】Redis与Memcache的对比分析
|
3月前
|
监控 NoSQL Linux
【分布式】Redis的持久化方案解析
【1月更文挑战第25天】【分布式】Redis的持久化方案解析
|
27天前
|
NoSQL Java Redis
如何通俗易懂的理解Redis分布式锁
在多线程并发的情况下,我们如何保证一个代码块在同一时间只能由一个线程访问呢?
37 2
|
1月前
|
缓存 NoSQL Java
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
60 0
|
1月前
|
人工智能 监控 NoSQL
【万字长文 一文搞定】Redis:从新手村到大师殿堂的奥德赛之旅 9种实现分布式锁的全技术指南
【万字长文 一文搞定】Redis:从新手村到大师殿堂的奥德赛之旅 9种实现分布式锁的全技术指南
81 4
|
1月前
|
消息中间件 存储 NoSQL
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统

热门文章

最新文章