1749ccbe41 | ||
---|---|---|
admin-web | ||
common | ||
docs | ||
mobile-web | ||
ops | ||
order | ||
pay | ||
product | ||
promotion | ||
search | ||
system | ||
user | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
README.md | ||
pom.xml |
README.md
[toc]
前言
基于微服务的思想,构建在 B2C 电商场景下的项目实战。
-
「Talk is cheap. Show me the code」(屁话少说,放码过来)
我们看过很多技术文章,却依然不知道微服务该咋整。
-
功能图,和实际后端模块拆分,并不是绝对对应。
-
交流群:传送门
一起交流,Get 知识。
-
我们迫切希望更多的参与进来,可以加入「交流群」,一起骚聊。
近期计划
近期准备开发如下功能:
- 微信 H5 网页登陆
- 订单评价
- 商品品牌
- 短信接入
- 访问日志、错误日志接入
演示
艿艿:目前的开发者,都是后端出身。所以,一帮没有审美自觉的人,撸出来的前端界面,可能是东半球倒数第二难看。
迫切希望,有前端能力不错的小伙伴,加入我们,一起来完善「一个商城」。
啊啊啊!我好像做店铺装修功能。
H5 商城
管理后台
- 账号:yudaoyuanma
- 密码:yudaoyuanma
其它演示
下面,我们会提供目前用到的中间件的管理平台。
艿艿:考虑到大家可以看到更全的功能,所以一般提供 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 8080 | |
mobile-web |
【前端】商城 H5 | HTTP 8000 | |
system-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.4 |
MySQL | 数据库服务器 | 5.6 |
Druid | JDBC 连接池、监控组件 | 1.1.16 |
MyBatis | 数据持久层框架 | 3.5.1 |
MyBatis-Plus | Mybatis 增强工具包 | 3.1.1 |
Redis | key-value 数据库 | 暂未引入,等压测后,部分模块 |
Redisson | Redis 客户端 | 暂未引入,等压测后,部分模块 |
Elasticsearch | 分布式搜索引擎 | 6.7.1 |
Dubbo | 分布式 RPC 服务框架 | 2.7.1 |
RocketMQ | 消息中间件 | 4.3.2 |
Seata | 分布式事务中间件 | 0.5.1 |
Zookeeper | 分布式系统协调 | 3.4.9 作为注册中心 |
XXL-Job | 分布式任务调度平台 | 2.0.1 |
springfox-swagger2 | API 文档 | 2.9.2 |
swagger-bootstrap-ui | Swagger 增强 UI 实现 | 1.9.3 |
未来考虑引入
- 配置中心 Nacos
- 服务保障 Sentinel
- 网关 Soul
前端
商城 H5 和管理后台,分别采用了 Vue 和 React ,基于其适合的场景考虑。具体的,可以看看 《为什么 React 比 Vue 更适合大型应用?》 的讨论。
商城 H5
框架 | 说明 | 版本 |
---|---|---|
Vue | JavaScript 框架 | 2.5.17 |
Vant | Vue UI 组件库 | 3.13.0 |
管理后台
框架 | 说明 | 版本 |
---|---|---|
React | JavaScript 框架 | 16.7.0 |
Ant Design | React UI 组件库 | 3.13.0 |
监控
一般来说,监控会有三种方式:
- 1、Tracing ,我们采用 Apache SkyWalking
- 2、Logging ,我们采用 ELK
- 3、Metrics ,我们采用 Prometheus
框架 | 说明 | 版本 |
---|---|---|
SkyWalking | 分布式应用追踪系统 | 6.0.0 |
Prometheus | 服务监控体系 | 2.9.2 |
Alertmanager | 告警管理器 | 0.17.0 |
Grafana | 仪表盘和图形编辑器 | 0.17.0 |
其它
- Jenkins 持续集成
- Nginx 服务器
- Docker 容器
- Nginx
某种结尾
目前成员
- 小范
- 芋艿