Skip to content
大纲

本系统支持「微服务 / 单体」双模式部署,可切换。本篇是两种模式的机制总述;部署操作见《LINUX-生产环境部署》(微服务模式)与《单体模式部署》。

概述

  • BizSpring移动全端国际化电商平台,后端建立在 Spring Cloud 多模块工程之上,同一套业务代码支持两种部署形态:微服务模式与单体模式,按运行环境切换,不存在只支持其中一种模式的业务代码。
  • 微服务模式:Nacos 注册/配置中心 + Spring Cloud Gateway 网关 + 六个业务服务独立进程部署,服务间经 Feign 调用,适合规模化运营。
  • 单体模式:由 bizspring-boot 启动把六个业务服务合并进同一个 JVM 进程(端口 9929),无需 Nacos、网关,适合中小规模部署与快速起步。
  • 两种模式对前端完全透明:前端始终访问 9929 端口的同一套接口路径,切换模式无需改动任何前端配置。

两种部署模式总览

维度微服务模式单体模式(boot)
进程形态网关 + Nacos + 6 个业务服务,多 JVM1 个 JVM(bizspring-boot jar)
模式开关bizspring.mode(缺省即微服务)bizspring.mode=boot(单体专属组件按此条件装配)
注册/配置中心需要 Nacos(服务发现 + 配置 dataId)不需要,配置由本地 application-boot.yml 承载
数据库各服务独立库(bizspring_i18n_upms/goods/order/...)合并单库 bizspring_all
对外端口网关 9929单进程 9929
前端影响无差别:同一 baseURL、同一路径前缀无差别:同一 baseURL、同一路径前缀

微服务模式

微服务架构是一种将应用程序分为多个小型、独立的服务的软件架构。这些服务通过轻量级通信机制进行通信,每个服务运行在自己的进程中,可以独立部署、扩展和维护,从而提高应用程序的可靠性,更好地支持快速迭代和部署。

QQ截图20210611115642.png
微服务架构图

微服务模式的特点

  • 应用程序逻辑分为明确定义职责范围的粒度组件,这些组件相互协调提供解决方案。
  • 每一个组件都有一个小的职责领域,可以完全独立部署,一个服务可以跨越多个应用程序复用。
  • 服务之间基于 http + Json 这样的轻量级通信协议交互,不同服务可以使用不同的技术,互不影响、松耦合。

微服务模式的优势

  • 提高速度和工作效率:应用分解为多个可管理的服务,不同团队可以同时开发不同组件,各服务可单独测试,加快质量保证流程。
  • 围绕业务功能组织实施:根据业务优先级组织团队和流程,同一服务可在多个业务流程中复用。
  • 轻松构建和维护:每个服务是单独的代码段,可独立构建、部署与管理;单个服务的资源问题不会拖垮整个系统。
  • 提高可扩展性:需求增加时只需扩展受影响的服务(可建集群),节省服务器资源成本。
  • 提升数据安全性:服务间经安全的 API 建立连接,敏感业务数据只对授权用户、应用和服务器开放。

单体模式(bizspring-boot)

单体模式并非另写一套系统,而是用启动器模块 bizspring-boot 把同一套业务代码合并部署:

  • 启动BizSpringBootApplication 扫描 全部业务 打成可执行 jar。
  • 免除中间件:本地 application-boot.yml 承载,同 JVM 内使用本地事务。
  • 数据库:合并为单库 bizspring_all,无需多数据源。

部署操作步骤详见《单体模式部署》。

模式选择建议

两种模式代码同源,按部署规模与运维能力选择:

场景建议模式原因
中小规模、单机或少量服务器起步单体模式一个进程即全部业务,无需 Nacos/网关/Seata,部署与运维成本最低
开发调试、演示环境单体模式本地只需 MySQL + Redis,IDEA 一键启动
用户量攀升、需要按业务扩容微服务模式压力大的服务(如订单、商品)可独立建集群扩容
多团队并行开发、独立发布微服务模式各服务独立开发、部署、更新,互不等待
需要跨服务分布式事务保障微服务模式Seata 保障跨库一致性(单体模式为同库本地事务,天然一致)

业务增长后可从单体切换到微服务:迁移数据库形态(单库拆回各服务库)、改用各服务独立启动即可,业务代码不动。

BizSpring 电商平台技术组件

名称组件适用模式
核心框架Springboot2、Spring Cloud、Spring Cloud Alibaba两种模式通用
配置中心Nacos微服务模式(单体模式用本地 application-boot.yml)
负载均衡Open Feign、Ribbon两种模式通用(单体为静态路由回环)
服务调用Feign两种模式通用
服务容错Alibaba Sentinel微服务模式
分布式事务Seata微服务模式(单体模式本地事务)
持久层框架MyBatis-plus两种模式通用
高性能缓存Redis 、Redis Cluster两种模式通用(单体常用单节点)
分布式锁Redisson两种模式通用
文件管理Alibaba oss /七牛云/腾讯cos/Minio两种模式通用
SMS短信Alibaba SMS两种模式通用
安全JWT+oauth2两种模式通用
数据库Mysql8+两种模式通用(库形态不同)
API管理Swagger两种模式通用
搜索引擎Elasticsearch两种模式通用
JDK版本Java8+两种模式通用
管理平台框架Vue3+ElementPlus前端不区分模式
商家平台框架Uni-app(一套代码,多端发布)前端不区分模式
商城平台框架Uni-app(一套代码,多端发布)前端不区分模式

BizSpring商城的架构优势

BizSpring 电商平台将电商整套流程包括商品(goods)、订单(order)、店铺(store)、营销(marketing)分别建设为不同的服务模块,降低了电商系统业务的耦合性。微服务模式下各服务可单独部署,用户量攀升时对业务压力较大的服务建集群分担平台压力;单体模式下同一套模块合并为一个进程低成本运行——部署形态可随业务规模切换,业务代码不变

Elasticsearch搜索引擎
Elasticsearch 为架构提供高效的搜索和聚合功能,支持实时数据处理,在商城数据写入时立即建立索引。支持多种查询语句,并能够快速地搜索和处理商品、订单、评论、售后的大量数据搜索。

Redis集群存储平台缓存
使用redis集群存储平台缓存,提升数据可靠性,提高读写能力,提高了系统运行中缓存的稳定性(单体模式可用单节点 Redis)。

Nacos注册中心(微服务模式)
微服务模式下服务启动后将自己注册到注册中心(Nacos),调用方调用时到注册中心查询可用的服务然后完成调用。单体模式不部署 Nacos。

OpenFeign Ribbon负载均衡
BizSpring 服务调用使用 OpenFeign 和 Ribbon 配合完成,OpenFeign实现服务调用、Ribbon做负载均衡;两种模式共用同一套 Feign 接口。

版权许可