[toc]
基于微服务的思想,构建在 B2C 电商场景下的项目实战。
模块 | 名称 | 端口 | |
---|---|---|---|
common |
基础代码包 | HTTP 无 | |
user-service |
用户 HTTP 服务 | HTTP (见配置) | |
product-service |
商品 HTTP 服务 | HTTP (见配置) | |
order-service |
订单 HTTP 服务 | HTTP (见配置) | |
eureka-service |
订单 HTTP 服务 | HTTP (40000) | |
getway-service |
订单 HTTP 服务 | HTTP (40010) | |
redis-service |
缓存 HTTP 服务 | HTTP (见配置) | |
media-service |
图片 HTTP 服务 | HTTP (见配置) |
后端项目,目前的项目结构如下:
[-] xxx
├──[-] web-service-xxx-api // 提供 FEGIN 服务 API 。
├──[-] web-service-xxx-server // 提供 服务 Service 实现 + controller对外。
考虑到大多数公司,无需拆分的特别细,并且过多 JVM 带来的服务器成本。所以目前的设定是:
web-service-xxx-server
内嵌了controller
中运行。 也就是说,一个xxx-server
启动后,该微服务就完整启动了,getway是对所有微服务的一个聚合,统一对外。
框架 | 说明 | 版本 |
---|---|---|
Spring Boot | 应用开发框架 | 2.2.* |
Spring Cloud | 应用开发框架 | F版 |
MySQL | 数据库服务器 | 5.6 |
Druid | JDBC 连接池、监控组件 | 1.1.16 |
MyBatis | 数据持久层框架 | 3.5.1 |
Redis | key-value 数据库 | 暂未引入,等压测后,部分模块 |
Seata | 分布式事务中间件 | 0.5.1 |
springfox-swagger2 | API 文档 | 2.9.2 |
swagger-bootstrap-ui | Swagger 增强 UI 实现 | 1.9.3 |
一般来说,监控会有三种方式:
- 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