8. .NET5微服务中的Apollo配置
发布日期:2021-05-10 05:01:33 浏览次数:27 分类:精选文章

本文共 1615 字,大约阅读时间需要 5 分钟。

Apollo配置管理平台简要指南

Apollo 是携程框架部门研发的配置管理平台,旨在帮助开发者高效统一管理微服务程序中的配置项。随着系统模块化和依赖项增加,配置管理是一个逐渐复杂的任务。通过 Apollo,可以集中化管理不同环境、不同集群的配置,并实现实时配置推送,这大大提升了系统维护效率。

Apollo的功能

解决的痛点

  • 配置管理复杂性: 随着中间件和服务数量增加,配置项呈指数级增长,如何统一管理成为难题。
  • 动态配置推送: 当配置修改时,希望能够快速生效,而不是 manual restart 或 redeploy。
  • 权限与流程控制: 配置修改需遵循规范权限和流程,确保维护安全和规范。

功能亮点

  • 集中管理: 将所有环境的配置集中管理,简化升级流程。
  • 实时推送: 修改配置后直接向应用端推送,减少需要 humans review 的时间。
  • 统一规范: 支持权限控制、审批流程,确保配置变更合规。

Apollo 安装与部署

序言

Apollo 的部署需注意环境配置,推荐使用 Docker 一键部署方案,降低部署复杂度。

使用 Docker 部署

  • 获取源码: 从GitHub下载 Apollo 源码包,解压后找到具体部署目录。
  • 启动 Docker: 使用 docker-compose 启动 Apache for Apollo。
    docker-compose up
  • 检查镜像: 下载完毕后,执行 docker images 查看镜像状态。
  • 查看容器状态: 用 docker ps -a 查看所有容器状态,确认运行正常。
  • **配置端口:
    • 8070:后台管理系统地址。
    • 8080:外部服务接口端口。
  • 登录与使用

    • 初次登录: 使用账户ukesm-p@Ctrip /apollo 登录系统。
    • 创建项目: 初始化项目前需设置 AppId,作为项目唯一标识。
    • 配置项管理: 将数据库连接字符串等配置项统一存储于 Apollo,方便后续管理和版本控制。

    .NET5 接入 Apollo

    配置 NuGet 包

    在项目中添加参考,确保版本兼容:

    配置 appsettings.json

    在项目根目录添加:

    "Apollo": {
    "AppId": "你的项目ID",
    "Env": "开发环境标识",
    "MetaServer": "http://localhost:8080",
    "ConfigServer": ["http://localhost:8080"]
    }

    修改 Program.cs

    在 IHostBuilder 中配置 Apollo:

    Host.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration((hostingContext, builder) =>
    {
    builder.AddApollo(builder.Build().GetSection("Apollo"))
    .AddDefault();
    })

    操作示例

    • 数据库配置: 通reau 取值方式演变:
      //旧写法
      options.UseMySQL(Configuration.GetConnectionString("Mysql"));
      //新写法
      options.UseMySQL(Configuration.GetValue
      ("MysqlConnectionString"));

    注意事项

    • 配置结果 cache: 确保缓存机制与 Apollo 配置管理兼容。
    • 安全权限: 确保使用适当的权限级别,避免敏感配置暴露。
    • 测试环境配置: 建议在各个环境(DEV, TEST, PROD)中分别配置 Apollo 项目参数。

    以上只是 Apollo 使用的一个常见场景,具体使用可按需扩展配置,详细文档可参考 GitHub仓库或官方文档。

    上一篇:3.抽象工厂(AbstractFactory)
    下一篇:7. .NET5微服务程序使用Redis

    发表评论

    最新留言

    表示我来过!
    [***.240.166.169]2025年05月03日 20时37分57秒