软件架构模式

2020-09-04 16:51:46 1346

软件架构模式

自从做了一些平台化系统之后,发现最原始的抽象,建模,分层,内聚,低耦合,面向对象变得越来越重要了,有的时候技术就是这样,那些最本质,最朴实的东西,有种返璞归真的感觉,当然其他很多事情也一样,因为不管是技术,架构还是其他事情,我们都是要去提出问题并解决问题的,而将问题划分成小的问题去解决是最重要的方法论。

说到软件架构模式,什么是软件架构模式呢?

软件架构模式指的是那些被验证了的,经历过复杂性洗礼的,具有良好的设计结构的系统。也就是在实践过程中归纳总结出的一套设计决策,具有明确的定义和属性,可以重复使用,提高效率,降低复杂度和心智负担。

 

那么市面上有哪些值得实践的软件模式呢?

1、微内核模式

2、微服务模式

3、分层架构模式

4、事件驱动模式

5、空间架构模式

 

微内核模式

微内核也称为插件模式,允许业务方可以将其他应用程序逻辑以插件方式,添加到核心应用逻辑中,从而实现了可扩展性,做到了核心逻辑和业务逻辑的功能分离。

 

这也是我们做平台化系统中首先想到的一点,平台沉淀那些通用的逻辑,流程,规则。个性化的业务逻辑以插件方式集成到平台上,个性化逻辑在插件内自组织,自流转,实现了平台和业务的隔离。

 

微内核模式包含两部分:核心系统和插件模块。

1、 核心系统:提供程序功能和自定义处理逻辑的扩展能力,具有灵活性,扩展性和隔离性

2、一般微内核模式的核心系统只包含系统运行所需的最小功能

 

微内核最佳的示例是来源于Eclipse IDE,我们系统变成微内核架构需要具备以下的一些特点:

 1、灵活性和扩展性

2、运行插件可以在运行时加载和卸载

3、操作便捷

4、易于部署

5、插件可以独立进行测试

6、高性能,简化应用程序所需功能

 

 

微服务模式

 

随着微服务的流程,我们会将原有的一体架构拆成微服务架构,一组微服务实现某一个逻辑上的业务能力。微服务自身具有独立的功能职责,团队可以就具体的微服务进行开发测试,微服务之间通过通信完成信息交互。

 

我们在平台化架构中,还是将具体的功能方向的服务进行进一步抽象,变成独立的微服务,多个微服务在逻辑上组成了平台的某个业务能力。

相信大家对于微服务都比较熟悉了,就不再赘述了,微服务的优点如下:

1、可以独立编写,维护和部署

2、易于扩展,业务迭代只需修改对应的微服务

3、因为微服务相对隔离,不会影响其他业务,实现解耦

4、团队响应迅速

5、可独立测试,部署,迭代效率高

 

分层架构

 

软件架构被水平的分成多层,每层具有独立的职责。大多数架构常用的架构模式就是分层了,从最开始接触的三层架构,到后期的MVC,MVP架构,都透漏着分层的影子。

 

分层架构要求每一层具有特定的角色和职责,比如负责显示的显示层可以处理用户交互逻辑。业务逻辑层主要负责请求逻辑和数据之间的组合和处理规则。

 

分层架构要求每一层处理该层相关的逻辑,我们在平台化系统中的分层更加抽象,不再是以具体的业务进行划分,而是按照抽象的能力划分成多个层了。

 

分层架构的优点:

1、可测试性,每层可独立测试

2、易于开发,由于功能相对隔离,开发比较简单,但是需要防止同一层之间的能力过于分散,可以引入领域的方式进行二次隔离

3、每次功能点可以修改独立的一层即可完成

 

 

事件驱动模式

 

这是一种高扩展的解决方案,架构中通过监听并异步处理事件方式组成一系列组件。事件驱动模式构建了一个接收所有数据的中央处理单元,之后将事件委托给特定事件类型的模块单独处理。

 

事件驱动多用于平台架构中非业务相关的功能,通过事件监听与处理实现了进一步解耦,多用于数据流驱动或是用户界面交互。

 

事件驱动的优点是:

1、 可以通过事件解耦,适应混乱环境

2、具有弹性能力

3、当出现新的事件时,容易扩展

 

 

空间架构模式

 

空间架构模式多用于解决软件系统的伸缩性和并发性问题。对于用户量经常发生变化,偶尔出现并发的系统,可以采用这种架构。通过消除对于数据库的依赖,使用复制基于内存的数据实现伸缩性。

空间架构模式主要是希望通过多个服务器之间拆分处理和存储数据,避免高负载下软件系统的崩溃。

 

优点:

 1、可以快速适应变化

2、通过内存中数据访问内置的缓存,实现了高性能

3、高伸缩性来源于降低了对集中数据库的依赖,或是没有依赖,提高了伸缩性

4、空间架构可以看作是一种围绕于数据源的异构,无状态的处理方式。

以上几种架构可以按需使用到系统之中,以解决不同的问题。

 


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: