一、常规客户端配置的弊端

客户端配置信息通常会通过一个静态文件进行管理,或存放在本地或者通过远程获取。存在本地最大的问题是不易更新,所以通常做法是通过远程获取。

我们通过两种常见的场景来看看静态文件管理的客户端配置存在的问题:

  1. 一些配置参数的值是要依赖客户本地环境参数(机型、系统版本、客户端版本、网络环境、硬件设备),客户本地环境参数发生了变化,那么配置参数要有相应的值来匹配,否则有可能会导致客户端的用户体验变差甚至功能不可用。举个例子,是否开启硬件编码加速,在 macOS + 系统版本的条件下要关闭,而在 iOS 下要打开。
  2. 客户端新开发的功能希望能根据用户或者用户所在地区、操作系统、机型等维度进行灰度上线。

通过上面列举的两种场景可以看到,静态文件要支持根据用户的环境来匹配合适的配置信息,有一个办法就是枚举所有可能的情况,客户端根据用户本地环境匹配其中一种情况,但是带来的问题也是显而易见的:

  1. 客户端配置文件过大,客户拉取配置文件的时间会变长,影响客户体验;服务器的流量和带宽存在不必要的浪费;
  2. 配置文件内容结构复杂,不易于管理,难以维护;
  3. 客户端解析配置文件的逻辑复杂且不灵活。

随着客户端的功能增加和优化,配置参数也会越来越多,会进一步加剧以上问题。

二、ZEGO 自研客户端配置管理系统 —— 云控系统

考虑到静态文件的客户端配置在开发和日常运营管理中可能产生的种种问题,为了达到最好的用户体验,同时保证开发、运营管理效率,ZEGO 自研了客户端配置管理系统,内部也称之为“云控系统”。

以下是云控系统的简易版架构图:

三、解决客户端配置信息动态化需求

云控系统通过以下几方面解决了客户端配置信息动态化需求

1、ZEGO Settings SDK(云控 SDK)统一了配置信息拉取和解析能力:

各产品只需要集成了 ZEGO Settings SDK 就拥有了统一的配置信息拉取、解析、配置变更通知能力,上层产品根据通知自行决定是否立即生效。

2、动态获取配置信息:

客户端通过 ZEGO Settings SDK 将用户环境信息发送给配置服务(云控服务),配置服务根据用户环境信息计算返回定制化的、无冗余的客户端配置信息;客户端信息也可以根据用户或者用户所在地区、操作系统、机型等维度进行灰度上线。

3、可靠的全球接入的通讯链路:

客户端通过 ZEGO 自研的智能路由 MSDN 系统,依托主流云商的全球节点,全球 200+ 机房部署无死角覆盖,保障了配置服务(云控服务)全球可靠稳定的访问通讯链路。

4、分布式

云服务的配置信息存储节点 220+,任一节点有异常,其他节点都能迅速补上,保证了配置信息存储服务的高可用。

通过以上几个方面解决了配置文件动态化的需求,保证了最好的用户体验同时,提高了开发、日常配置管理效率,同时为实时解决单个用户环境问题提供了可能性。

总结

以上是关于 ZEGO 即构科技如何支持动态化的下发客户端配置系统的内容分享。

通过云控系统解决了用户级别的客户端个性化配置,为保证最佳的客户端用户体验提供了保障。

此外,ZEGO 自研客户端配置管理系统支持多产品多模块的客户端配置信息管理,提高了各产品模块客户端配置信息的管理能力,为快速解决客户的线上问题提供了可能性。更多即构拓展服务,请了解:​​开发者中心 - 即构科技​

