基于SpringBoot+Dubbo构建的电商平台-微服务架构、商城、电商、微服务、高并发、kafka、Elasticsearc+源代码+文档说明

文章目录

  • 项目用到的技术
  • 前端使用的技术
  • 后端使用的技术
  • 项目模块说明
  • 项目搭建方式
  • 项目开发进度
  • 源码下载地址

项目基于springboot2.1.6.RELEASE+Dubbo2.7.3 来构建微服务。

业务模块划分,尽量贴合互联网公司的架构体系。所以,除了业务本身的复杂度不是很高之外,整体的架构基本和实际架构相差无几。

但实际上,真实的生产级的项目由于用户量以及业务的复杂度,会变得非常复杂。 所以我们会让更多的人参与进来,从需求、设计、解决方案等方面出发来对项目进行迭代,从而培养出一定的

实际解决方案的经验和能力。

项目用到的技术

项目采用前后端分离开发,前端需要独立部署。目前核心的技术栈采用的是SpringBoot2.1.5.RELEASE+Dubbo2.7.2,

前端使用的技术

  • nodejs
  • axios
  • es6
  • vue
  • sass
  • Element UI
  • webpack
  • vue router
  • mockjs

后端使用的技术

后端的主要架构是基于springboot+dubbo+mybatis.

  • SpringBoot2.1.6
  • Mybatis
  • Dubbo2.7.2
  • Zookeeper
  • Mysql
  • Redis
  • Elasticsearch
  • Kafka
  • druid
  • Docker
  • mybatis generator
  • Sentinel

项目模块说明

db_script 本项目的数据库脚本使用mysql暂时未做分表处理,不过有考虑到分表的情况
gpmall-cashier 收银台,负责支付相关的交互逻辑web项目8083端口
gpmall-commons 公共的组件jar公共组件,很多地方都有引用,改动的时候要注意
gpmall-front 商城的前端项目前端项目使用vue、node、es等前端技术开发
gpmall-parent 父控文件,用来统一管理所有jar包父控文件用来统一管理所有项目的jar包的版本
gpmall-shopping 商品/购物车/首页渲染等交互web项目8081端口
gpmall-user 提供用户相关的交互,如登录、注册、个人中心等web项目8082端口
market-service 促销活动的Dubbo服务【暂时未联调完成,可以不启动】dubbo服务20884端口
pay-service 提供支付处理能力dubbo服务20883端口
shopping-service,提供购物车、推荐商品、商品等服务dubbo服务20881端口
user-service ,提供用户相关服务dubbo服务20880端口
order-service ,提供订单服务dubbo服务20882端口
comment-service , 商品评论服务dubbo服务20885端口
PRD存放prd需求文档,有想参与设计的同学,可以提供prd需求
wiki帮助文档,需要每一位同学贡献自己的一份力量

项目搭建方式

  1. 创建gpmall数据库,并把目录下的sql脚本导入。db_scrpit

  2. 按照下面顺序分别启动相关服务

  • gpmall-parent , 这个是整个项目的父控文件,需要执行install安装到本地,如果自己搭建了nexus,可以deploy到nexus上

  • gpmall-commons , 这个是整个项目的公共依赖,执行install安装到本地,如果自己搭建了nexus,可以deploy到nexus上

注: 下列微服务,用到了mysql、redis、kafka等,需要提前安装好相关中间件,并且所有的服务配置的是host地址,建议用hostswitch工具统一维护

  • user-service , 用户服务,把模块,install到本地仓库,因为其他模块有依赖。然后启动服务。user-service-api

  • order-service , 订单服务, 把模块,install到本地,给其他模块依赖order-service-api

  • shopping-service , 商品服务, 把模块,install到本地,给其他模块依赖shopping-service-api

  • marking-service , 营销服务,暂时未开发功能。

  • pay-service , 支付服务,代码已经写完并调试通过(但是用的是老的接口版本,如果是新的版本,需要改接口),还需要提供appid这些,不过这个项目不启动,并不影响前面的页面的功能

  • comment-service , 评论服务,用于展示商品评论信息

