企业应用中微服务架构的应用与管理
立即解锁
发布时间: 2025-08-25 01:04:33 阅读量: 2 订阅数: 8 


C# 8与.NET Core 3实战软件架构精髓
# 企业应用中微服务架构的应用与管理
## 1. 微服务编排的工具支持
Visual Studio 基于 Service Fabric 平台为微服务应用提供了特定的项目模板。借助该模板,用户能够定义、配置各类微服务,并将其部署到作为微服务编排器的 Azure Service Fabric 上。
### 1.1 Service Fabric 应用中的微服务类型
在 Service Fabric 应用里,可定义多种类型的微服务:
- **.NET Core 项目**:采用特定于 Azure Service Fabric 的微服务模型。
- **Guest 可执行文件**:为现有的 Windows 应用添加包装,使其成为能在 Azure Service Fabric 中运行的微服务。
- **容器应用**:允许在 Service Fabric 应用中添加任意 Docker 镜像。
- **其他选择**:提供模板,支持按照 Service Fabric 特定模式编写微服务代码。
### 1.2 创建微服务项目
在 Visual Studio 中选择云项目类型,即可找到 Service Fabric 应用。选定项目后,可从多种服务类型中挑选。填写所需信息后,Visual Studio 会创建两个项目:一个包含应用整体配置信息的应用项目,以及一个包含所选服务代码和特定配置的服务项目。若要为应用添加更多微服务,可右键点击应用项目,选择“添加”|“新的 Service Fabric 服务”;若右键点击解决方案并选择“添加”|“新项目”,则会创建一个新的 Service Fabric 应用,而非向现有应用添加新服务。
### 1.3 不同服务类型的配置要求
#### 1.3.1 Guest 可执行文件
若选择 Guest 可执行文件,需提供以下信息:
- 包含主可执行文件及所有必要文件的文件夹,可选择在项目中创建该文件夹副本或直接链接到现有文件夹。
- 主可执行文件。
- 传递给该可执行文件的命令行参数。
- 在 Azure 上用作工作文件夹的文件夹,可选择包含主可执行文件的文件夹(CodeBase)、Azure Service Fabric 打包整个微服务的文件夹(CodePackage)或名为 Work 的新子文件夹。
#### 1.3.2 容器
若选择容器,需提供以下信息:
- 私有 Azure 容器注册表中 Docker 镜像的完整名称。
- 用于连接 Azure 容器注册表的用户名,密码需在自动创建的应用配置文件的 RepositoryCredentials XML 元素中手动指定。
- 可访问服务的端口(主机端口)以及主机端口需映射到的容器内端口(容器端口),容器端口必须与 Docker 文件中暴露并用于定义 Docker 镜像的端口一致。之后,可能还需进行一些手动配置,以确保 Docker 应用正常运行。
### 1.4 .NET Core 原生 Service Fabric 服务
存在五种类型的 .NET Core 原生 Service Fabric 服务,其中 Actor 服务模式暂不详细讨论。其余四种模式与是否使用 ASP.NET Core 作为主要交互协议以及服务是否有内部状态有关。Service Fabric 允许微服务使用分布式队列和字典,这些数据结构对声明它们的微服务的所有实例全局可用,不受运行硬件节点的限制。
状态和无状态模板主要在配置方面存在差异。所有原生服务类都需指定两个方法:
```csharp
protected override IEnumerable<ServiceReplicaListener>
CreateServiceReplicaListeners()
protected override async Task RunAsync(CancellationToken cancellationToken)
```
- `CreateServiceReplicaListeners` 方法:指定微服务用于接收消息的监听器列表以及处理这些消息的代码。监听器可使用任何协议,但需指定相关套接字的实现。
- `RunAsync` 方法:包含用于异步运行由接收到的消息触发的任务的后台线程代码,可在此构建运行多个托管服务的主机。
ASP.NET Core 模板遵循类似模式,但使用基于 ASP.NET Core 的唯一监听器,且无需实现 `RunAsync` 方法,因为后台任务可在 ASP.NET Core 内部启动。不过,可向 Visual Studio 创建的 `CreateServiceReplicaListeners` 实现返回的监听器数组中添加更多监听器,也可自定义 `RunAsync` 方法。
## 2. 管理微服务所需的工具
在 CI/CD 周期中有效处理微服务,需要一个私有 Docker 镜像注册表和一个先进的微服务编排器,该编排器应具备以下功能:
- 在可用硬件节点上分配和负载均衡微服务。
- 监控服务的健康状态,在硬件或软件故障发生时替换故障服务。
- 记录并展示分析数据。
- 允许设计者动态更改诸如分配给集群的硬件节点、服务实例数量等要求。
### 2.1 在 Azure 中定义私有 Docker 注册表
在 Azure 中定义私有 Docker 注册表十分简便,具体步骤如下:
1. 在 Azure 搜索栏中输入“容器注册表”,选择“容器注册表”。
2. 在出现的页面上点击“添加”按钮。
3. 填写注册表信息:
- 所选名称用于组成注册表的 URI,格式为 `<name>.azurecr.io`。
- 可指定订阅、资源组和位置。
- 通过 SKU 下拉菜单选择不同级别的服务,这些服务在性能、可用内存和其他辅助功能方面存在差异。
4. 若启用管理员用户,系统将创建一个用户名为 `<name>` 的管理员用户,密码由门户自动生成;否则,用户将使用
0
0
复制全文
相关推荐





