windows部署Apollo
前言
配置中心伴随着这几年分布式系统演变和微服务架构的兴起,已经成为必不可少的需求之一。试下一下如果哪天公司的所有应用服务,从公司服务器迁移到云服务,成千上万的配置,修改起来是多么耗时费劲的事(我们公司就是……)。
配置中心主要有以下特点:
- 配置动态化
- 管理集中化
修改配置不需要重新发布配置文件,而且可以复用,同一个的配置只需要修改一次,省时省力。通过后台统一管理,修改、查看,部分产品还支持配置版本管理。
Why Apollo
- 国产
- 开源
- 功能强大
首先是支持国产,同时在遇到问题也可以良好的和国人交流沟通。其次功能很全,满足公司的所有需要,不需要二次开发。
优势
阿波罗的功能非常强大,几乎满足一般的分布式系统的使用要求,重点主要如下:
- 配置多维度
- application (应用)
- environment (环境)
- cluster (集群)
- namespace (命名空间)
- 版本发布管理
- 历史查看
- 版本回滚
- 后台权限管理
- 发布审核
- 操作审计
- 更新机制
- 推
- 拉
- 客户端监控
- 客户端实例查看
- 配置实用实例查看
缺点
强大的功能,必然伴随少许缺点:
- 一定的学习成本
- 部署繁杂
官方文档说明部署简单,我认为不然,依赖jdk1.8,(我试了1.9部署Quick Start版本失败了),mysql,脚本需要自己导入,在windows平台还需要gitbash。
总的来说利大于弊,还是值得去使用的。
准备
部署
注意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客户端依赖于AppId,Environment等环境信息来工作,所以请确保阅读下面的说明并且做正确的配置:
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和一个环境,对不同的集群可以有不同的配置。
如果需要使用这个功能,你可以通过以下方式来指定运行时的集群:
通过App Config
- 我们可以在App.config文件中设置Apollo.Cluster来指定运行时集群(注意大小写)
- 例如,下面的截图配置指定了运行时的集群为SomeCluster

