ABP VNext微服务架构系列(二)组件-Apollo

6 篇文章 0 订阅
1 篇文章 0 订阅

ABP VNext实操落地微服务架构系列(二)相关组件-Apollo

一 、Apollo配置中心的介绍、搭建及使用

1.介绍

  1. Apollo配置中心包括三个重要组成部分,均独立部署,分别是:portal、adminservice、configservice,portalconfigservice都有自己相应独立的数据库,adminservice和configservice是同一个
  2. Portal–>提供一个UI界面供用户操作相应的配置,替代对项目中appsettings.xxx.json文件的维护
  3. AdminService–>将用户通过Portal修改或者新增的配置通知到相关订阅的服务,以达到配置更新
  4. ConfigService–>将用户通过Portal修改或者新增的配置落地到数据库中
  5. 总结:总的来说就是将咱们配置文件中的静态数据通过一个UI来展示,并且可以实现动态热更新,而且程序不需要重启,非常方便使用和维护.暂时就大概这么介绍一下,后面会针对Apollo单独出一个系列的文章来细细介绍一下. 官方地址: https://github.com/ctripcorp/apollo.

2.搭建(本文以Linux-Docker为例,单环境)

  1. 当然生产咱们是不会装Docker里面的,只是为了方便,所以本文介绍Docker的部署,非容器的部署方式以后会出一个系列的文章来介绍,如果没有Docker使用经验的筒子们建议学习一下,当然我也会出Docker相关的系列文章.
  2. 部署
//数据库准备
1.Portal : https://github.com/ctripcorp/apollo/blob/master/scripts/sql/apolloportaldb.sql
2.ConfigService: https://github.com/ctripcorp/apollo/blob/master/scripts/sql/apolloconfigdb.sql

// 拉取镜像
docker pull apolloconfig/apollo-potal:1.7.0 //Portal
docker pull apolloconfig/apollo-adminservice:1.7.0 //AdminService
docker pull apolloconfig/apollo-configservice:1.7.0 //ConfigService

//运行容器

//portal
docker run -d 
--name apollo_portal //容器名称
-p 8070:8070 //映射端口
-e SPRING_DATASOURCE_URL="jdbc:mysql://xxxx:3306/ApolloPortalDB?characterEncoding=utf8"  //数据库连接
-e SPRING_DATASOURCE_USERNAME=root  //数据库登录名
-e SPRING_DATASOURCE_PASSWORD=123456 //数据库密码
-v /usr/local/docker/apollo/prod/portal/logs:/opt/logs //挂载日志
apolloconfig/apollo-portal:1.7.0 //镜像

//config-service
docker run -d 
--name apollo_config 
-p 8080:8080 
-e SPRING_DATASOURCE_URL="jdbc:mysql://xxxxx:3306/ApolloConfigDB?characterEncoding=utf8" 
-e SPRING_DATASOURCE_USERNAME=root 
-e SPRING_DATASOURCE_PASSWORD=123456
-e eureka_instance_ip-address=xxxx  //这个是注册中心的ip  取当前ip即可,除非独立部署了注册中心 
-v /usr/local/docker/apollo/prod/configservice/logs:/opt/logs 
apolloconfig/apollo-configservice:1.7.0

//admin-service
docker run -d 
--name apollo_admin  
-p 8090:8090 
-e SPRING_DATASOURCE_URL="jdbc:mysql://xxxx:3306/ApolloConfigDB?characterEncoding=utf8" 
-e SPRING_DATASOURCE_USERNAME=root 
-e SPRING_DATASOURCE_PASSWORD=123456
-e eureka_instance_ip-address= xxxx
-v /usr/local/docker/apollo/prod/adminservice/logs:/opt/logs 
apolloconfig/apollo-adminservice:1.7.0
  1. 部署成功之后即可通过 http://potal-容器宿主机ip:8070 来访问UI了. 默认账号密码是
    账号: apollo
    密码: admin

  2. 然后就可以愉快的使用Apollo了.

3.使用

  1. 点击创建项目
    在这里插入图片描述
  2. 列表里面找到刚刚创建的项目,开始添加第一个配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 至此,你已经添加了一个项目并且创建了第一个配置

  2. 创建一个空的Webapi项目,并且Nuget引用apollo客户端包

在这里插入图片描述

  1. 在配置文件中加入apollo的相关配置,AppId是上面创建的Appid,是一个项目的唯一标识,MetaServer和ConfigServer填的是ConfigService的地址,数组是因为注册中心的集群.
    在这里插入图片描述

  2. Program文件中加入一下代码:

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((hostingContext, builder) =>
            {
                builder.AddApollo(builder.Build().GetSection("Apollo")) //配置apollo
                       .AddDefault();//添加默认的 application命名空间
            })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
  1. 让咱们可以在Startup文件中开始验证Apollo的配置是否生效了.

在这里插入图片描述

  1. 并且在Apollo-Portal你会发现已经有一个实例连接,其实就是你本身.
    在这里插入图片描述

  2. 因为作者为了方便,是在Configure方法做的打印,大家可以完整的创建一个Api,然后在控制器中**注入IConfiguration对象**,在程序运行的状态下对Apollo的值进行修改发布,你会发先配置会自动的热更新.

二.总结

Apollo在我们微服务架构中是一个不可缺少的组件,当服务数量众多,配置也是一个非常庞大的数量.
而Apollo不仅帮我们简化了配置的维护,还能实现集群多环境部署,比如测试环境,仿真环境,生产环境
还支持配置共享、回滚发布、灰度等非常优秀的功能
它的功能远不止如此,还需要大家自己亲手操作使用才会有相应的经验.并不是一篇两篇博客就能弄明白的.
本文对Apollo的介绍也不是非常的详细,后续会出独立的Apollo系列的文章
**如果有不对的地方欢迎指正**
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值