前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软件架构模式

软件架构模式

作者头像
春哥大魔王
发布2020-07-20 15:44:00
3800
发布2020-07-20 15:44:00
举报

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

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

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

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

  1. 微内核模式
  2. 微服务模式
  3. 分层架构模式
  4. 事件驱动模式
  5. 空间架构模式

微内核模式

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

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

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

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

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

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

  1. 灵活性和扩展性
  2. 运行插件可以在运行时加载和卸载
  3. 操作便捷
  4. 易于部署
  5. 插件可以独立进行测试
  6. 高性能,简化应用程序所需功能

微服务模式

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

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

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

  1. 可以独立编写,维护和部署
  2. 易于扩展,业务迭代只需修改对应的微服务
  3. 因为微服务相对隔离,不会影响其他业务,实现解耦
  4. 团队响应迅速
  5. 可独立测试,部署,迭代效率高

分层架构

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

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

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

分层架构的优点:

  1. 可测试性,每层可独立测试
  2. 易于开发,由于功能相对隔离,开发比较简单,但是需要防止同一层之间的能力过于分散,可以引入领域的方式进行二次隔离
  3. 每次功能点可以修改独立的一层即可完成

事件驱动模式

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

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

事件驱动的优点是:

  1. 可以通过事件解耦,适应混乱环境
  2. 具有弹性能力
  3. 当出现新的事件时,容易扩展

空间架构模式

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

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

优点:

  1. 可以快速适应变化
  2. 通过内存中数据访问内置的缓存,实现了高性能
  3. 高伸缩性来源于降低了对集中数据库的依赖,或是没有依赖,提高了伸缩性

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 春哥talk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档