《区块链:技术与应用》课后思考题及答案 第二章 课后思考题答案_第1页
《区块链:技术与应用》课后思考题及答案 第二章 课后思考题答案_第2页
《区块链:技术与应用》课后思考题及答案 第二章 课后思考题答案_第3页
《区块链:技术与应用》课后思考题及答案 第二章 课后思考题答案_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章课后思考题答案1.分布式系统架构有哪些类别?不同架构的优缺点是什么?分布式系统架构有分层架构、面向服务的架构和微服务架构。1.分层架构优点为开发效率较高,系统内各部分的相互依赖程度较低,系统维护成本较低,标准化程度较高,易于开发,模块可复用性较强;缺点为表示层数据的改动可能会导致其他相关层逻辑的修改,在该场景下的开发效率会因此而降低。2.面向服务的架构优点为能使服务更具业务价值,响应速度更快,复用性也更强,具有服务间相互依赖性低、系统具有平台无关性以及可复用性强的特点;缺点为可能导致系统整体复杂度提高,服务间通信开销较大,有时还会因过度拆分而影响系统的整体性能和稳定性,并且在小规模应用程序中适用性较差。3.微服务架构优点为开发复杂度低,微服务间的依赖性低,具有跨语言特性,微服务独立开发部署;缺点为链修改导致业务修改复杂,对服务进行拆分导致系统测试复杂。2.分布式系统在业务处理和数据存储方面采用了哪些设计?不同设计的优缺点是什么?在业务处理方面,最初使用单体架构时虽然开发测试简单,部署运维方便,但是框架更新复杂,系统各功能间依赖严重,系统可用性和性能都有瓶颈,于是逐渐演变出了各种分布式系统架构,如①分层架构,其将业务抽象出了不同层,每层与上一层服务之间是层调用的限制关系,同时也可以降低系统不同层之间的依赖关系,而三层架构的业务逻辑层由于承载了所有业务处理逻辑,会随着系统的不断发展而愈发庞大,因此,可以将这一层进一步优化,分离为接入层和服务层,接入层更为简单,拥有更好的可扩展性,服务层则专注于实现业务逻辑的处理,然而,在分层架构下,表示层数据的改动可能会导致其他相关层逻辑的修改,在该场景下的开发效率会因此而降低;②面向服务的架构依据业务的属性对服务进行了划分和定义,这样做提高了服务的业务价值,提升了响应速度和复用性,但可能会导致系统整体复杂度高、服务间通信开销大、过度拆分影响性能和稳定性,以及小规模应用程序中适用性较差的问题;③微服务架构中的业务从API网关开始作为系统的唯一入口,所有模块都按照业务进行拆分,起到了降低开发复杂度和服务间依赖性的作用,但缺点是链修改导致业务修改复杂,对服务进行拆分导致系统测试复杂。在数据存储方面,高可用角度下分布式系统架构在数据存储方面主要指两个层面,从服务器层面讲是双机架构,从数据层面讲是数据多副本。一般将单机房场景下的两台服务器配合实现高可用称为双机架构,常见的双机架构有主备模式、主从模式和双主模式。①主备模式是一种最简单的架构,由一个主数据库和一个备数据库组成。备数据库在正常情况下不使用,只有在主数据库出现故障时才启用。主备模式的优点是实现非常简单,对外业务只需要感知主数据库的地址,备数据库对业务透明,它只需要从主数据库同步数据,缺点是在正常业务场景下,备数据库不提供服务,这就导致备数据库在资源层面上没有得到有效利用,数据库的性能(特别是读取性能)无法得到有效提升。另外,备数据库的切换只能靠人工实现,因此会提高运维成本,降低系统可用性;②主从模式是在主备模式基础上的一个升级,它将正常场景下的备数据库提升为可用的从数据库,其优点是解决了主备模式下的资源浪费问题,提升了线上读取数据的性能,缺点是业务需要感知主从数据库,并且需要判断什么场景下分发到哪个数据库进行读取,以及当出现故障时,仍然需要人工介入切换;③双主模式是指两个数据库互为主从,都对外提供读写,当客户端访问时,可以以某种策略来连接后端的两台服务器,其适用于对数据一致性不敏感的场景。①副本是分布式系统容错、提高可用性的基本手段,一般数据副本的基本策略以机器为单位,每个副本存储在不同的机器上,副本的数据保持完全一致,称为全量数据多副本。全量数据多副本的优点在于实现比较简单,缺点在于数据恢复效率低,数据写入性能成为瓶颈,②针对以上两点不足,演变出了一种基于数据分片的多副本存储模式,将每个业务的数据进行分片,每个分片的数据再采取多副本存储模式,其优点在于数据写入性能好,数据恢复效率高,扩容便捷。3.数据库系统的四个基本特性是什么?任何一个特性不满足会对数据库造成什么影响?数据库的四个基本特性是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。1.如果不满足原子性,数据库可能会进入不一致的状态,部分数据更新可能会丢失或不完整,导致数据不准确;如果一个操作分配了资源(如内存或文件描述符)而未能成功地释放或回滚,可能会导致资源泄露;当多个事务相互依赖时,一个事务的部分完成可能导致其他事务无法继续,影响系统的整体可靠性;2.如果不满足一致性,数据库可能会存在不符合预定约束的状态,产生不合法的数据,破坏数据完整性;3.如果不满足隔离性,可能会出现脏读、不可重复读或幻读等问题,导致错误的计算和决策;4.如果不满足持久性,那么在事务提交后,如果发生系统崩溃或者其他故障,那么这个事务的修改结果可能会丢失,没有被永久的保存在数据库中。4.Gossip协议也是一种分布式通信协议,用于实现分布式系统中的数据同步和复制。Gossip协议也称流行病协议,是基于流行病传播方式的信息交换协议。查阅相关资料了解Gossip协议的基本原理。Gossip协议是一种基于信息传播的分布式协议,类似于八卦传播,节点通过随机选择其他节点交换信息,逐渐实现系统中的数据同步、状态传播或一致性维护。每个节点在收到其他节点的信息后,会更新自己的状态,并将更新后的信息继续传播,直至整个系统达成一致。该协议的特点包括去中心化、容错性高和高效性。信息传播不依赖中心节点,节点间对等通信,具有较强的容错能力,并且在大规模系统中,信息能迅速传播至所有节点。此外,由于每个节点自主传播信息,系统具有较好的扩展性和灵活性。Gossip协议广泛应用于分布式系统中的故障检测、数据同步、负载均衡和一致性协议等场景。它能有效支持大规模分布式环境中的高效运作,特别适用于需要容忍节点失败或网络问题的系统。然而,Gossip协议也存在一定的缺点,比如可能会导致冗余信息的传播,增加网络负担,并且信息传播有延迟,可能导致短时间内节点状态不一致。5.并发是分布式系统中非常重要的概念,而Go语言是一种天生支持并发的编程语言。请查阅相关资料,学习了解Go语言的goroutine、channel等特色设计。1.goroutine是Go语言中轻量级的线程,由Go运行时(runtime)管理。通过go关键字启动一个新的goroutine,使得程序能并发执行。每个goroutine在执行时并不需要操作系统的线程调度,而是由Go运行时调度,因此创建和销毁的开销非常小。其特性有:轻量级:goroutine的内存开销非常小,通常只有几KB,这使得可以在一个程序中启动数千、甚至数万个goroutine。协作式调度:Go使用协作式调度,即goroutine在执行过程中会自愿让出控制权,Go运行时会根据一定的策略安排其调度。非阻塞:goroutine的执行不会阻塞主线程或其他goroutine,多个goroutine之间可以并发执行,充分利用多核CPU;2.channel是Go语言中的一种用于在不同goroutine之间传递数据的管道。通过channel,数据可以从一个goroutine安全地传递到另一个goroutine,从而实现goroutine之间的通信和同步。其特性有:类型安全:channel是类型安全的,只有同类型的数据可以通过channel传递,这避免了数据类型错误。同步机制:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论