前言

配置中心伴随着这几年分布式系统演变和微服务架构的兴起,已经成为必不可少的需求之一。试下一下如果哪天公司的所有应用服务,从公司服务器迁移到云服务,成千上万的配置,修改起来是多么耗时费劲的事(我们公司就是……)。

配置中心主要有以下特点:

  • 配置动态化
  • 管理集中化

修改配置不需要重新发布配置文件,而且可以复用,同一个的配置只需要修改一次,省时省力。通过后台统一管理,修改、查看,部分产品还支持配置版本管理。

Why Apollo

  • 国产
  • 开源
  • 功能强大

首先是支持国产,同时在遇到问题也可以良好的和国人交流沟通。其次功能很全,满足公司的所有需要,不需要二次开发。

优势

阿波罗的功能非常强大,几乎满足一般的分布式系统的使用要求,重点主要如下:

  • 配置多维度

    • application (应用)
    • environment (环境)
    • cluster (集群)
    • namespace (命名空间)
  • 版本发布管理
    • 历史查看
    • 版本回滚
  • 后台权限管理
    • 发布审核
    • 操作审计
  • 更新机制
  • 客户端监控
    • 客户端实例查看
    • 配置实用实例查看

缺点

强大的功能,必然伴随少许缺点:

  • 一定的学习成本
  • 部署繁杂

官方文档说明部署简单,我认为不然,依赖jdk1.8,(我试了1.9部署Quick Start版本失败了),mysql,脚本需要自己导入,在windows平台还需要gitbash。

总的来说利大于弊,还是值得去使用的。

准备

  • jdk18+

  • gitbash

  • mysql 5.7.11+

  • Quick Start版本的阿波罗

部署

注意jdk的环境变量配置

导入脚本

在刚下载apollo-build-scripts里sql目录下的两个脚本导入到mysql里

apolloconfigdb.sql

apolloportaldb

修改项目数据库配置

编辑demo.sh,在apollo-build-scripts文件夹找到下面的配置项,修改为对应的数据库信息

# apollo config db info
apollo_config_db_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=root
apollo_config_db_password=123456789# apollo portal db info
apollo_portal_db_url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=root
apollo_portal_db_password=123456789

启动

启动

切换到刚下载的apollo-build-scripts目录下。 注意是git方式的执行,跟cmd不一样的

/c/apollo-build-scripts-master/demo.sh start

==== starting service ====
Service logging file is ./service/apollo-service.log
Started [10768]
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 [10846]
Waiting for portal startup......
Portal started. You can visit http://localhost:8070 now!

如果控制台输出以上为启动成功

初体验

输入浏览器输入http://localhost:8070

账号:apollo

密码:admin

可以见到默认的有一个Sample App项目,点进去,就可以见到下图

.net客户端使用

1.1 必选设置

Apollo客户端依赖于AppIdEnvironment等环境信息来工作,所以请确保阅读下面的说明并且做正确的配置:

1.1.1 AppId

AppId是应用的身份信息,是从服务端获取配置的一个重要信息。

请确保在app.config或web.config有AppID的配置,其中内容形如:

<?xml version="1.0"?>
<configuration> <appSettings> <!-- Change to the actual app id --> <add key="AppID" value="SampleApp"/> </appSettings> </configuration>

注:app.id是用来标识应用身份的唯一id,格式为string。

1.1.2 Environment

Apollo支持应用在不同的环境有不同的配置,所以Environment是另一个从服务器获取配置的重要信息。

Environment通过配置文件来指定,文件位置为C:\opt\settings\server.properties,文件内容形如:

env=DEV

目前,env支持以下几个值(大小写不敏感):

  • DEV

    • Development environment
  • FAT
    • Feature Acceptance Test environment
  • UAT
    • User Acceptance Test environment
  • PRO
    • Production environment

1.1.3 服务地址

Apollo客户端针对不同的环境会从不同的服务器获取配置,所以请确保在app.config或web.config正确配置了服务器地址(Apollo.{ENV}.Meta),其中内容形如:

<?xml version="1.0"?>
<configuration> <appSettings> <!-- Change to the actual app id --> <add key="AppID" value="SampleApp"/> <!-- Should change the apollo config service url for each environment --> <add key="Apollo.DEV.Meta" value="http://localhost:8080"/> <add key="Apollo.FAT.Meta" value="http://localhost:8080"/> <add key="Apollo.UAT.Meta" value="http://localhost:8080"/> <add key="Apollo.PRO.Meta" value="http://localhost:8080"/> </appSettings> </configuration>

1.1.4 本地缓存路径

Apollo客户端会把从服务端获取到的配置在本地文件系统缓存一份,用于在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置,不影响应用正常运行。

本地缓存路径位于C:\opt\data\{appId}\config-cache,所以请确保C:\opt\data\目录存在,且应用有读写权限。

1.1.5 可选设置

Cluster(集群)

Apollo支持配置按照集群划分,也就是说对于一个appId和一个环境,对不同的集群可以有不同的配置。

如果需要使用这个功能,你可以通过以下方式来指定运行时的集群:

  1. 通过App Config

    • 我们可以在App.config文件中设置Apollo.Cluster来指定运行时集群(注意大小写)
    • 例如,下面的截图配置指定了运行时的集群为SomeCluster
  2. 通过配置文件

  3. 首先确保C:\opt\settings\server.properties在目标机器上存在
  4. 在这个文件中,可以设置数据中心集群,如idc=xxx
  5. 注意key为全小写

