微内核模式(MicrokernelPattern)
微内核架构模式也被称为插件模式。该模式允许您将其他应用程序功能添加到核心应用程序中,以提供可扩展性和功能分离。
微内核架构模式由核心系统和插件模块两种类型的架构组件组成。插件模块提供应用程序功能和自定义处理逻辑的可扩展性.灵活性和隔离性。传统上,微内核架构模式的核心系统只包括使系统运行所需的最小功能。
优点
极大的灵活性和可扩展性
一些插件允许在应用程序运行时添加
便携.易于部署
插件模块可以单独测试
高性能,因为您可以定制和简化应用程序,只包括所需的功能
应用场景
从不同的来源获取数据,转换数据将其输出到不同的地方
工作流应用程序
任务类应用程序
微服务模式(MicroservicesPattern)
当你把应用程序作为一组微服务编写时,它实际上是在编写多个可以协同工作的应用程序。每个微服务都有自己的责任,团队可以独立于其他微服务进行开发。这些微服务之间唯一的依赖是通信。当微服务相互通信时,您必须确保它们之间发送的信息能够兼容。
优点
可以别编写.维护部署各微服务
易于扩展
团队成员可以快速有效地响应
高度可维护和测试
可独立部署.更新可以部署其服务,无需与其他团队协调
应用场景
小型网站
企业数据中心边界明确
业务发展迅速
与多部门合作的开发团队
分层架构模式(LayeredArchitecturePattern)
分层系统架构模式为n层模式,其中软件系统组件根据职责设计在不同层次。
分层系统架构模式的每一层在应用程序中都有特定的角色和责任,组件之间的责任是分开的。例如,显示层将负责处理用户界面交互逻辑,而业务层将负责执行与请求相关的特定业务规则。
优点
每层可单独测试.单独更新
高度易于开发,因为这种模式是众所周知的,而且实现起来是很复杂
大多数公司通过逐层分离技能开发应用程序
可维护
应用场景:
标准业务线应用程序,其功能不仅仅是CRUD操作
新应用程序需要快速构建
严格的可维护性和可测试性应用
基于事件的模式(Event-basedPattern)
这是开发高度可扩展系统中最常见的分布式异步架构模式,由一系列用于监控和异步处理事件的组件组成。事件驱动的架构模式构建了一个接收所有数据的中央单元,然后委托给处理特定类型的单独模块。
优点
容易适应复杂.混乱的环境
弹性伸缩
当出现新的事件类型时,很容易扩展
应用场景
具有异步数据流的异步系统
用户界面交互
基于空间的架构模式(Space-basedPattern)
用户访问量经常变化.偶尔会出现高并发应用程序,这是一种有用的软件架构模式。通过消除中央数据库的约束,并复制基于内存的数据网格来实现可伸缩性。
基于空间的架构模式旨在通过拆分和存储多个服务器之间的数据来避免高负载下软件系统功能的崩溃。
优点
能快速响应不断变化的环境
虽然基于空间的架构模式通常不是分布式的,但它们是动态的,基于云的复杂工具允许应用程序放松“推送”简化了服务器的部署
通过内存中的数据访问和内置缓存机制,可以实现高性能
高可伸缩性来自于对集中式数据库依赖性小或根本不依赖的事实,从而提高了可伸缩性
应用场景
大量数据的应用程序,如用户日志
低价值数据偶尔丢失,不会造成严重后果
社交应用程序
1.第一层:基础架构
基础设施是指云平台.操作系统.网络.存储.数据库和编译器。随着云计算的日益增多。
很多中小企业选择大公司的云计算平台,而不是自己开发和维护基础设施。
2.第二层:中间件和大数据平台
(1)中间件架构。例如,分布式服务中间件.消息中间件.数据库中间件.缓存中间件.监控系统.工作流引擎和规则引擎等。
(2)大数据架构。例如,开源。Hadoop生态体系,Hive.Spark.Storm.Flink等。
3.第三层;业务系统架构
(1)通用软件系统。例如,最常用的办公软件.浏览器.播放器等。
(2)离线业务系统。例如,各种基于大数据的大数据。BI分析.数据挖掘.报表与可视化等。
(3)大型在线业务系统。例如搜索。.推荐.即时通信.电商.游戏.广告.企业ERP或
CRM等。
有两点需要解释:
·对于中小企业来说,可能没有第二层,或者即使有第二层,也只有一小部分。
对于大公司来说,第二层和第三层的处理策略是不同的:有些公司会让业务团队同时做第二层,做在线业务系统和中间件,建立和维护大数据架构;有些公司会安排专门的团队做中间件和大数据平台,供上层业务系统使用。
当然,事实并非如此绝对。如果一个业务团队认为中间件团队的工作不能满足业务需求,他可能会选择自己制造轮子。
对于第三层的划分,这里并不是很绝对,因为现实中软件的种类太多了,比如嵌入式系统。
同样,通用软件和业务软件之间的界限也不是完全不同的。随着技术的进步,许多功能将被通用化.标准化,最终成为一个通用系统。
例如,搜索过去是一个非常专业的业务系统。随着搜索技术的不断进步,搜索的许多功能已经被通用化。有了它,ES这样的搜索平台,可以服务于电子商务.广告和其他业务,而不仅限于搜索本身。
再比如权限控制.工作流引擎.规则引擎等。,以前只用于某个业务系统。后来我们发现很多业务系统都需要类似的东西,于是抽象出来,成为了一般的业务中间件。通用化过程是技术不断进步的过程,也是降低使用门槛的过程。
大多数软件架构集中在大型在线业务系统的架构上,即图1中第三层的第三部分。对于大型在线业务系统,一方面要处理高并发性.高可用性和其他技术问题;另一方面,面对各种复杂的业务需求,这些需求仍在发生变化。如何很好地结合业务和技术,处理两者之间的关系,是未来讨论的一个方向。