下面的服务为BFF,做服务聚合,分别依赖上面的微服务模块

  • gpmall-shopping

  • gpmall-user

  • gpmall-cashier

  1. 前端工程 gpmall-front, 这个项目采用vue开发。
  • 安装node环境
  • 安装python2.7
  • 在gpmall-front中执行 ,npm install
  • 再执行运行, 如果后端的服务都正常启动,此时gpmall-front会把请求转发到服务端获取相关数据进行渲染。npm run dev

项目开发进度

  • 首页渲染,轮播、自定义展示板块
  • 商品查询、商品展示、商品详情
  • 个人中心、用户注册、个人信息修改、收获地址维护
  • 购物车、订单查询、下单、支付
  • 促销活动
    在这里插入图片描述

源码下载地址

点击这里下载源码

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《Solidity 简易速速上手小册》第4章:智能合约的设计与开发(2024 最新版)

文章目录 4.1 合约结构和布局4.1.1 基础知识解析深入合约布局原则理解组织结构高效布局的重要性 4.1.2 重点案例:构建一个在线商店合约案例 Demo:编写在线商店智能合约案例代码:OnlineStore.sol测试和验证拓展功能 4.1.3 拓展案例 1&#xff…

Django学习笔记-创建第一个django项目

1.创建一个虚拟环境的python项目 2.点击解释器设置 3.安装django包 4.终端选择Command Prompt 5.创建django项目运行django-admin startproject demo01(自命名) 6.修改连接数据库为mysql 7.修改语言(中国汉语)和时区(亚洲上海) 8.修改TEMPLATES 9.创建templates文件夹 10.安…

二、双指针问题

283、移动零(简单) 题目描述 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12]…

深度学习发展的艺术

将人类直觉和相关数学见解结合后,经过大量研究试错后的结晶,产生了一些成功的深度学习模型。 深度学习模型的进展是理论研究与实践经验相结合的产物。科学家和工程师们借鉴了人类大脑神经元工作原理的基本直觉,并将这种生物学灵感转化为数学模…

git pull CONFLICT 哪些是本地内容,哪些是远端仓库内容?

如上图&#xff0c;<<<<<< HEAD 是本地内容&#xff0c;>>>>>>> <remote_branch> 是远端仓库内容

HBase 进阶

参考来源: B站尚硅谷HBase2.x 目录 Master 架构RegionServer 架构写流程MemStore Flush读流程HFile 结构读流程合并读取数据优化 StoreFile CompactionRegion Split预分区&#xff08;自定义分区&#xff09;系统拆分 Master 架构 Master详细架构 1&#xff09;Meta 表格介…

设计模式之委派模式

文章目录 前言正文一、生活中的例子二、Java代码实现2.1 类设计2.2 代码实现2.2.1 Employee2.2.2 ArchitectureDesignEmployer2.2.3 BackEmployer2.2.4 FrontEmployer2.2.5 Leader2.2.6 EmployeeStrongPointEnum2.2.7 Boss 2.3 测试2.3.1 Client2.3.2 测试结果 三、委派模式的优…

SQL Developer 小贴士:显示RAC配置

前提&#xff1a; 已建立2节点RAC已在SQL Developer中建立了2个连接&#xff0c;分别到RAC的两个节点 然后单击菜单View>DBA&#xff0c;分别连接RAC节点1和节点2&#xff0c;并组织成目录&#xff08;不必须&#xff0c;但建议&#xff09;。 在两处可以体现为RAC配置。第…

Keepalived实现Nginx的高可用集群案例

服务器规划: serverb(nginx2):192.168.233.144 serverc(客户端):192.168.233.140 serverd(nginx1):192.168.233.141 结构图: serverd(nginx1): # 安装nginx yum install nginx -y# 进入nginx配置目录 cd /e…

【安全狐】Windows隐藏计划任务技术及排查方法

