首页 > 编程语言 >Java商城单体和微服务架构有什么区别

Java商城单体和微服务架构有什么区别

时间:2024-01-26 23:13:14浏览次数:45  
标签:服务 单体 Java 应用 组件 架构 电商

微服务架构

概述

  • BizSpring移动全端国际化电商平台,是建立在Spring Cloud 基础上的微服务应用,服务化是系统达到一定规模以后的必然选择,主流的互联网公司基本都在迁移到服务化架构。
  • 我们的微服务化架构给客户带来更多便捷,每个开发团队及各人更加专注于自身业务的开发,每个服务独立开发、部署、更新可以选择更加适合的技术体系,每个服务只需要对外提供接口隐藏了内部复杂的实现方式对调用方更加友好。
  • Spring Cloud 微服务架构基于 Spring Boot 框架,是由一系列框架式组件组成的,这些组件包括注册中心、服务网管、服务调用、负载均衡、限流降级等等。

单体服务架构

单体服务架构是前些年使用的一种设计模式,即用户交互端+服务器端架构,将应用简单的分为前端和后端两部分,前端负责显示界面和处理用户交互,服务器负责处理业务逻辑和存储数据。
image

(单体服务架构图)

微服务架构

不同于传统的单体服务,微服务架构是一种将应用程序分为多个小型、独立的服务的软件架构。这些服务可以通过轻量级通信机制进行通信,每个服务都有自己的数据库和应用程序代码,每个服务运行在自己的进程中。这种模式使得每个服务可以独立部署、扩展和维护,从而提高应用程序的可靠性,这种架构可以更好地支持快速迭代和部署,提高开发效率和灵活性。
image

微服务架构图

微服务架构概述

微服务架构风格是一类将单一应用程序作为由众多小型服务构成之套件加以开发的方式,其中各项服务都拥有自己的进程并利用轻量化机制(通常为HTTP源API)实现通信。这些服务围绕业务功能建立而成,且凭借自动化部署机制实现独立部署。

微服务的特点

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

微服务结构的通用性

  • 通过服务实现应用的组件化(按功能拆分、可独立部署和维护)
  • 围绕业务能力组织服务,根据业务不同的需求进行不同组件的使用
  • 所做产品非项目化,对于平台具有一定的通用性

微服务架构的五大优势

提高速度和工作效率

微服务架构的最大优势之一是,它将应用分解为多个可管理的服务,从而解决了速度和工作效率问题。不同的团队可以同时开发不同的应用组件。由于微服务之间在结构上互不依赖,因此一个团队永远不必等待其他团队完成其工作后再创建或更改微服务。另外,独立的微服务更易于定位和修改。每个微服务均可单独测试,因此您可以加快质量保证流程。而且能够在开发其他组件时测试已开发好的组件。

围绕业务功能组织实施

微服务允许根据业务优先级来组织团队和流程,支持构建产品而非项目,团队将专注于构建业务功能,而不是编写用于粘合各个功能的代码。因此你所创建的服务能够适应多种环境。可以在多个业务流程中重复使用同一 服务,甚至还能够按需通过不同的业务渠道使用同一服务。每位团队成员分别负责某项服务,从而组成一支分工明确的跨职能团队。

轻松构建和维护应用

微服务架构的最大优势或许支持轻松构建和维护应用,微服务旨在化繁为简。
当应用被设计成多个较小的部分时,便更易于构建和维护,管理代码也变得轻松很多,因为每个微服务都是单独的代码段。也可以使用不同的数据库、编程语言和软件环境来实现服务。因此每个服务都能够独立部署、构建、重新部署和管理。
如一个微服务分配了太多的内存,或者给处理器带来了繁重的负载。对于微服务架构,这只会影响该特定服务,一个微服务的问题不会影响到整个系统。

提高可扩展性

微服务的另一大优势是可帮助提高可扩展性。因为每个微服务都可以自主运行,因此您能够更轻松地添加、更新、删除并扩展单个微服务。开发人员可以在不破坏应用中其它微服务的情况下做到这一点。当对应用的需求增加时,您只需将更多的资源转移或升级到受需求增加影响的微服务即可,甚至可以使用容器自动扩展各个服务为服务集群。通过只扩展所需的服务,帮助公司节省大量的服务器资源成本。

