windows部署Apollo
前言
配置中心伴随着这几年分布式系统演变和微服务架构的兴起,已经成为必不可少的需求之一。试下一下如果哪天公司的所有应用服务,从公司服务器迁移到云服务,成千上万的配置,修改起来是多么耗时费劲的事(我们公司就是……)。
配置中心主要有以下特点:
- 配置动态化
- 管理集中化
修改配置不需要重新发布配置文件,而且可以复用,同一个的配置只需要修改一次,省时省力。通过后台统一管理,修改、查看,部分产品还支持配置版本管理。
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客户端依赖于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
转载于:https://www.cnblogs.com/weihengblogs/p/10147925.html
windows部署Apollo相关推荐
- EMQX MQTT服务器 Windows部署
EMQX MQTT服务器 Windows部署 MQTT协议 EMQX 平台 EMQX MQTT部署 说明 由于我正在着手的物联网项目需要进行通信,我在各种通信协议中进行比较.蓝牙等通信协议功耗太高,而 ...
- Windows 2008下安装配置 WDS Windows部署服务
Windows(Windows Deployment Services) 部署服务适用与大中型网络中的计算机操作系统部署.可以使用 Windows 部署服务来管理映像以及无人参与安装脚本,并提供人工参 ...
- 配合使用自制的PE3.0启动盘和Windows部署服务,实现Ghost网克
VMWare虚拟机网络设置: Host,2008R2虚拟机需要设置在同一网段(如果发生无法获得DHCP的情况,请重置VMWare Workstation中的网络设置). 软件安装: 安装WAIK 3. ...
- 适用于 IT 专业人员的基本 Windows 部署
适用于 IT 专业人员的基本 Windows 部署 适用于: Windows 7 Windows Server 2008 R2 本文档中的信息(包括 URL 和其他 Internet 网站引用)可能变 ...
- Windows部署服务WDS实例
一:概述<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> Win ...
- Windows 部署服务(WDS)基础配置指南 (2008 or 2008R2 Only)
一.配置Windows 部署服务(WDS)服务器 首先,选择"服务管理器"中"角色"下面的"Windows 部署服务",在里面找到" ...
- 搭建WDS(Windows部署服务)
搭建WDS(Windows部署服务) WDS(Windows 部署服务)主要适用与大中型网络中的计算机操作系统部署,可以管理映像以及无人参与安装脚本,并提供人工参与安装和无人参与安装的选项.WDS配合 ...
- windows部署hadoop环境
windows部署hadoop环境 a.安装jdk b.hadoop 解压c.环境变量设置 右键计算机属性,从高级系统设置一栏中找到环境变量,如下图所示,在新的面板中进行以下操作,. 在用户变量中,添 ...
- k8s部署apollo
k8s以Deployment方式部署apollo.最新版本:1.7.1 public-service-ns.yaml apiVersion: v1 kind: Namespace metadata:n ...
最新文章
- IIS6 MVC3 配置
- 肠道微生物的研究不复杂,不信看这篇Science
- 创建型模式--工厂方法模式
- Linux系统:centOS 7 忘记密码怎么办?
- 软件体系结构课后作业03
- 提交spark的bug的地方
- 孩子数学成绩不好怎么办_孩子数学成绩不好怎么办
- aws v2.2.exe_如何在AWS Elastic Beanstalk上部署Rails 5.2 PostgreSQL应用
- cython加密代码python_利用Cython对python代码进行加密
- NET 下数据库图片的存入与读取
- 2021年上半年金融科技动向
- 图解高性能服务器开发两种模式,第四章 NETTY高性能架构设计
- 【经验分享】linux交叉编译 - openssl动态库
- python牛顿法解非线性方程组_萌新请教牛顿法求解三元非线性方程组
- Ⅴ0还有别的方法设置图案吗_水冷空调扇如何使用 水冷空调扇使用方法介绍【图文】...
- 一个小白对卷积神经网络的理解
- android checkboxpreference属性,android – 具有自己布局的CheckBoxPreference
- 三菱5uplc伺服电机指令_2020山东三菱PLCFX1S30MT回收回收价格公道
- [UIDevice currentDevice] setValue 强制屏幕旋转不生效
- 基因重组-冲刺日志(第一天)