0x00 前置知识 计划任务SCHTASKS命令 SCHTASKSSCHTASKS /Create 参数 SCHTASKS /Create [/S system [/U username [/P [password]]]][/RU username [/RP password]] /SC schedule [/MO modifier] [/D day][/M months] [/I idletime] /TN taskname /TR taskrun [/ST starttim…

【MATLAB源码-第141期】基于matlab的免疫优化算法在物流配送中心选址应用仿真,输出选址图以及算法适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 免疫优化算法在物流配送中心选址中的应用是一个集成了信息科学、生物学原理和运筹学的跨学科研究领域。本文旨在探讨免疫优化算法在物流配送中心选址问题中的应用&#xff0c;包括算法的基本原理、模型构建、算法实现及其在实…

华为配置旁挂二层组网隧道转发示例

配置旁挂二层组网隧道转发示例 组网图形 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件扩展阅读 业务需求 企业用户通过WLAN接入网络&#xff0c;以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff0c;不影响用户的业务使用。 组网需求 AC组…

GPIO控制和命名规则

Linux提供了GPIO子系统驱动框架&#xff0c;使用该驱动框架即可灵活地控制板子上的GPIO。 GPIO命名 泰山派开发板板载了一个40PIN 2.54间距的贴片排针&#xff0c;排针的引脚定义兼容经典40PIN接口。 在后续对GPIO进行操作前&#xff0c;我们需要先了解k3566的GPIO命名规则&a…

Sublime替换文本中的换行/回车符等特殊符号

1、快捷键打开查找替换&#xff08;windows&#xff09; Ctrl h 2、开启打开查找窗口最左侧的(.*)正则匹配功能&#xff0c;上图中箭头所指。 3、Find栏输出被替换的正则表达式&#xff0c;如\n 回车符&#xff0c;表达式会有颜色显示 4、Replace栏输入替换后的内容&#xff0…

第8章 对同步的硬件支持

为了保证并行程序执行的正确性和高效性&#xff0c;构建一个共享存储多处理器系统的硬件支持必须要解决缓存一致性、存储一致性和对同步原语的支持等问题。从软件的观点来看被广泛使用的同步原语包括锁、栅栏和点对点同步&#xff08;信号量&#xff09;。举例来说&#xff0c;…

用于将Grafana默认数据库sqlite3迁移到MySQL数据库

以下是一个方案&#xff0c;用于将Grafana数据迁移到MySQL数据库。 背景: grafana 默认采用的是sqlite3&#xff0c;当我们要以集群形式部署的时使用mysql较为方便&#xff0c;试了很多sqlite转mysql的方法要么收费,最后放弃。选择自己动手风衣足食。 目标: 迁移sqlite3切换…

Vue报错,xxx is defined #变量未定义

vue.js:5129 [Vue warn]: Error in v-on handler: "ReferenceError: count is not defined" 浏览器将这个变量 当做全局变量了&#xff0c;事实上它只是实例中的变量 加上this指定&#xff0c;是vue实例中的变量

进程链信任-父进程欺骗

文章目录 前记普通权限的父进程欺骗ShllCode上线进程提权基础进程提权注入 前记 父进程欺骗作用&#xff1a; 进程链信任免杀进程提权 检测&#xff1a; etw 普通权限的父进程欺骗 #include<stdio.h> #include<windows.h> #include <TlHelp32.h>DWORD …

跳过测试方法(测试类)(@Ignore)

1.什么情况下要使用跳过测试(测试类)方法? 写了一个测试方法但是不想执行 删掉该测试方法&#xff08;测试类&#xff09;注释该测试方法&#xff08;测试类&#xff09;使用Ignore注解 2.示例 2.1 必要工作 导入类库 import org.junit.Ignore; 2.2 使用Ignore注解跳过…

gin源码实战 day1

gin框架源码实战day1 Radix树 这个路由信息&#xff1a; r : gin.Default()r.GET("/", func1) r.GET("/search/", func2) r.GET("/support/", func3) r.GET("/blog/", func4) r.GET("/blog/:post/", func5) r.GET("/…