开源项目 onemall 基于微服务的思想,构建在电商的项目实战

Posted Javachichi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开源项目 onemall 基于微服务的思想,构建在电商的项目实战相关的知识,希望对你有一定的参考价值。

Github 项目地址:
https://github.com/YunaiV/onemall

Gitee 项目地址:
https://gitee.com/zhijiantianya/onemall

基于微服务的思想,构建在 B2C 电商场景下的项目实战。 核心技术栈,是 Spring Boot + Dubbo 。 未来,会重构成 Spring Cloud Alibaba 。

前言

基于微服务的思想,构建在 B2C 电商场景下的项目实战。

  • 「Talk is cheap. Show me the code」(屁话少说,放码过来)

我们看过很多技术文章,却依然不知道微服务该咋整。

  • 这会是一个认真做的业务开源项目,目前 Java 代码 2w+ 行,不包括注释的情况下。
  • 整体的功能如下图:
开源项目 onemall 基于微服务的思想,构建在电商的项目实战


功能图,和实际后端模块拆分,并不是绝对对应。

  • 功能列表 - H5 商城
  • 功能列表 - 管理后台
  • 交流群:传送门 http://www.iocoder.cn/mall-user-group/?vip

一起交流,Get 知识。

  • 我们迫切希望更多的参与进来,可以加入「交流群」,一起骚聊。
  • 《Onemall 电商开源项目 —— 应用分层》http://www.iocoder.cn/Onemall/Application-layer

近期计划

近期准备开发如下功能:

  1. 微信 H5 网页登陆 @To0R
  2. 订单评价 @wang171776704
  3. 商品品牌 @黑子
  4. 短信接入 @小范
  5. 访问日志、错误日志接入
  6. 会员资料 @nengjie
  7. 拼团购买 @大太阳
  8. 部门管理 @Tprotect曦

演示

艿艿:目前的开发者,都是后端出身。所以,一帮没有审美自觉的人,撸出来的前端界面,可能是东半球倒数第二难看。

迫切希望,有前端能力不错的小伙伴,加入我们,一起来完善「一个商城」。

啊啊啊!我好像做店铺装修功能。

H5 商城

体验传送门

  • 演示:https://raw.githubusercontent.com/YunaiV/Blog/master/Mall/onemall-h5-min.gif

管理后台

体验传送门

  • 账号:yudaoyuanma
  • 密码:yudaoyuanma
  • 演示:https://raw.githubusercontent.com/YunaiV/Blog/master/Mall/onemall-admin-min.gif

其它演示

下面,我们会提供目前用到的中间件的管理平台。

艿艿:考虑到大家可以看到更全的功能,所以一般提供 admin 账号。所以,大家素质使用哟。

SkyWalking UI

  • 地址:http://skywalking-ui.shop.iocoder.cn:18099
  • 管理员账号:admin / admin

Grafana UI

  • 地址:http://grafana.shop.iocoder.cn:18099
  • 演示账号:yudaoyuanma / yudaoyuanma
  • 用于展示 Prometheus 收集的 Metrics 指标数据。

Dubbo Admin

  • 地址:http://dubbo-admin.shop.iocoder.cn:18099
  • 管理员账号:无需登陆

RocketMQ Console

  • 地址:http://rocketmq-console.shop.iocoder.cn:18099
  • 管理员账号:admin / RPsa2GHjTNs8pxEU

Sentinel Console

  • 地址:http://sentinel.shop.iocoder.cn:18099
  • 账号:sentinel / sentinel

XXL-Job Console

  • 地址:http://job-console.shop.iocoder.cn:18099
  • 管理员账号:admin / 233666

技术

搭建环境

搭建调试环境

架构图

TODO 此处应有一个架构图的装逼 JPG 图。

项目结构

模块名称端口admin-web【前端】管理后台HTTP 8080mobile-web【前端】商城 H5HTTP 8000system-application管理员 HTTP 服务HTTP 18083接口文档user-application用户 HTTP 服务HTTP 18082接口文档product-application商品 HTTP 服务HTTP 18081接口文档pay-application支付 HTTP 服务HTTP 18084接口文档promotion-application促销 HTTP 服务HTTP 18085接口文档search-application搜索 HTTP 服务HTTP 18086接口文档order-application订单 HTTP 服务HTTP 18088接口文档


后端项目,目前的项目结构如下:

[-] xxx
 ├──[-] xxx-application // 提供对外 HTTP API 。
 ├──[-] xxx-service-api // 提供 Dubbo 服务 API 。
 ├──[-] xxx-service-impl // 提供 Dubbo 服务 Service 实现。

考虑到大多数公司,无需拆分的特别细,并且过多 JVM 带来的服务器成本。所以目前的设定是:

  • xxx-service-impl 内嵌在 xxx-application 中运行。
  • MQ 消费者、定时器执行器,内嵌在 xxx-service-impl 中运行。

也就是说,一个 xxx-application 启动后,该模块就完整启动了。

技术栈

后端

框架说明版本Spring Boot应用开发框架2.1.4mysql数据库服务器5.6DruidJDBC 连接池、监控组件1.1.16MyBatis数据持久层框架3.5.1MyBatis-PlusMybatis 增强工具包3.1.1Rediskey-value 数据库暂未引入,等压测后,部分模块RedissonRedis 客户端暂未引入,等压测后,部分模块Elasticsearch分布式搜索引擎6.7.1Dubbo分布式 RPC 服务框架2.7.1RocketMQ消息中间件4.3.2Seata分布式事务中间件0.5.1Zookeeper分布式系统协调3.4.9 作为注册中心XXL-Job分布式任务调度平台
2.0.1springfox-swagger2API 文档
2.9.2swagger-bootstrap-uiSwagger 增强 UI 实现1.9.3

未来考虑引入

  • 配置中心 Nacos
  • 服务保障 Sentinel
  • 网关 Soul

前端

商城 H5 和管理后台,分别采用了 Vue 和 React ,基于其适合的场景考虑。具体的,可以看看 《为什么 React 比 Vue 更适合大型应用?》 的讨论。

商城 H5

框架说明版本Vuejavascript 框架2.5.17VantVue UI 组件库3.13.0

管理后台

框架说明版本ReactJavaScript 框架16.7.0Ant DesignReact UI 组件库3.13.0

监控

一般来说,监控会有三种方式:

  • 1、Tracing ,我们采用 Apache SkyWalking
  • 2、Logging ,我们采用 ELK
  • 3、Metrics ,我们采用 Prometheus

框架说明版本SkyWalking分布式应用追踪系统6.0.0Prometheus服务监控体系2.9.2Alertmanager告警管理器0.17.0Grafana仪表盘和图形编辑器0.17.0

其它

  • Jenkins 持续集成
  • nginx 服务器
  • Docker 容器
  • Nginx

某种结尾

目前成员

  • 小范
  • 芋艿

以上是关于开源项目 onemall 基于微服务的思想,构建在电商的项目实战的主要内容,如果未能解决你的问题,请参考以下文章

创业必备企业架构,可开发任意项目SpringCloud大型企业分布式微服务云架构源码

一款基于 Spring Cloud 的神仙私活项目,已开源,微服务也能搞定!2022 接私活必备!...

Longhorn发布:基于微服务的开源分布式块存储

互联网分布式微服务云平台规划分析--平台整体规划

互联网分布式微服务云平台规划分析--系统管理平台

互联网分布式微服务云平台规划分析--系统管理平台