系统架构

微服务架构设计分析

2019-11-20  本文已影响0人  孤山之王

1. 微服务简介

近年来,在软件开发领域关于微服务的讨论呈现出火爆的局面,越来越多的公司企业倾向于在系统设计与开发中采用微服务方式实现软件系统的松耦合、跨部门开发,被认为是IT软件架构的未来方向,Martin Fowler也给微服务架构极高的评价;同时,反对之声也很强烈,持反对观点的人表示微服务增加了系统维护、部署的难度,导致一些功能模块或代码无法复用,同时微服务允许使用不同的语言和框架来开发各个系统模块,这又会增加系统集成与测试的难度,而且随着系统规模的日渐增长,微服务在一定程度上也会导致系统变得越来越复杂。尽管一些公司已经在生产系统中采用了微服务架构,并且取得了良好的效果;但更多公司还是处在观望的态度。

什么是微服务架构呢?简单说就是将一个完整的应用(单体应用)按照一定的拆分规则(后文讲述)拆分成多个不同的服务,每个服务都能独立地进行开发、部署、扩展。服务于服务之间通过注入RESTful api或其他方式调用。大家可以搜索到很多相关介绍和文章,本文暂不细表。在此推荐两个比较好的博客:

http://microservices.io/

http://martinfowler.com/articles/microservices.html

官方样例-原架构 官方样例-微服务架构

2. 当前现状


3. 特点

系统架构总体设计上体现模块化,每个模块都可以作为独立的个体,且独立运营,倾向于分布式、去中心化,以便于版本长期迭代。

在大多数情况下,如果需要同步更新很多个服务则说明系统的耦合还不够低,当然我们也不可能完全避免耦合,它总是会出现在某些场景下。为此需要我们总结提炼一些抽象层将服务之间的交互定在契约上来避免复杂,提升灵活性。这就要求我们在一开始设计过程中就要有一种辨别能力,能够找到那些必须放在一起来做处理而不能拆解的功能。如果这些功能是值得放在一起的,那我们就可以将它独立成一个微服务,遵循高聚合的设计原因。

4. 原则

5. 目标

构建基础框架,同时能够与已有的应用模块集成,实现在原有的业务上不断运行。

除上述目标外,该系统从设计方面,应兼顾稳定性、操作性、扩展性、先进性、可维护性、安全性等重要原则,在稳定、安全的基础上可以随着业务的发展逐步扩展。

6. 总体架构设计

6.1. 业务架构

采用当前业界流行的微服务架构,遵循统一技术路线,架构设计注重层间的松耦合与层间的高内聚,通过对业务对象的抽象内聚,组件化服务模块,统一服务调用,考虑的拓展性、稳定性、复用性以及可配置性,降低了维护成本和开发成本,使得系统变得更轻量化,能够满足业务不断的变化带来的架构挑战。

以核心功能为基础、以公共平台为纽带、服务能力高度共享的分布式架构体系

6.2. 逻辑架构

待补充

6.3. 应用架构

系统的应用架构可以划分为三个层次,分别是组件层、服务层与应用层,其中组件层是系统业务对象的组件化抽象和最低粒度的组装,服务是对相关业务组件的集成与更高粒度的封装,服务面向具体的业务应用;提供标准的调用接口供具体的业务应用直接调用;应用层包括了本系统业务与管理层面需要实现的具体应用。

6.4. 数据架构

系统逻辑数据架构是对系统业务对象的逻辑分类,本系统涉及的逻辑数据对象包括业务数据、字典数据、管理类数据、定义类数据。

6.5. 数据层次划分

系统的数据层次可以划分为数据源层、缓冲层、基础层、应用层。

应用层为面向各功能模块提供统一的接口视图。

6.6. 技术架构

6.6.1. 分层设计

本系统软件架构设计采用松耦合、分层设计的原则, 主要分为前端门户层、服务层,其中服务层又业务处理层、数据访问层。

业务处理层是指公共业务处理组件,主要用来处理服务层所共有的业务处理规则、流程等内容。业务处理层采用普通的Java对象来实现;

数据访问层是指提供对数据库数据访问的接口,被业务处理层或服务层直接调用。数据访问层主要通过系统技术平台的Spring JPA 和MyBatis来实现;

6.6.2. 逻辑技术架构

系统逻辑技术架构包括四个层次:分别是用户层、访问控制层、应用服务层和数据存储层。访问控制层包括了网络的物理隔离设备与Web服务器,是系统访问和请求转发的第

一层。应用服务层是业务处理中心,负责对用户提交的操作请求进行业务处理。数据存储层包括共享存储设备、数据库和相应的数据备份设备。

技术架构:从技术层面描述,主要是分层模型,例如持久层、数据层、逻辑层、应用层、表现层等,然后每层使用什么技术框架,例如Spring、hibernate、ioc、MVC、成熟的类库、中间件、WebService等,分别说明,要求这些技术能够将整个系统的主要实现概括。

应用架构:主要考虑部署,例如你不同的应用如何分别部署,如何支持灵活扩展、大并发量、安全性等,需要画出物理网络部署图。按照应用进行划分的话,还需要考虑是否支持分布式SOA。

技术架构关注的是:技术的分层及描述(不单纯只写mvc),关键技术的方案(如事务处理、缓存与集群等)

应用架构关注的是:应用功能的划分、应用功能集成和应用功能部署。

上一篇 下一篇

猜你喜欢

热点阅读