尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

实战部署指南:10分钟跑通 GPMall 全链路电商平台微服务架构

实战部署指南:10分钟跑通 GPMall 全链路电商平台微服务架构 实战部署指南10分钟跑通 GPMall 全链路电商平台微服务架构【免费下载链接】gpmall【咕泡学院实战项目】-基于SpringBootDubbo构建的电商平台-微服务架构、商城、电商、微服务、高并发、kafka、Elasticsearch项目地址: https://gitcode.com/gh_mirrors/gp/gpmallGPMall咕泡商城是基于 SpringBoot Dubbo 构建的全链路电商平台覆盖商品浏览、搜索、购物车、下单、支付、评价的完整交易链路。项目由咕泡学院作为 Java 架构课程实战项目维护业务模块划分尽量贴合互联网公司的真实架构体系适合用来学习微服务拆分、BFF 网关聚合和高并发设计。项目全景GPMall 微服务电商平台的架构与目录结构解析GPMall 的架构思路是经典的两层结构底层是按领域拆分的 Dubbo 微服务用户、商品、订单、支付、评论、营销、搜索上层是面向前端的 BFFBackend For Frontend即服务聚合层负责把多个微服务的结果聚合成前端要用的接口前端由 Vue 独立部署。核心技术栈分类技术后端框架SpringBoot 2.1.6、Dubbo 2.7.3、MyBatis服务注册发现Zookeeper数据存储MySQL、Redis、Druid 连接池搜索Elasticsearch 6.x Logstash 数据同步消息队列Kafka稳定性组件Sentinel、自研分布式锁 commons-lock前端Vue、Element UI、axios、Mock.js部署Docker / Docker Compose项目目录结构及各模块职责gpmall/ ├── gpmall-front/ # Vue 前端商城首页/购物车/订单页面 ├── gpmall-parent/ # 父 pom统一管理所有依赖版本 ├── gpmall-commons/ # 公共组件分布式锁、MQ、工具类 ├── user-service/ # 用户 Dubbo 服务注册/登录/地址20880 ├── shopping-service/ # 商品/购物车/首页 Dubbo 服务20881 ├── order-services/ # 订单 Dubbo 服务20882 ├── pay-service/ # 支付 Dubbo 服务20883 ├── comment-service/ # 商品评论 Dubbo 服务20885 ├── coupon-service/ # 营销优惠券服务 ├── search-service/ # 商品搜索服务对接 ES ├── gpmall-shopping/ # 商品/购物车 BFF 网关8081 ├── gpmall-user/ # 用户 BFF 网关8082 ├── gpmall-cashier/ # 收银台 BFF8083 └── db_scrpit/ # MySQL 建库脚本图1GPMall 全链路电商平台的微服务架构图展示 BFF 网关与 Dubbo 服务、中间件的通信关系环境准备从数据库导入到服务启动的完整部署步骤系统要求JDK 1.8、Maven 3.5Node.js前端构建、Python 2.7旧版 webpack 依赖Docker推荐用于一键拉起中间件MySQL 5.7、Redis、Zookeeper、Kafka、Elasticsearch 按下面顺序操作即可跑起来1. 克隆项目代码git clone https://gitcode.com/gh_mirrors/gp/gpmall cd gpmall2. 用 Docker Compose 拉起全部中间件项目根目录已提供编排文件包含 MySQL、Redis、Zookeeper、Kafka、ES、Kibanadocker-compose up -d3. 配置 hosts 并导入数据库脚本。项目各服务的 MySQL/Redis/Kafka 等地址统一写成 host 域名所以要先在/etc/hosts或C:\Windows\System32\drivers\etc\hosts中添加以下映射指向中间件所在机器的 IP127.0.0.1 mysql.gpmall.com127.0.0.1 zk.gpmall.com127.0.0.1 kafka.gpmall.com127.0.0.1 redis.gpmall.com然后导入建库脚本脚本内含gpmall库的全部表和演示数据mysql -u root -p db_scrpit/gpmall.sql4. 安装父 pom 和公共组件到本地仓库后续所有服务都依赖它们mvn clean install -f gpmall-parent/pom.xml mvn clean install -f gpmall-commons/pom.xml -Dmaven.test.skiptrue5. 安装各微服务的 api 模块并启动。*-api模块定义 Dubbo 接口契约被其他服务引用需先install到本地仓库。然后按依赖顺序启动user-service → order-services → shopping-service → search-service → comment-service最后启动三个 BFFgpmall-shopping、gpmall-user、gpmall-cashier。各服务配置在src/main/resources/application.ymldev/test/prod 三套 profile。6. 启动 Vue 前端开发模式下请求会代理转发到后端 BFFcd gpmall-front npm install npm run dev✅ 此时浏览器访问前端页面即可看到由后端真实数据渲染的商城首页。核心功能走查从商城首页到订单支付的完整链路商城首页轮播与运营板块渲染首页由顶部导航、轮播图和多个官方精选配件运营板块组成。首页内容不是写死的而是后台配置的展示板块BFF 层gpmall-shopping8081聚合shopping-service的IHomeService返回轮播与板块数据。图2GPMall 电商平台商城首页展示轮播图与官方精选配件运营板块商品搜索与列表Elasticsearch 全文检索首页右上角的搜索框由search-service支撑商品数据通过 Logstash 从 MySQL 全量/增量同步到 Elasticsearch支持综合排序、价格区间过滤。关键实现在search-service/search-provider/src/main/java/com/gpmall/search/services/ProductSearchServiceImpl.java。图3GPMall 电商平台全部商品列表页支持综合排序与价格区间筛选分类导航与商品详情商品按手机 / 官方配件 / 服饰箱包等分类导航浏览分类数据来自shopping-service的IProductCateService。详情页聚合商品主图、价格、规格与评价信息。图4GPMall 电商平台官方精选配件区域按分类展示商品与价格用户、购物车与订单交易主链路用户在gpmall-user8082完成注册登录地址维护走IAddressService加购、勾选、结算走shopping-service的ICartService确认订单时 BFF 调用order-services创建订单再经gpmall-cashier8083调用pay-service完成支付。整条链路涉及 5 个微服务协作是理解 Dubbo 服务间调用的最佳切面。工程亮点3个值得参考的微服务设计决策订单处理Pipeline 执行引擎下单流程涉及校验、库存、营销优惠、落库等多个环节如果全写在一个方法里会变成无法维护的大泥球。order-services引入了基于 Pipeline 模式的执行引擎biz/factory负责组装 pipelinebiz/handler存放每个具体业务节点biz/context传递上下文。需要加一步新校验时只需新增 handler 并挂到 pipeline不改动主流程。代码位置order-services/order-provider/src/main/java/com/gpmall/order/biz/。分布式锁注解式 API SPI 扩展点高并发抢券、扣库存场景必须有分布式锁。gpmall-commons/commons-lock把锁抽象成一行注解CustomerLock(lockKey #id)底层默认基于 Redis并借鉴 Dubbo 的 SPI 机制预留扩展点——实现DistributedLock接口再在META-INF/lock/下注册一行 keyvalue 就能切换锁实现比如换成 Zookeeper 锁。使用方式见gpmall-commons/commons-lock/README.md。搜索数据同步Logstash 全量 增量双通道MySQL 是交易主库但LIKE模糊搜索扛不住流量。search-service的解法是Logstash 的 JDBC Input 定时从 MySQL 拉取商品数据全量初始化 按updated时间戳增量追踪写入 ESKibana 负责排查索引问题search-service 只负责查询。完整搭建步骤见wiki/搜索服务.md。图5GPMall 搜索模块架构图Logstash 从 MySQL 全量/增量同步数据到 Elasticsearch下一步定制你的电商平台PRD/目录存放了评论模块等产品需求文档wiki/目录有搜索服务、环境配置等帮助文档想贡献代码可参考wiki/如何pull request.md的提交流程从完善文档或认领一个 PRD 需求开始即可上手。【免费下载链接】gpmall【咕泡学院实战项目】-基于SpringBootDubbo构建的电商平台-微服务架构、商城、电商、微服务、高并发、kafka、Elasticsearch项目地址: https://gitcode.com/gh_mirrors/gp/gpmall创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表