软件体系结构复习文档

引言:

软件体系结构是大三下学期我们学的一门专业课,这门课学院给我们安排的是一名女老师上的,课没给我留下多深的印象,女老师倒是给我留下了深刻的印象,温柔,漂亮、高挑。上完每节课老师都把ppt和资料发到我们的QQ群里面,期末的时候老师甚至自己把以前发过的ppt里面的重点给我们汇总到一个ppt上,硬生生是把我们这些不好好听课的从死亡线上拉了回来。这半个月学校的事情比较多,也没怎么更新博客,昨天和今天无意间把老师原来发过的东西打开看了看,在文档中复刻了一下,就当是纪念一下大学期间的这门课和这个老师,也是作为我这个月写作的开始。

内容:

问题:软件构件包括哪些属性?

答:

 

问题:请用据图描述基于构件的软件组装过程。

 

问题:什么是软件体系结构?什么是软件构件?在Spring框架中,构件的组织与管理由谁负责,构件之间的依赖关系是如何实现?

答:

软件体系结构是宏观设计,主要关注系统包括哪些部件以及这些部件之间是如何交互的。软件构件是构件有特定的接口;明确上下文依赖,能够被独立部署。由Spring框架负责;提供服务的组件是被“注入”而不是被直接“写入”到请求者的代码中的。同时,框架需要构件遵守一些特定的约定,一半需通过些配置文件的形式来被告知如何注入代码。

问题:软件架构设计的重要性是什么?

答:

软件架构是利益关注方的沟通工具,早期决策都是架构设计决定的,从总体上决定了软件设计是对的还是错的,好的架构还可以作为不断传递的财富,被重用。

问题:所有进行数据管理的桌面应用在逻辑上一般采用什么软件架构,请画图描述?在物理上采用可以采用哪三种方式的结构进行部署?

答:

展示层 —> 业务处理(逻辑层)—> 数据访问层

在物理上一般采用客户机/服务器模式

答:采用分层结构。

展示层:用户界面,和用户进行交互,绘制一个窗口,界面上有各种的输
入控件,用户可以通过这些控件看到数据的状态并进行数据的操作。

业务逻辑处理层:接受用户在展示层的各种操作,进行额外的处理,如判
断数据是否合法,判断用户是否有权限等各种各样的业务处理,如果有权
限再将数据保存或者读取的请求交给数据访问层,即逻辑判断。

数据访问层:把数据写入到数据库或者磁盘的代码,这些代码不是直接被
用户调用。用户在展示层进行的操作是要依靠业务逻辑层这个桥梁来对用
户的操作进行解释和处理,最终决定如何用数据访问层来进行数据的持久
化。

问题:Restful架构能解决MVC开发中的什么问题?

答:

1:为了解决展示页面和计算逻辑混杂,MVC中引入了模板引擎:模板引擎可以使写模板的人和写计算逻辑的人实现一定的解耦;

用户的接口不标准:控制器中处理用户请求的方法与requestmapping对应,当用户发过来的请求URL之后就调用controller中相应的方法去解释.

问题:Restful架构中http请求的常见方式有哪些?

答:

GET(SELECT):从服务器获取资源

-POST(CREATE/insert):在服务器新建一个资源

-PUT(UPDATE):更新资源

-PATCH(UPDATE):部分更新资源

-DELETE(DELETE):删除资源

-HEAD:获取资源头部

-OPTIONS:获取资源信息

问题:大量用户并发访问时,服务器响应变慢,用户体验较差,如何解决?

答:

垂直扩展:通过购买更好的设备,提升系统的性能,买不了的话,通过虚拟化技术来削弱机器的性能。

水瓶扩展:购买更多的机器。用户访问的仍然是单一的server,实际上由负载均衡器派送用户请求到不同server上,将所有负载分摊到不同的server上。

问题:为了提高用户的访问速度,水平扩展中服务器通过cache共享相同请求的计算结果,那么如何知道需要的请求结果在哪个cache上?

答:

哈希或一致性哈希。因为server按照一定的规则,将要存储进行分区存放到不同的cacheserver上,不需要负载均衡器。而分区的方法主要是哈希或一致性哈希,所以查找的方法就是一致性哈希。

问题:什么是微服务架构?spring框架中提供微服务的技术架构叫什么?

答:

将一个大的系统拆分成若干个独立的小系统,分别进行维护和部署,它们之间可以通过轻量级的通信协议进行通信,在功能上还是一个完整的整体,这样的设计方法称之为微服务架构。

Spring框架通过SpringCloud来提供微服务。

问题:微服务系统中为了防止因为某个服务失效而导致其他服务失效,采取什么措施?

答:

采用断路器这样的概念来解决。在微服务系统中,一方面通知调用者,使得调用者采取一些措施不要导致错误不断蔓延到其他服务。调用者将调用请求不是直接发给被调用方,而是交给断路器,由它转发给被调用者。如果被调用者产生了问题,断路器感知到该问题。通知用户或者提供一些默认的结果,以防止调用者失效、错误蔓延。

问题:Spring中通过Spring Batch支持管道过滤器架构的应用设计,请用图描述包括哪些核心构件以及它们之间的关系?

Data Source [Pipe] Filter [Pipe] Filter [Pipe] Data Sink

问题:请比较发布订阅者管理模式和观察者模式。spring框架中支持开发的技术是什么?

答:

订阅者在订阅事件的时候,只关注事件本身,而不关心谁会发布这个事件;发布者在发布时间的时候,只关注事件本身,而不关心谁订阅了这个事件。

观察者模式是松耦合,发布订阅模式发布者和订阅者是完全解耦的。

Spring框架中支持开发的技术是Spring Events。

问题:举两个例子说明什么是事件驱动架构,它包括哪些核心构件?为什么要使用事件驱动架构?事件驱动架构的实现有哪些方式,比较它们的优缺点?

答:

当软件系统中存在的一些事件发生,到值其他部分执行或者操作的设计方法叫事件驱动架构;核心部件包括:事件生产方、时间管理器部件、事件消费方、注册相应事件。

因为事件驱动架构可以实现软件系统中的松耦合原则。

实现方式由两种:分别是观察者模式和发布/订阅模式。

问题:响应式架构的实现方法是采用消息驱动通信中的发布订阅模式实现,spring的Reactive Streams定义了实现这种架构的规范,包括哪四个核心概念?

答:

1:消息发布者:只有一个subscrbei接口,是订阅者调用的,用来订阅发布者的消息。发布者在订阅者调用request之后把消息push给订阅者。

2:订阅者subscriber:包括四个接口,这些接口都由Publisher触发调用。

3:订阅Subscription:代表的是一种订阅上下文对象,它在订阅者和发布者之间进行传输。从而在两者之间形成一种契约关系。

4:处理器:Processor同时继承可Subscriber和Publisher:其代表一个处理阶段。

十三:请描述带有处理器的响应式架构程序设计步骤?

答: 

1.创建一个发布者publisher:

SubmissionPublisher publisher = new SubmissionPublisher();

2.创建一个Processor:

ReactiveProcessor processor = new ReactiveProcessor();

3.发布者将消息给processor来做处理之后转发到最终订阅者:

Publisher.subscribe(processor);

4.创建一个最终订阅者:

Flow.Subscriber subscriber = new Flow.Subscriber(){

}

5.处理器与订阅者,建立订阅关系

6.生产数据,并发布

7.结束后,关闭发布者

猜你喜欢

转载自blog.csdn.net/weixin_45571585/article/details/128277842