顺序图中常见的几种元素
1、对象,对象是系统中具有特定职责和行为的实体。
2、生命线,生命线表示对象在交互过程中存在的时间线
3、激活/控制焦点,激活表示对象正在执行某个动作或处于活动状态的时间段。
4、消息,消息是对象之间传递的信息,用于触发接收对象的动作和状态变化。
5、交互片段,交互片段用于表示顺序图中的一组特殊交互如循环、条件分支等。
说明系统可靠性的定义及包含的4个子特性,并简要指出提高系统可靠性一般采用哪些技术?
系统可靠性定义:系统在规定的时间内及规定的环境条件下,完成规定功能的能力,就是系统无故障运行的概率。
包括:成熟性、容错性、易恢复性和可靠性的依从性4个子特性。
一般采用以下4类技术:
1、冗余技术
2、软件容错技术
3、双机容错技术
4、集群技术
恢复块方法工作原理有哪些内容
主块、验证测试、输出正确结果、异常处理
请简述分布式数据库缓存的主要作用,并比较ElastiCache与自建Redis集群在成本、灵活性和扩展性方面的差异。
主要作用是减少数据库访问压力,提高数据访问速度,从而提升系统整体性能。
ElastiCache与自建Redis集群的差异在于:
(1)成本:ElastiCache提供按需付费的云服务,初期成本较低,但业务增长后长期成本较高。自建redis集群需要自行承担硬件和维护成本。
(2)灵活性:ElastiCache提供多种配置选型,但可能受限于云服务提供商的设定;自建redis集群可以根据业务需求自由配置和优化。
(3)扩展性:ElastiCache支持自动扩展,但可能受限于云服务商的扩展策略;自建redis集群可以通过增加节点和重新分片来灵活扩展。
列举redis集群的三种模式并比较其优缺点
redis集群的三种主要模式包括主从模式、哨兵模式和集群模式,
每种方式都有其独特的优缺点。
(1)主从模式
优点:读写分离、同步非阻塞服务、负载均衡。
缺点:容错性差、数据一致性差、在线扩容困难
(2)哨兵模式
优点:自动故障转移、监控与通知、简化运维管理
缺点:部署复杂、网络通信频繁、在线扩容困难
(3)集群模式
优点:无中心架构、可用性好、伸缩性较好、降低运维成本。
缺点:配置复杂、数据一致性差、客户端实现复杂、资源隔离性差。
简述微服务架构相较于传统单体架构的主要优势。
微服务架构相较于传统单体架构的主要优势包括:
(1)高可伸缩性:微服务架构允许独立地伸缩各个服务,根据业务需求灵活调整资源,而不需要对整个应用进行调整。
(2)技术栈灵活性:每个微服务可以使用最适合其需求的技术栈进行开发,无需受限于整个应用的技术选择。
(3)快速迭代和部署:由于服务之间的解耦,团队可以并行开发、测试和部署不同的服务,从而加快产品迭代速度。
(4)故障隔离:单个服务的故障不会影响到整个系统,提高了系统的稳定性和可靠性。
(5)更好的团队协作:微服务架构促进了小型、自治的团队形成,每个团队可以专注于自己的服务,提高了开发效率和代码质量。
请比较常见的服务间通信方式RESTful API和gRPC
restful API和gRPC的区别如下:
(1)restful API:基于http协议,使用JSON或XML等格式进行数据传输,具有良好的跨平台性和易用性。它支持丰富的http方法如Get、post、put、delete等,便于实现资源的CRUD操作。对于电商平台而言,restful API因其简单和广泛的支撑度,是一个很好的选择。它允许前端、移动应用和其他服务通过统一的接口与后端服务进行交互。
(2)gRPC:由谷歌开发,基于HTTP/2协议,支持多种语言,并使用Protocol buffers作为接口定义语言。grpc在性能上略优于restfulapi,特别是在需要低延迟和高吞吐量的场景下。然而不如restful api那样易于学习和使用,且对客户端的支持不如restful api广泛。
在微服务架构下,如何确保各个微服务之间的数据一致性和服务的高可用性?请列举几种常见的策略或技术。
(1)分布式事务:使用两阶段提交、三阶段提交或基于SAGA模式等分布式事务解决方案,确保跨多个服务的数据一致性。然而,分布式事务可能会引入额外的复杂性和性能开销,因此, 需谨慎使用。
(2)最终一致性:在不需要强一致性的场景下,可以采用最终一致性模型。通过事件驱动架构或消息队列等方式,异步地更新数据,并在一段时间内达到一致状态。这种方式可以提高系统的可用性和性能。
(3)服务熔断与降级:为了防止某个服务的故障影响到整个系统,可以实施服务熔断机制。当服务调用失败率达到一定阈值,自动熔断该服务,防止进一步的失败扩散。同时,可以实施服务降级策略,在资源不足或系统负载过高时,提供简化的服务响应。
(4)服务注册与发现:使用服务注册中心来管理服务的注册和发现。服务实例在启动时向注册中心注册自己,并在关闭时注销。其他服务通过注册中心来发现需要调用的服务实例,从而实现服务的动态发现和负载均衡。
(5)数据复制和缓存:通过数据复制和缓存技术,提供数据的可用性和访问速度。例如:可以使用数据库的主从复制来确保数据的高可用性,并使用缓存来减少数据库的访问压力和提高数据访问速度。
(6)API网关:在微服务架构中,API网关作为所有客户端的请求入口,负责路由、过滤、认证、限流等职责。通过API网关,可以集中管理跨服务的通信和数据共享,提高系统的安全性和可维护性。
说明微服务的概念以及优势与挑战
微服务是一种架构风格,将单体应用划分为一组小的服务,服务之间互相协作,实现业务功能每个服务运行在独立的进程中,服务间采用轻量级的通信机制协作(通常是HTTP/JSON),每个服务围绕业务能力进行构建,并且能够通过自动化机制独立地部署。
1、微服务有以下优势:
(1)通过分解巨大单体式应用为多个服务方法解决了复杂性问题。它把庞大的单一模块应用分解为一系列的服务,同时保持总体功能不变,但整体并发得到极大提升。
(2)让每个服务能够独立开发,开发者能够自由选择可行的技术,提供API服务。
(3)微服务架构模式是每个微服务独立的部署。开发者不再需要协调其他服务部署对本服务的影响。这种改变可以加快部署速度。
(4)微服务使得每个服务独立扩展,可以根据每个服务的规模来部署满足需求的规模,甚至可以使用更适合于服务资源需求的硬件。
2、微服务架构带来的挑战如下:
(1)并非所有的系统都能转成微服务。
(2)部署较单体架构更加复杂:系统由众多微服务搭建,每个微服务需要单独部署,从而增加部署的复杂度,容器技术能够解决这一问题。
(3)性能问题:由于微服务注重独立性,互相通信时只能通过标准接口,可能产生延迟或调用出错。
(4)数据一致性问题:作为分布式部署的微服务,在保持数据一致性方面需要比传统架构更加困难。
系统分析设计过程中时序图和协作图两种的选取原则是什么
一、时序图的选取原则:
1.强调时间顺序:适用于展示对象之间消息传递的时间顺序和动态行为,描述系统中的事件发生顺序。
2.展示交互的时间线:清晰展示用例或场景中各对象在不同时间点的状态变化。帮助理解系统的时间维度行为。
3.描述复杂的交互场景:适用于多个对象和复杂交互场景,通过时间线展示消息传递的先后顺序,使复杂交互过程易于理解。
二、协作图的选取原则:
1.强调对象间的关系:展示对象之间的链接和关系结构,适用于静态连接和通信路径的展示。
2.展示对象的结构关系:描述对象如何协作完成任务,强调对象之间的静态结构和协作方式。
3.突出对象间的通信:适用于展示对象间的通信和交互。而不是时间顺序,清晰展示对象之间的消息传递和关联关系。
UML时序图表示条件分支序列片段有哪些
1.可选片段:关键字为opt,表示一种单条件分支
2.条件片段:关键字为alt,表示一种多条件分支
3.并行片段:关键字为par,表示片段内有两个或更多的并行子片段
4.循环片段:关键字为loop,表示一个循环。
5.中断片段:关键字为break,表示一个含有监护条件的子片段。
请写出使用基于数据库的分布式锁和基于redis的分布式锁的优点和缺陷。
基于数据库的分布式锁
优点:基于数据库的分布式锁实现简单、无需额外依赖、适用范围广
且具有持久性。
缺点:单点问题,数据库是单点,挂掉会导致业务系统不可用没有失效时间,操作失败会导致记录一直存在,其他线程无法获取锁。
基于redis的分布式锁:
优点:容错性好,性能好
缺点:可能存在死锁问题,锁的获得者崩溃
关于redis的数据库锁也会存在死锁场景,举例说明,还有哪些其他的分布式锁的类型
死锁场景示例假设有两个进程A和B,它们尝试获取两个共享资源R1和R2.
进程A获取R1,A成功获取到R1的锁,A继续尝试获取R2的锁,但R2被B持有
进程B获取R2,B成功获取到R2的锁,B继续尝试获取R1的锁,但R1的锁被A持有此时,A和B互相等待对方释放锁,导致死锁。
其他分布式锁类型:
基于Zookeeper的分布式锁
基于Etcd的分布式锁
redis Zset常见命令有哪些
ZADD:用于向zset中添加元素
ZRANG:用于返回区间里的元素
ZCARD:用于获取指定zset的元素个数
ZCOUNT:用于返回在分数min和max的元素个数
简要说明MongoDB是如何实现空间矢量化存储的,以及MongoDB对于存储非关系型数据的优势是什么。
1、MongoDB作为一个文档型数据库,非结构性数据以文档的形式进行存储,
MongoDB可以通过GeoJSON格式来存储空间矢量数据,这是一种基于
JSON的地理空间数据交互格式。在MongoDB中,可以使用geometry字段来存储几何形状,使用coordinates字段存储几何形状的坐标。
2、MongoDB对于存储非关系型数据的优势:
1)、MongoDB采用分布式文件系统和空间索引,提高了矢量空间数据的存储和处理效率。
2)、支持多种空间分析和查询操作,可对数据进行深度分析和挖掘。
3)、MongoDB扩展性好,可以根据业务需要增加字段,可以表达丰富的地理信息。
请说明HDFS使用热数据、温数据和冷数据存储的原因
HDFS允许将不活跃的数据分配到比较便宜的存储上,用于归档或冷存储。可以设置存储策略,将较旧的数据从昂贵的高性能存储上转移到性价比较低的存储设备上。对冷数据采取容量大,读写性能不高的存储介质如机械硬盘,对于热数据,可使用SSD硬盘存储,在读写效率上性能差异大。异构特性允许我们对不同文件选择不同的存储介质进行保存,以实现机器性能的最大化。
硬盘有SSD、SAS、SATA三种,可以分别对应热、温、冷数据。
热数据:一般新产生的数据被应用程序大量使用,应该采用SSD存储;
温数据:随着时间的推移,数据访问频率逐渐降低,则可以采用SAS
盘存储;
冷数据:当数据使用率下降得更多,应该采用容量大而便宜的SATA盘存储。
es中standard分词器、simple分词器、whitespace分词器和keyword分词器工作原理
Elasticsearch中的standard、simple、whitespace和keyword分词器的工作原理如下:
standard分词器:这是ES的默认分词器,主要用于英文和中文分词。对于英文,它会将词汇单元转换成小写形式,并去除停用词和标点符号;对于中文,它会将文本按单字切分。例如,输入“我是一只小小鸟”,标准分词器会将其拆分为“我”、“是”、“一只”、“小小鸟”。
simple分词器:它按照非字母字符来分割文本信息,将词汇单元统一为小写形式,并去除数字。例如,输入“A a is 中国好人民 afewaf”,simple分词器会将其拆分为“a”、“is”、“中国好人民”、“afewaf”。
whitespace分词器:它按照空格进行分割,不进行大小写转换,也不支持中文。例如,输入“A a is 中国好人民 afewaf”,whitespace分词器会将其拆分为“A”、“a”、“is”、“中国好人民”、“afewaf”。
keyword分词器:它不对文本进行分词处理,直接将输入作为输出。例如,输入“A a is 中国好人民 afewaf”,keyword分词器会将其输出为“A a is 中国好人民 afewaf”。
这些分词器在处理文本时各有特点,适用于不同的场景和需求。例如standard分词器适合需要精确控制词汇的场景,而simple和whitespace分词器则适用于对文本格式要求不高的场景。keyword分词器则适用于需要保留原始文本格式的场景。
RESTful架构有什么特点。如何实现前后端分离
RESTful架构是一种基于HTTP协议的轻量级框架风格,它使得后端服务更加简洁、易于维护和扩展。
以下是RESTful架构的一些主要特点:
1、无状态:每个请求包含所有需要的信息,服务器不需要保存会话信息。
2、统一接口:通过定义一组标准的接口,使得不同的客户端可以访问相同的资源。
3、可缓存:响应可以被标记为可缓存或不可缓存,这有助于减少网络延迟和服务器负载。
4、分层系统:客户端和服务器之间的通信被分层,客户端不应该知道它正在与另一层服务器通信。
5、按需代码:服务器可以传输执行代码(例如:JavaScript)到客户端,客户端可以执行这些代码来增强服务。
实现前后端分离通常遵循以下步骤:
1、定义资源:确定需要通过API访问的资源,并为每个资源分配一个唯一的URL。
2、使用HTTP方法:使用标准的HTTP方法(GET、POST、PUT、DELETE等)来执行资源的操作。
3、状态码:使用适当的HTTP状态码来响应请求,例如200表示成功,404表示资源未找到。
4、数据格式:定义数据交互格式,常用的格式有JSON和XML。
5、分离关注点:前端负责用户界面和用户体验,后端负责业务逻辑和数据存储。
6、API文档:提供清晰的API文档,以便前端开发者了解如何与后端服务交互。
7、安全性:确保API的安全性,使用认证和授权机制保护数据。
8、错误处理:设计错误处理机制,以便在出问题时提供有用的反馈。
通过这些步骤,可以实现前后端的分离,前端应用可以通过HTTP请求与后端服务进行通信,而不需要关心后端的具体实现细节。这种分离使得前端和后端可以独立开发和部署,提高了开发效率和系统的可维护性。
【软考】背诵知识点小结之雨水
于 2025-05-13 14:49:18 首次发布