Cluster Precedence(集群顺序)

  1. 如果Apollo.Clusteridc同时指定:

    • 我们会首先尝试从Apollo.Cluster指定的集群加载配置
    • 如果没找到任何配置,会尝试从idc指定的集群加载配置
    • 如果还是没找到,会从默认的集群(default)加载
  2. 如果只指定了Apollo.Cluster

    • 我们会首先尝试从Apollo.Cluster指定的集群加载配置
    • 如果没找到,会从默认的集群(default)加载
  3. 如果只指定了idc

    • 我们会首先尝试从idc指定的集群加载配置
    • 如果没找到,会从默认的集群(default)加载
  4. 如果Apollo.Clusteridc都没有指定:

    • 我们会从默认的集群(default)加载配置

启动控制台程序

修改配置并发布

此时返回控制台程序查看

这个时候我们通过监听程序监听到配置在后台被修改了,同时能获取到最新配置值

配置更新的推拉机制

从上图看到,阿波罗配置更新具备推和拉两种方式,在后台修改并发布后,会及时将配置推给客户端,假如没推成功,客户端会通过后台线程定时更新。

如果客户端与服务端发生了网络分区,此时可以通过客户端获取本地文件缓存的配置数据,让系统正常运作。

缓存数据默认存储在C:\opt\data

从以上来看,阿波罗在可用性设计上还是很不错的。

结束

客户端  demo下载

只展示了.net环境使用  其他语言  扩展 https://github.com/ctripcorp/apollo

转载于:https://www.cnblogs.com/weihengblogs/p/10147925.html

windows部署Apollo相关推荐

  1. EMQX MQTT服务器 Windows部署

    EMQX MQTT服务器 Windows部署 MQTT协议 EMQX 平台 EMQX MQTT部署 说明 由于我正在着手的物联网项目需要进行通信,我在各种通信协议中进行比较.蓝牙等通信协议功耗太高,而 ...

  2. Windows 2008下安装配置 WDS Windows部署服务

    Windows(Windows Deployment Services) 部署服务适用与大中型网络中的计算机操作系统部署.可以使用 Windows 部署服务来管理映像以及无人参与安装脚本,并提供人工参 ...

  3. 配合使用自制的PE3.0启动盘和Windows部署服务,实现Ghost网克

    VMWare虚拟机网络设置: Host,2008R2虚拟机需要设置在同一网段(如果发生无法获得DHCP的情况,请重置VMWare Workstation中的网络设置). 软件安装: 安装WAIK 3. ...

  4. 适用于 IT 专业人员的基本 Windows 部署

    适用于 IT 专业人员的基本 Windows 部署 适用于: Windows 7 Windows Server 2008 R2 本文档中的信息(包括 URL 和其他 Internet 网站引用)可能变 ...

  5. Windows部署服务WDS实例

    一:概述<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> Win ...

  6. Windows 部署服务(WDS)基础配置指南 (2008 or 2008R2 Only)

    一.配置Windows 部署服务(WDS)服务器 首先,选择"服务管理器"中"角色"下面的"Windows 部署服务",在里面找到" ...

  7. 搭建WDS(Windows部署服务)

    搭建WDS(Windows部署服务) WDS(Windows 部署服务)主要适用与大中型网络中的计算机操作系统部署,可以管理映像以及无人参与安装脚本,并提供人工参与安装和无人参与安装的选项.WDS配合 ...

  8. windows部署hadoop环境

    windows部署hadoop环境 a.安装jdk b.hadoop 解压c.环境变量设置 右键计算机属性,从高级系统设置一栏中找到环境变量,如下图所示,在新的面板中进行以下操作,. 在用户变量中,添 ...

  9. k8s部署apollo

    k8s以Deployment方式部署apollo.最新版本:1.7.1 public-service-ns.yaml apiVersion: v1 kind: Namespace metadata:n ...

最新文章

  1. IIS6 MVC3 配置
  2. 肠道微生物的研究不复杂,不信看这篇Science
  3. 创建型模式--工厂方法模式
  4. Linux系统:centOS 7 忘记密码怎么办?
  5. 软件体系结构课后作业03
  6. 提交spark的bug的地方
  7. 孩子数学成绩不好怎么办_孩子数学成绩不好怎么办
  8. aws v2.2.exe_如何在AWS Elastic Beanstalk上部署Rails 5.2 PostgreSQL应用
  9. cython加密代码python_利用Cython对python代码进行加密
  10. NET 下数据库图片的存入与读取
  11. 2021年上半年金融科技动向
  12. 图解高性能服务器开发两种模式,第四章 NETTY高性能架构设计
  13. 【经验分享】linux交叉编译 - openssl动态库
  14. python牛顿法解非线性方程组_萌新请教牛顿法求解三元非线性方程组
  15. Ⅴ0还有别的方法设置图案吗_水冷空调扇如何使用 水冷空调扇使用方法介绍【图文】...
  16. 一个小白对卷积神经网络的理解
  17. android checkboxpreference属性,android – 具有自己布局的CheckBoxPreference
  18. 三菱5uplc伺服电机指令_2020山东三菱PLCFX1S30MT回收回收价格公道
  19. [UIDevice currentDevice] setValue 强制屏幕旋转不生效
  20. 基因重组-冲刺日志(第一天)

热门文章

  1. go gin框架:Any响应任何请求类型
  2. python django升级安装sqlite3后在python命令行还是显示旧版本的解决办法
  3. 解决方案:外域HDFS客户端访问内网HDFS datanode
  4. nodejs中的模块系统:exports导出模块
  5. Scala if...else案例
  6. HBase单机版安装详细步骤
  7. JVM加载class文件的原理简述
  8. Redis bitmap使用场景示例
  9. 多线程下载的原理和基本用法
  10. Qt for Android调用android原生控件安装apk