基于微服务架构的水果销售系统的设计与实现

news2024/9/25 8:44:11

访问【WRITE-BUG数字空间】_[内附完整源码和文档]

整体上为微服务架构,使用 SpringCloud 技术,每个独立的服务为一个单独的 SpringBoot 工程;数据库使用 MySQL 数据库;分布式缓存使用 Redis,消息队列使用 Kafka。包括基础业务支撑服务,订单服务,支付服务,商品服务,门店管理服务,促销活动服务 6 个微服务。详细设计见md文件。

第 1 章绪论
1.1 论文研究主要内容
互联网的高速发展下,电子商务也得到了急速成长,各电商平台业务流量逐步递增,原来的整站架构已经无法满足现有的需求,所以需要拆分业务,将业务模块化独立成各个微服务,加上容器,调度平台,监控等形成一个完整的微服务架构。为此,特设计实现了基于微服务架构的水果销售系统,其中包括基础业务支撑服务,订单服务,支付服务,商品服务,门店管理服务,促销活动服务 6 个微服务。

1.1.1 微服务架构概述
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于 HTTP 协议的 RESTfulAPI)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,对具体的服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。

就我个人而言微服务架构 ≈ 模块化开发 + 分布式计算。不管微服务架构的定义怎么样,都是在描述一个核心思想:把大系统拆分成小型系统,把大事化小,以降低系统的复杂性,从而大幅降低系统建设、升级、运维的风险和成本。

1.1.2 水果销售系统
在如今各大电商平台层出不穷的环境下,商品的分类专卖成为了一种趋势。此系统是为了实现水果的专售并且实现果农和买家的对接,消除第三方代理商的差价,在买家能买到更优惠,更有品质的前提下提升果农的收入。

