【ABP框架实践】从零构建微服务解决方案 - 准备工作

本文写于 2023 年,示例依赖的 ABP、.NET、Docker Compose 等工具版本可能已经更新。实际搭建时,请结合当前官方文档调整版本和命令。

eShopOnAbp 是一个基于 ABP 框架的微服务解决方案,包含电商系统的基本功能。这个项目目前已经停止维护,但它在微服务拆分、目录组织和集成方式上的设计,依然很值得参考。它主要用于演示如何使用 ABP 框架构建微服务解决方案,代码结构和设计思路都很有参考价值,但并不适合直接拿来作为业务项目使用。因此,本文会从零开始,使用 ABP 框架创建一个新的解决方案,再逐步添加功能,最终实现一套自己的微服务解决方案。

开发环境

工欲善其事,必先利其器。在开始之前,需要先准备好开发环境。无特殊说明时,示例会直接使用当时的最新版本;具体安装方法可以参考各工具的官方文档。

创建 Docker Compose 文件

上面的基础工具准备好之后,可以使用 Docker Compose 创建剩余的开发环境。当然,也可以用其他方式安装这些组件;这里选择 Docker Compose,主要是为了快速搭建一套可重复启动的本地环境。需要准备的组件包括:

  • RabbitMQ
  • Redis
  • PostgreSQL
  • pgAdmin(可选,用于管理 PostgreSQL 数据库)

新建一个文件夹,例如 microservice-solution,然后在 microservice-solution/etc/docker 目录下创建 docker-compose.infrastructure.yml 文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
services:
rabbitmq:
container_name: rabbitmq
image: rabbitmq:management-alpine
volumes:
- rabbitmq_data:/var/lib/rabbitmq
networks:
- myprojectname-network

redis:
container_name: redis
image: redis:alpine
volumes:
- redis_config:/usr/local/etc/redis/data
- redis_data:/data
networks:
- myprojectname-network

postgres-db:
container_name: postgres-db
image: postgres:latest
volumes:
- postgres_config:/var/opt/postgres
- postgres_data:/var/lib/postgresql/data
networks:
- myprojectname-network

pgadmin:
container_name: pgadmin
image: dpage/pgadmin4:latest
volumes:
- pgadmin_data:/var/lib/pgadmin
networks:
- myprojectname-network

volumes:
rabbitmq_data:
redis_data:
redis_config:
postgres_data:
postgres_config:
pgadmin_data:

networks:
myprojectname-network:
external: true

继续在 microservice-solution/etc/docker 目录下创建 docker-compose.infrastructure.override.yml 文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
services:
rabbitmq:
ports:
- 5672:5672
- 15672:15672

redis:
ports:
- 6379:6379

postgres-db:
ports:
- 5432:5432
environment:
POSTGRES_PASSWORD: "myPassw0rd"

pgadmin:
ports:
- 5050:80
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:[email protected]}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}

创建运行脚本

microservice-solution/etc/docker 目录下创建 up.ps1down.ps1 文件,内容如下:

up.ps1:

1
2
docker network create myprojectname-network
docker compose -f docker-compose.infrastructure.yml -f docker-compose.infrastructure.override.yml up -d

down.ps1:

1
2
docker compose -f docker-compose.infrastructure.yml -f docker-compose.infrastructure.override.yml down
docker network rm myprojectname-network

之后只需要运行 up.ps1 脚本即可启动所有开发环境,运行 down.ps1 脚本即可关闭它们。

运行效果

在 pgAdmin 中管理 PostgreSQL 数据库

pgAdmin 是一个用于管理 PostgreSQL 数据库的工具。在上面的 docker-compose.infrastructure.override.yml 文件中,已经把 pgAdmin 的端口映射到了 5050。因此启动开发环境后,可以通过 http://localhost:5050 访问 pgAdmin。使用默认账号密码登录后,可以在右下角选择 Chinese (Simplified) 切换为中文界面。

pgadmin

登录成功后,在首页点击 添加服务器,并在弹出的对话框中填写以下信息:

  • 名称:随便填写
  • 主机:postgres-db
  • 端口:5432
  • 用户名:postgres
  • 密码:myPassw0rd

添加服务器

添加成功后,就可以在 pgAdmin 中管理 PostgreSQL 数据库了。

参考资料

文章作者: Ender
文章链接: https://www.fengyeju.net/archives/building-microservice-with-abp-framework-part-1-getting-started
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 枫叶居