软件架构模式


自从做了一些平台化系统之后,发现最原始的抽象、建模、分层、内聚、低耦合、面向对象变得越来越重要了。有的时候技术就是这样,那些最本质、最朴实的东西,有种返璞归真的感觉。
软件架构模式
软件架构模式指的是那些被验证了、经历过复杂性洗礼、具有良好设计结构的系统。也就是在实践过程中归纳总结出的一套设计决策,具有明确的定义和属性,可以重复使用,提高效率,降低复杂度和心智负担。
值得实践的软件模式
- 微内核模式
- 微服务模式
- 分层架构模式
- 事件驱动模式
- 空间架构模式
微内核模式
微内核也称为插件模式,允许业务方将其他应用程序逻辑以插件方式添加到核心应用逻辑中,从而实现了可扩展性,做到了核心逻辑和业务逻辑的功能分离。
微内核模式包含两部分:核心系统和插件模块。
- 核心系统:提供程序功能和自定义处理逻辑的扩展能力,具有灵活性、扩展性和隔离性。
- 一般微内核模式的核心系统只包含系统运行所需的最小功能。
微服务模式
随着微服务的发展,我们会将原有的一体架构拆分成微服务架构。一组微服务实现某一个逻辑上的业务能力。微服务自身具有独立的功能职责,团队可以就具体的微服务进行开发测试,微服务之间通过通信完成信息交互。
我们在平台化架构中,还是将具体的功能方向的服务进行进一步抽象,变成独立的微服务,多个微服务在逻辑上组成了平台的某个业务能力。
微服务的优点如下:
- 可以独立编写、维护和部署。
- 易于扩展,业务迭代只需修改对应的微服务。
- 因为微服务相对隔离,不会影响其他业务,实现解耦。
- 团队响应迅速。
- 可独立测试、部署,迭代效率高。
分层架构模式
分层架构模式要求每一层处理该层相关的逻辑。我们在平台化系统中的分层更加抽象,不再是以具体的业务进行划分,而是按照抽象的能力划分成多个层了。
分层架构的优点:
- 可测试性,每层可独立测试。
- 易于开发,由于功能相对隔离,开发比较简单,但是需要防止同一层之间的能力过于分散,可以引入领域的方式进行二次隔离。
- 每次功能点可以修改独立的一层即可完成。
事件驱动模式
事件驱动模式是一种高扩展的解决方案,架构中通过监听并异步处理事件方式组成一系列组件。事件驱动模式构建了一个接收所有数据的中央处理单元,之后将事件委托给特定事件类型的模块单独处理。
事件驱动多用于平台架构中非业务相关的功能,通过事件监听与处理实现了进一步解耦,多用于数据流驱动或是用户界面交互。
事件驱动的优点是:
- 可以通过事件解耦,适应混乱环境。
- 具有弹性能力。
- 当出现新的事件时,容易扩展。
空间架构模式
空间架构模式多用于解决软件系统的伸缩性和并发性问题。对于用户量经常发生变化、偶尔出现并发的系统,可以采用这种架构。通过消除对数据库的依赖,使用复制基于内存的数据实现伸缩性。
空间架构模式主要是希望通过多个服务器之间拆分处理和存储数据,避免高负载下软件系统的崩溃。
优点:
- 可以快速适应变化。
- 通过内存中数据访问内置的缓存,实现了高性能。
- 高伸缩性来源于降低了对集中数据库的依赖,或是没有依赖,提高了伸缩性。
空间架构可以看作是一种围绕于数据源的异构、无状态的处理方式。
以上几种架构可以按需使用到系统之中,以解决不同的问题。