为满足性能、扩展性、业务快速交付等方面的要求,新.net core云开发框架改造的主要思想是:高内聚、低耦合,即进一步实现纵向和横向分层,提高可伸缩性和可扩展性,实现弹性部署:
- 采用领域驱动设计进行架构横向分层,同时业务功能纵向分割
- 在代码和数据库设计上充分考虑云架构要素,提高可伸缩性、可扩展性、高性能性和安全性
- 采用诸如分布式缓存、分布式存储、并行数据库、消息队列、ESB等多种可伸缩技术实现松耦合
采用上述设计思路后的新架构搭建的综合业务管理系统如下图。其中HL、HB等是外部系统,通过ESB与综合业务管理系统交互。
一、高内聚、低耦合
就是系统的模块内各个元素彼此结合的紧密程度高,但是模块间尽可能独立存在,这是软件质量的标准和设计的终极目标之一。高内聚、低耦合的系统更容易扩展,更容易复用,也是云计算平台分布式、可扩展部署的必要条件。
首先,在纵向架构上遵循分层的B/S架构标准,将整个系统划分为表现层、业务逻辑层、数据访问层。我采用领域驱动设计方式,在三层基础上又进行了细分,分为五层,分别为数据持久层、基础设施层、业务领域层、应用层和展示层,其核心是业务领域层,所有业务逻辑应该在领域层实现。
其次,在横向上进行业务分割,就是将系统功能分割成一个个业务模块。根据业务需求的独立性将门户管理、即席查询、指标报表、后台任务、工作流表单等业务模块进行分割,并分别部署到不同的计算资源中,模块间通过MQ或者SOA接口相互调用,从而提高系统的并发能力和扩展能力。
*个人认为这是软件项目的最终质量目标,所以重点提一下
二、领域驱动设计架构
领域驱动设计架构分为五层,分别为数据持久层、基础设施层、业务领域层、应用层和展示层。
其核心是业务领域层,所有业务逻辑应该在领域层实现。
三、数据库设计
目前数据库通常使用几种方式进行优化:
- 分库分表
- 按照业务将大数据库拆分成更小的数据库
- 特殊情况下某些访问量大、数据量大的数据表按照一定逻辑拆分到不同数据库服务器中(某些云已提供分布式数据库,不需要程序实现)
- 读写分离
- 一个可写的数据库,其他只读数据库是可写数据库的同步镜像
- 形成当前操作数据和历史数据两个部分
四、分布式技术
分布式技术的应用可以促进系统的可伸缩性,更利于云端部署
- 静态资源网站
- 云存储
- 分布式缓存
- 分布式消息队列、ESB等交互工具
- 分布式数据库
*静态资源网站更像是一个方式,而不是分布式技术。