提升数据安全性

微服务架构有助于提升数据安全性。当微服务之间建立连接时,借助安全的API,您可确保信息仅可供授权用户、应用和服务器访问。
当您的微服务正在管理敏感的财务、账务相关业务机密性信息,安全的API 支持您全面控制哪些数据可供应用访问。

单体服务架构的劣势

  1. 开发速度缓慢

只能采⽤同⼀种技术,很难⽤不同的语⾔或者语⾔不同版本开发不同功能;

  1. 难以升级技术栈

团队长期依赖一套相同的技术,单体架构使得采用新的框架和编程语言变的及其困难。

  1. 系统耦合性强,

⼀旦其中⼀个模块有问题,整个系统就瘫痪了;⼀旦升级其中⼀个模块,整个系统就停机了,难以扩展,不能做到按需扩展,只能是扩展整个系统。要上线必须⼀起上线,互相等待,⽆法快速响应需求,应用程序缺乏故障隔离机制,因为所有模块都运行在同一个进程当中。

  1. 服务不抗压、稳定性差

单体程序缺乏可靠性,用户量提升将导致频繁的系统故障和宕机。

  1. 功能越强、代码越混乱

电商系统本身功能过于庞大和复杂,于单体系统以至于任何一个开发者都很难以理解它的全部业务。这种极度的复杂度会形成恶性循环,功能越扩展,越难以下手。

  1. 难以维护

由于电商系统功能模块诸多过于庞大和复杂,无论是前期开发人员还是后期新聘技术人员都难以新增和维护系统功能,每一次更改都更容易出错且更改后其他人更难理解。

  1. 新版发布周期长,且容易出问题

代码库复杂,以至于一个更改可能引起的影响是未知的。开发团队分为多个小组时,当需要发布新版本的时候漫长的合并和测试时间非常长。

  1. 难以聘到技术人员

对于新手来说,看到了一坨庞大的代码,真心是无从下手,你让他接手或者干点活啥的,成本都更高的,且容易犯错。对于有代码情操的人,是会立刻走人的。

BizSpring 电商平台微服务架构

名称 组件
核心框架 Springboot2、Spring Cloud、Spring Cloud Alibaba
配置中心 Nacos
负载均衡 Open Feign、Ribbon
服务调用 Feign
服务容错 Alibaba Sentinel
API网关 Spring Cloud Gateway
分布式事务 Seata
持久层框架 MyBatis-plus
高性能缓存 Redis 、Redis Cluster
分布式锁 Redisson
文件管理 Alibaba oss /七牛云/腾讯cos/Minio
SMS短信 Alibaba SMS
安全 JWT+oauth2
数据库 Mysql8+
API管理 Swagger2
搜索引擎 Elasticsearch 7.6.2
JDK版本 Java8+
管理平台框架 Vue3+ElementPlus
商家平台框架 Uni-app(一套代码,多端发布)
商城平台框架 Uni-app(一套代码,多端发布)

BizSpring商城的架构优势

BizSpring 电商平台使用业内最优秀的服务设计理念,将电商整套流程包括商品(product)、订单(order),店铺(store)、营销(marketing)分别建设为不同的服务,降低了电商系统业务的耦合性、各服务可单独部署,用户量攀升的期,将业务压力较大的服务可建集群,进一步分担平台压力,顶级式提高架构的扩展性。于开发人员将能更简捷的自己业务范围的功能实现完善好。

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

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

Nacos注册中心
BizSpring中服务启动后将自己注册到注册中心(Nacos),调用方调用时到注册中心查询可用的服务然后完成调用。注册中心的稳定性直接影响了整个微服务架构的可靠性,所以注册中心的选型至关重要。

OpenFeign Ribbon负载均衡
BizSpring 服务调用使用 OpenFeign 和 Ribbon 配合完成,OpenFeign实现服务调用Ribbon做到负载均衡。

标签:服务,单体,Java,应用,组件,架构,电商
From: https://www.cnblogs.com/BizSpring/p/17990914

