1、什么是分布式计算?
分布式计算
分布式计算是构建大型系统的技术,它将工作分配到多台机器上。与传统计算系统(由单台计算机运行提供服务的软件)或客户端-服务器计算(多台机器远程访问集中式服务)不同,分布式计算通常有数百或数千台机器共同协作来提供大型服务。
2、描述分布式计算中的三种主要组合模式。
三种主要组合模式分别为:
-
负载均衡器用于多个后端副本
负载均衡器将流量分配到许多重复系统中。 -
前端搭配多个不同后端
前端使用不同的后端并行工作,每个后端执行不同的进程。 -
服务器树
采用树状配置,每个树级别有不同的用途。
3、有时主服务器不直接回复答案,而是回复答案所在的位置。这种方法有什么好处?
避免主服务器在接收和转发大量数据时过载,使主服务器无需在大数据传输中充当中间人。
4、解释CAP原则。
CAP代表一致性(Consistency)、可用性(Availability)和分区容错性(Partition resistance)。CAP原则指出,不可能构建一个能同时保证一致性、可用性和分区容错性的分布式系统。可以实现其中任意一个或两个特性,但不能同时实现全部三个。若要使用这类系统,必须明确哪些特性是有保障的。
5、当一个系统是松耦合时意味着什么?这些系统的优势是什么?
当系统是松耦合时,意味着每个组件对其他组件的内部情况知之甚少或一无所知,各组件通过抽象提供一个隐藏实现细节的接口。
其优势在于:
- 整个系统能高度可用、持久运行,且能在无中断的情况下发展变化;
- 子系统可在系统运行时被替换,即便实现方式完全不同,只要提供相同的抽象接口即可;
- 此外,松耦合系统中每个组件可独立测试并按自身速度推进,问题更易隔离。
6、请举例说明你所接触过的松散耦合和紧密耦合系统,并说明是什么因素使它们呈现出松散或紧密耦合的特点。
紧密耦合系统如负载均衡软件、其插件和操作系统内核,在高要求环境中常作为一个元组进行测试,性能下降后果严重;虚拟化管理系统(如Ganeti或OpenStack)、虚拟化技术(如KVM或Xen)、存储系统(DRBD)和操作系统内核等紧密耦合组件也属于此类。这些系统紧密耦合是因为组件之间相互依赖,一个组件的变化可能对其他组件产生重大影响。
松散耦合系统如谷歌的基础设施,是由小的、松散耦合的服务组成的生态系统,服务可独立测试和升级。松散耦合是因为每个组件对其他组件的内部情况了解很少或一无所知,可独立进行更改和升级,问题也更易隔离。
7、我们如何估算系统处理请求(如检索电子邮件消息)的速度?
事务时间估算与系统设计
挑选一些常见事务并将它们分解成更小的步骤,然后估算每个步骤所需的时间。
时间消耗因素
- 磁盘访问 :慢是因为涉及机械操作。
- 网络延迟 :慢是受光速限制。
估算方法
通常只要知道以下两个参数,就能估算出一个事务所需的时间:
- 用户到数据中心的距离
- 所需的磁盘寻道次数
系统设计与验证
- 可以用最佳估算设计系统并构建原型来测试假设。
- 在构建系统过程中重新测量并调整设计。
8、为什么为运维而设计如此重要?
服务生命周期与运维设计
考虑给定服务的整个生命周期,只有一小部分时间用于构建服务功能,绝大多数时间用于运维服务。但传统上,软件的运维功能若被考虑,也会被视为比功能优先级低。
为运维而设计,能确保所有正常运维功能都能良好完成。提供高可用服务的最佳策略,是在软件中构建增强执行和自动化运维任务能力的功能。
9、自动化配置通常是如何实现支持的?
系统必须可通过自动化手段进行配置,包括初始配置和后续更改。要实现以下任务:
- 对配置进行备份和恢复
- 查看一个存档副本与另一个版本之间的差异
- 在不关闭系统的情况下存档运行中的配置
典型的实现方式是让配置采用格式明确的文本文件形式,自动化系统可轻松生成此类文件,文本文件易于解析、审计、存档,还可存储在源代码库中,并使用标准文本比较工具进行分析。
10、列出通过复制实现冗余的重要因素。
- 服务应设计为支持多副本冗余配置,若未设计为在负载均衡器后工作,可能会出现问题,如用户登录状态存储问题。
- 复制状态时,要解决在副本之间复制状态的挑战。
- 对于数据库,应创建一个或多个只读副本以支持数据库扩展,主数据库处理所有数据库变更事务,更新通过批量传输传递给只读副本。
- 考虑备用容量,包括:
- 确定 N + M 冗余模式,其中 N 为提供容量所需的单元数,M 为额外容量单元数;
- 选择容量单元的粒度以管理效率;
- 考虑恢复额外容量的速度、在恢复期间发生第二次故障的可能性(MTTR/MTBF × 100)以及第二次故障是否会导致数据丢失等因素。
11、你可以向外部供应商提供哪些因素,让供应商认真对待你的问题?
- 以建设性方式提高问题的可见度,例如撰写包含功能请求的事后分析报告,让供应商了解请求的背景。
- 若供应商对请求无响应,可围绕其软件编写构建框架的代码,并将此类系统作为开源产品对外发布,形成围绕代码的社区。
12、采用软件即服务(SaaS)需要考虑哪些注意事项?
采用SaaS需考虑的方面
1. 操作自助性
- 数据导入和功能启用应自助化
- 用户也能自助离开服务
- 可导出或检索数据并关闭账户
- 避免供应商锁定
2. 版本升级
- SaaS经常频繁且无预警升级
- 应让用户能访问主要新版本用于规划、培训和用户验收测试
- 提供选择升级日期的机制
- 或提供“快速发布”和“计划发布”两种轨道
3. 隐私和安全政策冲突
- 自身隐私政策需涵盖所有客户的隐私政策
- 可能要为特定客户提供更高的安全性
- 将其与其他客户进行隔离

最低0.47元/天 解锁文章
3207

被折叠的 条评论
为什么被折叠?



