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

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

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

  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. 还在困惑需要多少数据吗?来看看这份估计指南 | CVPR 2022

    论文基于实验验证,为数据需求预测这一问题提供了比较有用的建议,详情可以直接看看Conclusion部分. 来源:晓飞的算法工程笔记 公众号 论文: How Much More Data Do I Ne ...

  2. C++11标准库<chrono><future> <atomic><condition_variable><mutex><thread>梳理 (5万字)

    <chrono> C++11中提供了日期和时间相关的库chrono. chrono库主要包含三种类型的类:时间间隔duration.时钟clocks.时间点time point. 时间间隔 ...

  3. PowerBuilder编程新思维6:装饰(用最简单的方式做框架)

    To be, or not to be - that is the question. PowerBuilder编程新思维6:装饰(用最简单的方式做框架) 问题 这一章,是写得最艰难的一章,原因有四: ...

  4. django 计算两个TimeField的时差

    在 Django 中,你可以使用 datetime 模块来计算两个 TimeField 字段的时间差.以下是一个示例: from datetime import datetime, timedelta ...

  5. Day 1 - 二分

    整数二分 我们可以做到每次排除一半的答案,时间复杂度 \(O(\log n)\). long long l = L, r = R; while(l <= r) { long long mid = ...

  6. 如何安装 Arch Linux 操作系统?

    Arch Linux Install 安装 到使用 Arch 说明前面或多或少已经接触过 Debian 系列和 Red Hat 系列相关 Linux 发行版,对于虚拟化软件 VirtualBox 如何 ...

  7. Java SE 文件上传和文件下载的底层原理

    1. Java SE 文件上传和文件下载的底层原理 @ 目录 1. Java SE 文件上传和文件下载的底层原理 2. 文件上传 2.1 文件上传应用实例 2.2 文件上传注意事项和细节 3. 文件下 ...

  8. (一)Vue 3 项目搭建

    确保已安装 16.0 或更高版本的 Node.js,然后在命令行中运行以下命令: npm init vue@latest 这一指令将会安装并执行 create-vue,它是 Vue 官方的项目脚手架工 ...

  9. 【DataBase】局域网访问Windows系统下的MySQL8

    Windows服务主机已经安装好MySQL8并且配置了用户密码 MySQL8更改用户密码: ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' ...

  10. 【Java-GUI】05 绘图 Part1

    案例: package cn.dzz; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.Acti ...