相关文章

  • Java学习日记 Day12 心累~
    SpringMVC:主要学了SpringMVC架构下请求与响应的各种方式,在响应中要知道请求转发和重定向的区别。算法:合并二叉树:判断当前节点两棵树的数值关系,然后递归判断左右子树的关系。二叉搜索树中的搜索:根据二叉搜索树的特点,递归查找左右子树,当值相等就返回。验证二叉搜索树:为自己的左......
  • 2024年1月Java项目开发指南15:vue3+AntDesignVue 设计页面
    考虑到有的同学对vue3不熟悉,因此,我把ControlView.vue这个页面清空,我们从0开始写。<templatestyle="width:100%"></template><scriptsetup></script><stylescoped></style>搭建页面的基本框架展开代码后复制你需要的代码。比如我选择上中下这种结构,我就复制上......
  • java IO
    I/O流什么事文件文件就是保存数据的地方文件流文件在程序中是以流的方式来操作的流:数据在数据源(文件)和程序(内存之间)经历的路径输入流:数据从数据源(文件)到程序(内存)的路径输出流:数据从程序(内存)到数据源文件的路径1.常用创建文件的操作创建文件对象相关的......
  • 1.JAVA基础-JDK的介绍
    Java语言语言:人与人交流沟通的表达方式。计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言。Java语言是美国Sun公司(StanfordUniversityNetwork)在1995年推出的计算机语言。Java之父:詹姆斯·高斯林(JamesGosling)。Java语言的三个版本⚫JavaSE⚫JavaME......
  • java集合知识
    集合概述Java集合概览Java集合,也叫作容器,主要是由两大接口派生而来:一个是Collection接口,主要用于存放单一元素;另一个是Map接口,主要用于存放键值对。对于Collection接口,下面又有三个主要的子接口:List、Set和Queue。说说List,Set,Queue,Map四者的区别?List(对付......
  • 2024年1月Java项目开发指南14:关于post中的body和param以及java中的@RequestBody和@Req
    在HTTP请求中,POST方法通常用于向服务器发送数据,这些数据可以在请求的body中,也可以在URL的param中。不过,这两者的使用方式和适用场景是不同的。Body:在POST请求中,body主要用于包含要发送到服务器的数据。这些数据通常是表单数据、JSON数据或其他类型的数据。当你需要在请求体中发送......
  • 基于Java和Vue开发的企业Ehr数智化人力管理系统源码+配套文档(提升人力资源管理效率的
    写在前面:随着企业规模的不断扩大和人力资源管理的日益复杂,传统的人力资源管理方式已经无法满足现代企业的需求。为了提高管理效率、优化资源配置、降低人力成本,越来越多的企业开始引入eHR人力资源管理系统。本文将重点介绍eHR系统在招聘管理、人事管理、考勤管理、绩效管理、社保......
  • The artifact mysql:mysql-connector-java:jar:8.0.33 has been relocated to com.mys
    Theartifactmysql:mysql-connector-java:jar:8.0.33hasbeenrelocatedtocom.mysql:mysql-connector-j:jar:8.0.33:MySQLConnector/Jartifactsmovedtoreverse-DNScompliantMaven2+coordinates.1.异常信息Theartifactmysql:mysql-connector-java:jar:8.0.33hasb......
  • 【JAVA基础】String、StringBuilder和StringBuffer的区别——巨详细
    先给答案String是不可变的,StringBuilder和StringBuffer是可变的。而StringBuffer是线程安全的,而StringBuilder是非线程安全的。源码先看看jdk1.8中关于String、StringBuilder和StringBuffer部分的源码,我们看某个类或者某个属性是否不可变首先要看修饰类的关键字是什么,final表示不可......
  • 基于Java+Vue开发的企业Ehr数智化人力管理系统源码+配套文档(提升人力资源管理效率的利
    写在前面:随着企业规模的不断扩大和人力资源管理的日益复杂,传统的人力资源管理方式已经无法满足现代企业的需求。为了提高管理效率、优化资源配置、降低人力成本,越来越多的企业开始引入eHR人力资源管理系统。本文将重点介绍eHR系统在招聘管理、人事管理、考勤管理、绩效管理、社保......