1.2 社区活跃状态
自2014年MartinFowler在其博客上发表了“Microservices”一文(http://martinfowler.com/articles/microservices.html)以来,“微服务”这个词在各大技术论坛和社区的迅速活跃起来,容器,PaaS,CloudNative,gRPC,ServiceMesh,Serverless等新技术新理念你方唱罢我登场,推动着我们来到了微服务2.0时代。

第 2 章关键技术介绍
2.1 关键性技术分析和介绍
2.1.1Springboot/cloud
基于 Springboot/cloud 的框架本质上可以认为是一种 RESTFul 框架(不是 RPC 框架),序列化协议主要采用基于文本的 JSON,通讯协议一般基于 HTTP。RESTFul 框架天然支持跨语言,任何语言只要有 HTTP 客户端都可以接入调用,但是客户端一般需要自己解析 payload。目前 Spring 框架也支持 Swagger 契约编程模型,能够基于契约生成各种语言的强类型客户端,极大方便不同语言栈的应用接入,但是因为 RESTFul 框架和 Swagger 规范的弱契约特性,生成的各种语言客户端的互操作性还是有不少坑的。3 月 1 号官方发布了 SpringBoot2.0,并提供了 Maven 中央仓库地址,该版本支持 SpringFramework5.0。

2.1.2 服务注册中心(Eureka)
SpringCloud体系,选择Eureka是最佳搭配,Eureka在Netflix经过大规模生产验证,支持跨数据中心,客户端配合Ribbon可以实现灵活的客户端软负载,Eureka目前在GitHub上有超过4.7k星。

2.1.3 服务网关(Zull)
SpringCloud 体系,则选择 Zuul 是最佳搭配,Zuul 在 Netflix 经过大规模生产验证,支持灵活的动态过滤器脚本机制,异步性能不足(基于 Netty 的异步 Zuul 迟迟未能推出正式版)。Zuul 网关目前在 GitHub 上有超过 3.7k 星。

2.1.4 消息系统(Kafka)
后台服务主要包括消息系统,分布式缓存,分布式数据访问层和任务调度系统。后台服务是一个相对比较成熟的领域,很多开源产品基本可以开箱即用。

消息系统,对于日志等可靠性要求不高的场景,则 Apache 顶级项目 Kafka 是社区标配。对于可靠性要求较高的业务场景,Kafka 其实也是可以胜任,但企业需要根据具体场景,对 Kafka 的监控和治理能力进行适当定制完善。

2.2 其他相关技术
2.2.1MySQL
MySQL,一种关系数据库管理系统。由于其体积小、速度快、成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

2.2.2Maven
Maven,项目管理工具,包含了一个项目对象模型,一组标准集合,一个项目生命周期,一个依赖管理系统,和用来运行定义在生命周期阶段中插件目标的逻辑。

2.2.3Redis
Redis,一个高性能的键值对数据库。它提供了 Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang 等不同编程语言客户端,使用很方便。

第 3 章系统分析
3.1 构架概述
常见的微服务组件及概念:

1.服务注册,服务提供方将自己调用地址注册到服务注册中心,让服务调用方能够方便地找到自己。

2.服务发现,服务调用方从服务注册中心找到自己需要调用的服务的地址。

3.负载均衡,服务提供方一般以多实例的形式提供服务,负载均衡功能能够让服务调用方连接到合适的服务节点。并且,节点选择的工作对服务调用方来说是透明的。

4.服务网关,服务网关是服务调用的唯一入口,可以在这个组件是实现用户鉴权、动态路由、灰度发布、A/B 测试、负载限流等功能。

5.配置中心,将本地化的配置信息(properties,xml,yaml 等)注册到配置中心,实现程序包在开发、测试、生产环境的无差别性,方便程序包的迁移。

6.API 管理,以方便的形式编写及更新 API 文档,并以方便的形式供调用者查看和测试。

7.集成框架,微服务组件都以职责单一的程序包对外提供服务,集成框架以配置的形式将所有微服务组件(特别是管理端组件)集成到统一的界面框架下,让用户能够在统一的界面中使用系统。

8.分布式事务,对于重要的业务,需要通过分布式事务技术(TCC、高可用消息服务、最大努力通知)保证数据的一致性。

9.调用链,记录完成一个业务逻辑时调用到的微服务,并将这种串行或并行的调用关系展示出来。在系统出错时,可以方便地找到出错点。

10.支撑平台,系统微服务化后,系统变得更加碎片化,系统的部署、运维、监控等都比单体架构更加复杂,那么,就需要将大部分的工作自动化。现在,可以通过 Docker 等工具来中和这些微服务架构带来的弊端。例如持续集成、蓝绿发布、健康检查、性能健康等等。严重点,以我们公司的实践经验,可以这么说,如果没有合适的支撑平台或工具,就不要使用微服务架构。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/497896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于matlab的相控阵系统仿真场景可视化

一、前言 此示例演示如何使用方案查看器可视化系统级仿真。 二、介绍 相控阵系统仿真通常包括许多移动物体。例如,阵列和目标都可以处于运动状态。此外,每个移动物体可能都有自己的方向,因此当模拟中出现更多玩家时,簿记变得越来越…

是人就能学会的Spring源码教学-Spring的简单使用

是人就能学会的Spring源码教学-Spring的简单使用 Spring的最简单入门使用第一步 创建项目第二步 配置项目第三步 启动项目 Spring的最简单入门使用 各位道友且跟我一道来学习Spring的最简单的入门使用,为了方便和简单,我使用了Spring Boot项目&#xff…

解决NixOS在Vmware中无法自适应显示缩放问题

解决NixOS在Vmware中无法自适应显示缩放问题 此方法同样适用于所有虚拟机,主要解决的是 虚拟机界面显示无法自适应操作虚拟机时,过渡动画卡顿看视频时,分辨率不高,伴随卡顿 起因 在为 NixOS安 装完 Vmware Tools 后,…

2023年最新水果DAW编曲软件fl studio21 macOS - 21.0.3.3036简体中文版免费下载支持苹果M1/M2处理器

一直梦想制作自己的音乐(无论是作为一名制作人还是艺术家),你可能会想你出生在这个时代是你的幸运星。这个水果圈工作室和上一版之间的改进水平确实令人钦佩。这仅仅是FL Studio 21所提供的皮毛。你的音乐项目的选择真的会让你大吃一惊。你以前从未有过这样的多才多…

【LeetCode】《LeetCode 101》第七章:动态规划

文章目录 7.1 算法解释7.2 基本动态规划:一维70. 爬楼梯(简单)198.打家劫舍(中等)413. 等差数列划分(中等) 7.3 基本动态规划:二维64. 最小路径和(中等)542. …

【项目经理】论项目经理的自我修养

项目经理的非职权领导力 文章目录 项目经理的非职权领导力一、权利的类型二、构成权利的三要素三、沟通是实施影响力的重要手段3.1 沟通的主要类型3.2 沟通的内容和形式3.3 沟通的主要困难 四、综合沟通协调的技巧4.1 常见的负面反馈4.2 沟通技巧 五、论项目经理的自我修养5.1 …

PyCharm2023.1下载、安装、注册以及简单使用【全过程讲解】

在使用PyCharm IDE之前,请确保自己的计算机里面安装了Python解释器环境,若没有下载和安装可以看看我之前的文章>>>Python环境设置>>>或者还可以观看视频讲解。 注意:本文软件的配置方式仅供个人学习使用,如有侵…

如何将PDF文件转换为Excel表格?这两个方法方便实用!

如何将PDF文件转换为Excel表格? 很多人在编辑和处理表格内容时,需要将PDF文件转换为Excel表格,以更好地修改和排版。虽然PDF文件往往起到展示整体效果的作用,但是PDF转Excel也是办公中老生常谈的文档处理操作。如果您还不知道如何…

Java架构中VO、DTO、DO、BO的区别与联系(超详解)

VO、DTO、DO、BO的区别与联系 前言一、概念1、VO (View Object)2、DTO(Data Transfer Object)3、DO(Data Object)4、BO(Business Object) 二、为什么会存在Vo?三、总结 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识…

深入理解 node 中的文件流

为什么要使用文件流 想象这样一个场景,我要处理一个 10G 的文件,但我的内存大小只有 2G,该怎么办? 我们可以分 5 次读取文件,每次只读取 2G 的数据,这样就可以解决这个问题,那么这个分段读取的过…

HTML基本标签介绍

HTML的基本认识! 文章目录 HTML基本标签介绍1. HTML是什么?1.1 HTML代码的样子1.2 HTML文件的展示1.3 VSCode配置 2. HTML常用标签介绍2.1 注释标签2.2 标题标签2.3 段落标签2.4 换行标签2.5 格式化标签2.6 图片标签2.7 超链接标签2.8 表格标签2.9 列表标…

Windows下 ffmpeg 的 “Protocol not found“ 的解决

文章目录 1. 问题描述2. 排查方法记录2.1 检查代码中编码器是否安装2.2 确定ffmpeg版本号2.3 打印编译参数2.4 查看运行中调用dll 1. 问题描述 调用ffmpeg库中,如果使用 avformat_open_input 打开返回 -1330794744,使用 av_strerror char buf[1024]{0};int result …

JavaScript高阶项目—组件化的可编辑表格

1. 任务要求 JSON数据,表格中数据来自服务端,由JSON格式表示。通过JSON数据生成可编辑表格,并且灵活配置可编辑得到数据列。输入数据时打开开发者模式有提示,并且设置判断,要求输入正确的成绩。要求表格的可编辑列,计…

新鲜热乎的春招面经汇总

作者:阿秀 校招八股文学习网站:https://interviewguide.cn 这是阿秀的第「263」篇原创 小伙伴们大家好,我是阿秀。 欢迎今年参加秋招的小伙伴加入阿秀的学习圈,目前已经超过 2300 小伙伴加入!去年认真准备和走下来的基…

高精度DEM(12.5m)数据以及下载方式介绍

一、 DEM代表数字高程模型,是一种数字地形模型,用于表示地球表面的海拔高度。 DEM数据可以通过多种方法获得,包括激光雷达、遥感技术和GPS测量等。 DEM数据通常以栅格形式呈现,每个栅格单元包含一个高度值。DEM数据可以用于许多…

gitee如何上传自己的代码

1,右击你要上传的项目,选择Git bash Here 2,接着输入 git init 此时你会发现你的当前文件夹会多了一个.git文件夹 点击.git文件夹,进入之后发现是这样,然后用记事本打开config文件 3,发现是这样,然后我们要配置一个用…

简单科普视频云

1. 本文目的 每当我连写几篇行业分析的虚文以后,我都会做一两篇技术科普和产品分析的硬核分享,证明我是脚踏实地的戏说江姗,而非云里雾里的胡乱推倒。 其实是写硬核分享应者寥寥,反倒是写一些虚文很多人看热闹。 最近看到PPIO王闻…

数字化转型导师坚鹏:如何制定企业数字化转型年度培训规划

如何制定企业数字化转型年度培训规划 ——以推动企业数字化转型战略落地为核心,实现知行果合一 课程背景: 很多企业都在开展企业数字化转型培训工作,目前存在以下问题急需解决: 缺少针对性的企业数字化转型年度培训规划 不清…

双目视觉(七)稀疏双目匹配

系列文章 双目视觉(一)双目视觉系统双目视觉(二)双目匹配的困难和评判标准双目视觉(三)立体匹配算法双目视觉(四)匹配代价双目视觉(五)立体匹配算法之动态规…

测试1:概念

1.需求 用户需求:该需求一般比较简略。(一句话) 软件需求:或者功能需求,详细描述开发人员必须实现的软件功能(一个文档) 2.BUG 说明是存在的并且正确,程序和规格说明之间不匹配是错误 3.软件生命周期 从诞生到停服 需求分析,计划,设计,编码,测试,运行维护 需求分析:分析…