zoukankan      html  css  js  c++  java
  • 携程Apollo统一配置管理中心

    # Apollo统一配置管理中心
    
    [TOC]
    
    ## 可用性说明
    
    | 场景                  | 影响                               | 降级                                                         | 原因                                                         |
    | --------------------- | ---------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
    | 某台配置服务下线      | 无影响                             |                                                              | 配置服务无状态,客户端重连其他配置服务                       |
    | 所有配置服务下线      | 客户端无法读取最新配置,门户无影响 | 客户端重启时,可以读取本地缓存配置文件。如果是新扩容的机器,可以从其他机器上获取已缓存的配置文件。 |                                                              |
    | 某台Admin Service下线 | 无影响                             |                                                              | Admin  Service无状态,Portal重连其他Admin Service            |
    | 所有管理服务下线      | 客户端无影响,门户无法更新配置     |                                                              |                                                              |
    | 某台Portal下线        | 无影响                             |                                                              | 门户网站通过SLB绑定多台服务器,重试后可以的服务器            |
    | 全部门户下线          | 客户端无影响,门户无法更新配置     |                                                              |                                                              |
    | 某数据中心下线        | 无影响                             |                                                              | 数据中心部署,数据完全同步,Meta  Server/Portal域名通过SLB自动切换到另外的数据中心 |
    | 数据库地图机          | 客户端无影响,门户无法更新配置     | 配置服务开启配置缓存后,对配置的读取数据库进程影响           |                                                              |
    
    ## 官方文档
    
    https://www.apolloconfig.com/#/zh/usage/apollo-user-guide
    
    ## 快速安装
    
    1. 准备一下软件/环境
    
       1. [Java](http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html) => JDK 1.8+
       2. [MySQL](https://www.mysql.com/downloads/) => 5.6.6+
       3. [Gitbash](https://gitforwindows.org/)
       4. [Apollo QuickStart](https://github.com/nobodyiam/apollo-build-scripts)
    
    2. 安装Java JDK, MySQL与Git
    
    3. 解压缩QuickStart,在Mysql库中执行**sql文件夹中的两个.sql文件**。会生成两个Apollo所需的两个数据库
    
    4. 将demo.sh中数据库的信息改为自己的mysql,主要是**url**、**username**与**password**
    
       ```go
       # apollo config db info
       apollo_config_db_url=jdbc:mysql://192.168.80.70:3306/ApolloConfigDB?characterEncoding=utf8
       apollo_config_db_username=root
       apollo_config_db_password=213224591
       
       # apollo portal db info
       apollo_portal_db_url=jdbc:mysql://192.168.80.70:3306/ApolloPortalDB?characterEncoding=utf8
       apollo_portal_db_username=root
       apollo_portal_db_password=213224591
       ```
    
    5. 通过以下命令启动(切换到quickstart的目录中),后续可以将其作为Windows服务
    
       ```go
       cmd>cd C:Apolloapollo-build-scripts-master
       cmd>demo.sh start  
       ```
    
       启动后会最终显示以下信息:
    
       ```go
       ==== starting service ====
       Service logging file is ./service/apollo-service.log
       Started [3099]
       Waiting for config service startup.......
       Config service started. You may visit http://localhost:8080 for service status now!
       Waiting for admin service startup....
       Admin service started
       ==== starting portal ====
       Portal logging file is ./portal/apollo-portal.log
       Started [4071]
       Waiting for portal startup......
       Portal started. You can visit http://localhost:8070 now!
       ```
    
    6. 配置中心管理地址:http://localhost:8070,默认账号apollo,密码admin
    7. 创建自己的项目,APPId是和应用程序关联的主要标识。
    8. 创建命名空间(Namespace),选择公用(public)即可。
    9. 新增配置项,例:DocumentTitle,值为【测试文档】。
    10. 点击提交、发布。
    
    ## 应用程序连接Apollo
    
    1. 安装**Com.Ctrip.Framework.Apollo.Configuration**程序包。
    
    2. 修改appsettings.json,添加apollo节点
    
       ```json
       "apollo": {
           "AppId": "Cajer",    // 刚才创建的AppId
           "MetaServer": "http://192.168.80.70:8080"    // 更改为刚才部署环境的IP
       }
       ```
    
    3. 更改Program.cs
    
       ```c#
       public static IHostBuilder CreateHostBuilder(string[] args) =>
           Host.CreateDefaultBuilder(args)
           .ConfigureAppConfiguration((hostingContext, builder) =>
           {
               builder
               .AddApollo(builder.Build().GetSection("apollo"))
               .AddDefault()
               .AddNamespace("TEST1.application");  // 部门.命名空间
           })
           .ConfigureWebHostDefaults(webBuilder =>
           {
               webBuilder.UseStartup<Startup>();
           });
       ```
    
    4. 将系统中读取配置文件的代码,改为Apollo中配置的键即可。例:
    
       ```c#
       Appsettings.app(new string[] { "AppSettings", "DocumentTitle" }).ToString()
       // 改为
       Configuration.GetValue<string>("DocumentTitle")
       ```
    
    5. 运行项目查看**DocumentTitle**的值,appsettings.json中的值会被Apollo中的覆盖。
    6. 修改Apollo中配置的值并发布,重新刷新页面,发现系统中会立即生效。
    7. 中途Apollo服务中断后,程序会加载最后一次获取的键值对来运行,不会发生异常。

    ----搬砖,砖来自     

  • 相关阅读:
    剑指offer(18)二叉搜索树的后续遍历
    剑指offer(17)层次遍历树
    剑指offer(16)栈的压入、弹出序列
    剑指offer(15)
    剑指offer(14)
    剑指offer(13)
    剑指offer(12)
    剑指offer(11)
    2020 年 11 月编程语言排行榜,Python 势如破竹,超越 Java?
    Python 除了 time.sleep,你还有一个暂停代码的方法
  • 原文地址:https://www.cnblogs.com/provedl/p/15016505.html
Copyright © 2011-2022 走看看