ZEGO 自研客户端配置管理系统 —— 云控的更多相关文章

  1. easyconf——基于AugularJS的配置管理系统开发框架

    目录 1 easyconf的诞生2 easyconf的设计理念 2.1 总体设计 2.2 细节设计 2.2.1 CRUD操作 2.2.2 即时校验 2.2.3 下拉框设计3 easyconf使用指南 ...

  2. [转载] zookeeper应用——集中配置管理系统的实现

    转载自http://blog.csdn.net/huangfengxiao/article/details/8844239 1 场景描述 参考http://www.ibm.com/developerw ...

  3. Linux sssd 进程 ldap 客户端配置

    Linux sssd 进程 ldap 客户端配置 标签(空格分隔): ldap authconfig authconfig命令解析:authconfig 面对多计算机的身份管理以及账户信息同步, 其解 ...

  4. Linux 的简单命令以及在idea中配置码云

    Linux 的简单命令: ls(list)功能:列出目录内容 cd(change directory)功能:切换目录 touch 1.txt 在当前目录创建一个文件1.txt clear:清除屏幕 p ...

  5. puppet(一种Linux、Unix、windows平台的集中配置管理系统)

    puppet是一种Linux.Unix.windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件.用户.cron任务.软件包.系统服务等.puppet把这些系统实体称之为资 ...

  6. QM[中控群控云控]01. 中控原理

    QM[中控群控云控]01. 中控原理 虽然自己对于中控有了解 也自己做过一些简单中控 不过看看紫猫老师的思路 应该有很多帮助和提高 中控核心:数据交流而已 脚本端和服务端之间的信息交换 ------个 ...

  7. 使用MQTT.fx客户端接入阿里云

    一.前期准备. 1.关于MQTT连接的属性:https://www.cnblogs.com/mhtc/p/11112153.html 2.关于阿里云配置工具的使用:https://www.cnblog ...

  8. Eureka高可用集群服务端和客户端配置

    微服务应用中,生产环境一般都需要保障服务注册中心的高可用!高可用也分好几个等级,例如:同数据中心(可用Zone区)高可用-->同地域(Region)跨数据中心(可用Zone区)高可用--> ...

  9. NFS服务器+客户端配置

    NFS:Network File System 使用NFS需要启用RPC(remoteprocedure call),RPC可以指定每个NFS功能所对应的端口号,重启RPC后,RPC所管理的所有NFS ...

  10. CentOS下OpenVPN客户端配置

    CentOS下OpenVPN客户端配置 http://liumissyou.blog.51cto.com/4828343/1762683 1,安装 yum install openvpn -y mkd ...

随机推荐

  1. 云服务器安装宝塔Linux面板教程(建议收藏)

    ​ 一.简介 宝塔面板是一款简单好用的服务器运维面板.它支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能.对于新手用云服务器来建站的话,宝塔面板是一个非 ...

  2. vb.net 实现excel导入的时候滚动显示导入的数据

    如果你想在 Excel 导入过程中滚动显示导入的数据,可以使用逐行读取 Excel 数据并在滚动窗口中显示. 在 VB.NET 中,你可以使用 Excel.Range 对象逐行读取 Excel 数据, ...

  3. oeasy教您玩转vim - 58 - # 块可视化

    ​ 块可视化编辑 回忆上节课内容 上次我们了解到行可视模式 行可视模式 V 也可配合各种motion o切换首尾 选区的开头和结尾是mark标记 开头是 '< 结尾是 '> 可以在选区内进 ...

  4. IDEA整合Spring+Struts+Hibernate项目

    新手使用idea整合Spring+Struts+Hibernate项目 项目所需jar下载: https://download.csdn.net/download/weixin_44906002/12 ...

  5. SpringSecurity:hasAuthority与自定义权限校验

    springsecurity中有两种权限控制方法 1.基于注解 @PreAuthorize("hasAuthority('syst:add')") 他的作用是在controller ...

  6. 如何通过minIO在后端实现断点续传

    首先是黑马的媒资管理模块流程图:前端负责计算媒资文件的MD5值,同时对媒资文件进行分块. 后端需要以下几个接口: 1.检查分块是否存在(传入参数为视频唯一标识信息与块信息):检查当前分块是否已经上传至 ...

  7. 写写java中的optional

    当我们写代码的时候经常会碰见nullpointer,所以在很多情况下我们需要做各种非空的判断.JDK8中引入了optional,他是一个包装好的类,我们可以把对象传入optional对象中,接下来就可 ...

  8. pytest数据驱动(最简单)

    pytest数据驱动(最简单) 第一种:通过yaml文件获取数据(一维列表) data.yaml文件内容如下: - '软件测试'- '单元测试'- '自动化测试'- '性能测试'- '测试开发'- ' ...

  9. python global变量作用域

    python变量作用域 var1 = 123 def func(): var1 = 456 print(var1) func() #456 print(var1) #123 ============= ...

  10. Jmeter函数助手14-TestPlanName

    TestPlanName函数获取当前测试计划保存的文件名称.该函数没有参数,直接引用即可${__TestPlanName}.