初体验
输入浏览器输入http://localhost:8070
账号:apollo
密码:admin
可以见到默认的有一个Sample App项目,点进去,就可以见到下图
.net客户端
创建一个控制台项目,下载apollo.net包
nuget install apollo.net static void Main(string[] args) { Config config = ConfigService.GetAppConfig(); config.ConfigChanged += OnChanged; while (true) { Thread.Sleep(500); var timeout = config.GetProperty("timeout", ""); Console.WriteLine(timeout); } } private static void OnChanged(object sender, ConfigChangeEventArgs changeEvent) { Console.WriteLine("Changes for namespace {0}", changeEvent.Namespace); foreach (string key in changeEvent.ChangedKeys) { ConfigChange change = changeEvent.GetChange(key); Console.WriteLine("Change - key: {0}, oldValue: {1}, newValue: {2}, changeType: {3}", change.PropertyName, change.OldValue, change.NewValue, change.ChangeType); } }
另外在app.config填写以下变量
<!-- 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"/>
启动控制台程序
修改配置并发布
此时返回控制台程序查看
这个时候我们通过监听程序监听到配置在后台被修改了,同时能获取到最新配置值
配置更新的推拉机制
从上图看到,阿波罗配置更新具备推和拉两种方式,在后台修改并发布后,会及时将配置推给客户端,假如没推成功,客户端会通过后台线程定时更新。
如果客户端与服务端发生了网络分区,此时可以通过客户端获取本地文件缓存的配置数据,让系统正常运作。
缓存数据默认存储在C:\opt\data
从以上来看,阿波罗在可用性设计上还是很不错的。