前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于winserver部署Apollo初次体验(附.net客户端demo)

基于winserver部署Apollo初次体验(附.net客户端demo)

作者头像
陈珙
发布2018-09-12 09:55:17
1.3K0
发布2018-09-12 09:55:17
举报

前言

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

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

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

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

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 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

启动

打开cmd,切换到刚下载的apollo-build-scripts目录下。

cd C:\Users\chengong\source\repos\apollo-build-scripts

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客户端

创建一个控制台项目,下载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

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

结束

最近公司在选型配置中心,因此在玩阿波罗的时候同时记录其过程。

客户端demo:https://github.com/SkyChenSky/Apollo.Demo

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-07-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Why Apollo
  • 优势
  • 缺点
  • 准备
  • 部署
    • 导入脚本
      • 修改项目数据库配置
        • 启动
        • 初体验
        • .net客户端
        • 修改配置并发布
        • 配置更新的推拉机制
        • 结束
        相关产品与服务
        微服务引擎 TSE
        微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档