Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战

Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战前端

说明: Java生鲜系统中微服务的拆分应该如何架构设计与分析呢?如下是个人实战中的设计与经验分析。数据库

目录

1. 微服务简介
2. 当前现状
3. 特色
4. 原则
5. 目标
6. 整体架构设计
6.1. 业务架构
6.2. 逻辑架构
6.3. 应用架构
6.4. 数据架构
6.5. 数据层次划分
6.6. 技术架构
6.6.1. 分层设计
6.6.2. 逻辑技术架构后端

1. 微服务简介

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

什么是微服务架构呢?简单说就是将一个完整的应用(单体应用)按照必定的拆分规则(后文讲述)拆分红多个不一样的服务,每一个服务都能独立地进行开发、部署、扩展。服务于服务之间经过注入RESTful api或其余方式调用。缓存

 
原架构
 
微服务架构

2. 当前现状

  • 旧有平台通用性不够全面,在项目集成过程当中对原有系统业务侵入性高安全

  • 缺少对系统平台的用户基础权限、数据权限及数据字典等通用基础功能共性维护服务器

  • 平台侧的用户相关权限资源配置维护繁杂,不易集中管理网络

  • 缺少统一的WEB UI标准式封装,致使项目不少模块风格迥异架构

  • 开发效率低,缺少自动化生成策略并发

  • 不支持多数据配置,致使项目很难进行读写的剥离

  • 缺少专业接口对接机制,接口制式多种,更无接口标准API文档,不利于客户端对接

  • 缺少统一的接口安全机制,可细化控制接口程度低,不利于数据安全

  • 系统依旧采用传统的MVC架构,较为保守,横向扩展性差

  • 各个模块之间高度集成,抗风险能力弱.

3. 特色

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

 
  • 使用灵活,能够整个使用,也能够只用其一个或几个部分

  • 学习成本低,上手容易

  • 核心功能的稳定性,且尽可能少的第三方框架及包

  • 应用架构的外延性、连续性,便于集成、复用

  • 易于知识积累,真正作到越用越强

  • 易于集群与水平扩展,能作到不间断提供服务

  • 针对业务模块之间的关系进行解耦

  • 无状态服务,对每次请求的服务器处理是没有影响的。可使用负载均衡技术(须要解决Session同步问题),实现高可用

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

4. 原则

  • 兼容开放式原则:兼容已有技术,避免对系统的颠覆式改造

  • 先进性和灵活性原则:采用目前主流的先进的技术、方法,知足系统不断增长和调整的业务需求;经过修改流程的相关配置文件实现流程的发布或更新,缩减系统改造周期

  • 实用性原则:系统应具备良好的用户界面,操做简单方便。充分考虑录入人员特色,使数据处理工做简单、方便、快捷,业务流程清晰,符合常规业务处理习惯;对于经常使用的信息查询操做,系统提供灵活多样的查询和统计检索方式,知足不一样层次的用户需求

  • 减法原则:从技术经理、技术骨干到开发人员,工做量范围与内容愈来愈少

  • 高效、经济:自动组装、复用资产模块,由框架进行自动组装,避免大量的系统配置,同时避免相关参与者作重复的事情

  • 约定优于配置:经过约定减小代码及配置量

5. 目标

   构建基础框架,同时可以与已有的应用模块集成,实如今原有的业务上不断运行。
  • 统一的信息整合平台,将现有的应用系统、资源进行整合,打破系统建设孤岛、向应用的产品化发展

  • 及时、准确、客观的同互联网接规,为产品的多元化提供技术支持

  • 架构支持可灵活定制、拓展,实现模块标准化、通用化,可根据业务须要,与新创建的业务系统有效集成

  • 业务系统维护实现分布式管理,去中心化

  • 实现用户统一的用户、角色权限、统一日志、运维监控集中管理

  • 实现统一的信息展现

  • 业务系统维护直观、操做简便、无需专门技术人员

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

6. 整体架构设计

6.1. 业务架构

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

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

  • 系统架构新特性:微服务化、服务治理自动化,服务能力开放自动化;自动构建、自动发布,一键完成部署;灰度发布,系统升级,业务不间断;

  • Cloud 中心:服务标准化共享,知足内部、外部交互,实现运营商自营业务及第三方业务便捷集成,丰富网络应用与业务生态;

  • 能力中心:创建开放的能力体系,实现能力标准化封装及便捷的服务访问手段,支撑能力显性化管理;

  • 策略中心:端到端的策略管理,结合用户的业务需求、状态和现状,自主分析与识别,智能的决策与策略下发;

  • 编排中心:实现长短流程开通服务编排,能力编排;可将原子能力经过编排组成新的能力自动发布;

  • 采集中心、监控中心:实现系统各种数据采集分析与监控,实时图形化感知系统运行状态。

6.2. 逻辑架构

       逻辑架构方面,我就以其中的一个对帐系统为例:

 

    

 

      说明:这里的实时应该是说咱们有一些商家 一笔订单过来,按商家维度生成结算单,而后提交给财务审核, 高级商家是 保存结算初始订单数据信息,而后定时任务跑的时候再生成结算单。

                例如:举个例子,咱们有 1.普通商家(实时) 2.高级商家(月结),通俗点讲:我如今要求 1.普通商家(实时) 2.高级商家(月结),这个就是基础的架构设计.

 

6.3. 应用架构

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

6.4. 数据架构

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

6.5. 数据层次划分

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

  • 数据源层是系统的原始数据,包括字典数据、管理类数据和定义类数据;

  • 缓冲层作为对数据库数据处理的有效补充,减小对数据库的直接操做请求,负责对字典数据、部分管理类数据和部分定义类数据进行内存的缓存存储,依据各个子系统的性能和业务的综合考虑来肯定是否须要将数据库数据缓存到缓存层中;缓存层的数据在对应来源数据变动时实时更新。

  • 基础数据层保留全部提交的历史业务数据,包括表单数据和流程流转的实例数据。

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

6.6. 技术架构

6.6.1. 分层设计

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

  • 门户层指用户界面,是用户访问本系统的入口,主要采用JSP+CSS+JavaScript框架来实现;

  • 服务层是本系统提供对外业务服务的功能。该层将服务接口和实现分离,实现松耦合。同时,服务层主要采用Rest Full协议来实现,

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

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

  • 公共组件指按照规范统一实现的公共组件,包括用户管理、组织机构管理、权限管理、日志管理等模块;

  • 事务处理指事务的处理机制,事务开始于服务层,采用数据库的事务管理器对服务层的相关服务进行事务控制处理。

6.6.2. 逻辑技术架构

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

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

  • 利用成熟的开源框架,从新构建项目,对业务进行垂直、精细拆分,经过注册中心、API Gateway,对外提供可供服务,最终到达基本功能微服务构建

  • 利用Shiro安全框架,构建受权、会话管理

  • 前端强调页面表现,如:响应速度流畅,客户端兼容性强,用户体验等

  • 后端强调高并发,高可用,高性能,安全,存储,业务等等

  • 完成消息中间件的构建

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

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

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

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

 

实际运营截图:

 

 

 

联系QQ:137071249

QQ群:793305035

相关文章
相关标签/搜索