通过配置文件
- 首先确保
C:\opt\settings\server.properties在目标机器上存在 - 在这个文件中,可以设置数据中心集群,如
idc=xxx - 注意key为全小写
Cluster Precedence(集群顺序)
如果
Apollo.Cluster和idc同时指定:- 我们会首先尝试从
Apollo.Cluster指定的集群加载配置 - 如果没找到任何配置,会尝试从
idc指定的集群加载配置 - 如果还是没找到,会从默认的集群(
default)加载
- 我们会首先尝试从
如果只指定了
Apollo.Cluster:- 我们会首先尝试从
Apollo.Cluster指定的集群加载配置 - 如果没找到,会从默认的集群(
default)加载
- 我们会首先尝试从
如果只指定了
idc:- 我们会首先尝试从
idc指定的集群加载配置 - 如果没找到,会从默认的集群(
default)加载
- 我们会首先尝试从
如果
Apollo.Cluster和idc都没有指定:- 我们会从默认的集群(
default)加载配置
- 我们会从默认的集群(
启动控制台程序
修改配置并发布


此时返回控制台程序查看

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

从上图看到,阿波罗配置更新具备推和拉两种方式,在后台修改并发布后,会及时将配置推给客户端,假如没推成功,客户端会通过后台线程定时更新。
如果客户端与服务端发生了网络分区,此时可以通过客户端获取本地文件缓存的配置数据,让系统正常运作。
缓存数据默认存储在C:\opt\data
从以上来看,阿波罗在可用性设计上还是很不错的。
结束
客户端 demo下载
只展示了.net环境使用 其他语言 扩展 https://github.com/ctripcorp/apollo
windows部署Apollo的更多相关文章
- Win10上部署Apollo配置中心
基于Docker在Win10上部署Apollo配置中心 https://www.jianshu.com/p/a1215056ce75 http://nobodyiam.com/2016/07/09/i ...
- Visual Studio GitHub For Windows部署
使用GitHub For Windows部署Visual Studio项目 因为最近同时再看很多技术方面的书,书上的例子有很多自己想亲自尝试一下,但是每次写例子都得创建一个新项目未免太麻烦,索性就整理 ...
- Docker部署Apollo配置中心
1.Apollot简述 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于 ...
- windows部署服务(WDS)
1.服务器端os:windows server2003R2,windows server 2008,windows server 2008 R2 文件系统:NTFS 必须需要AD架构 网络中需要微软 ...
- spring cloud 集成分布式配置中心 apollo(单机部署apollo)
一.什么是apollo? Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用 ...
- docker-compose 部署 Apollo 自定义环境
Apollo 配置中心是什么: Apollo是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性. ...
- 流媒体 Ubuntu部署srs、windows部署nginx
一.获取项目//码云克隆git clone https://gitee.com/winlinvip/srs.oschina.git srs//githubgit clone https://githu ...
- 一、Windows部署RabbitMQ
RabbitMQ官方网站非常详细,以下只是本人学习过程的整理 一.Windows部署RabbitMQ:https://www.cnblogs.com/yangleiyu/p/15539618.html ...
- 基于winserver部署Apollo初次体验(附.net客户端demo)
前言 配置中心伴随着这几年分布式系统演变和微服务架构的兴起,已经成为必不可少的需求之一.试下一下如果哪天公司的所有应用服务,从公司服务器迁移到云服务,成千上万的配置,修改起来是多么耗时费劲的事(我们公 ...
随机推荐
- 【转】Redis学习笔记(五)如何用Redis实现分布式锁(2)—— 集群版
原文地址:http://bridgeforyou.cn/2018/09/02/Redis-Dsitributed-Lock-2/ 单机版实现的局限性 在上一篇文章中,我们讨论了Redis分布式锁的实现 ...
- hibernate自定义校验Valid
步骤: 1.定义注解: import javax.validation.Constraint; import javax.validation.Payload; import java.lang.an ...
- kali linux工具--信息批量收集工具theharvester
在渗透测试早期阶段,安全人员往往需要从互联网快速获取目标的一些信息,以确认测试目标的概况.为了满足这个需求,Kali Linux提供了theharvester工具.该工具可以搜索引擎.社交网站获取目标 ...
- JSP和后台交互时的乱码问题
在Servlet或者是拦截器里面添加下面的语句: request.setCharacterEncoding("utf-8"); response.setCharacterEncod ...
- thinkphp5+vue+iview商城 公众号+小程序更新版本
thinkphp5+vue+iview商城加分销 源码下载地址:http://github.crmeb.net/u/crmeb 演示站后台:http://demo25.crmeb.net 账号:dem ...
- 基本DFS与BFS算法(C++实现)
样图: DFS:深度优先搜索,是一个不断探查和回溯的过程,每探查一步就将该步访问位置为true,接着在该点所有邻接节点中,找出尚未访问过的一个,将其作为下个探查的目标,接着对这个目标进行相同的操作,直 ...
- verdi\debussy的使用技巧
verdi\debussy的使用技巧 转载from 大西瓜FPGA 大西瓜FPGA-->https://daxiguafpga.taobao.com fsdb display Debussy本身 ...
- python爬虫得到unicode编码处理方式
在用python做爬虫的时候经常会与到结果中包含unicode编码,需要将结果转化为中文,处理方式如下 str.encode('utf-8').decode('unicode_escape')
- 前端笔记知识点整合之JavaScript(四)关于函数、作用域、闭包那点事
一.自定义函数function 函数就是功能.方法的封装.函数能够帮我们封装一段程序代码,这一段代码会具备某一项功能,函数在执行时,封装的这一段代码都会执行一次,实现某种功能.而且,函数可以多次调用. ...
- 04mycat数据切分
自定义切分文件 [root@mycat mycat]# cat conf/customer-hash-int.txt 101=0 102=0 103=0 104=1 105=1 106=1 Rule. ...
