项目(配置中心)总结

项目背景

  1. 功能描述

    • 音视频新特性(网络特性、本地特性)统一管理控制

      1
      2
      根据客户端(PC、Android、IOS)的特质(属性,比如CPU、GPU、摄像头 ...),
      动态下发适合客户端的音视频特性,达到用户体验效果最佳。
    • 客户端升级统一控制

      1
      该系统统一控制各个客户端是否升级,如果升级,那升级到的版本是多少? 是可选升级还是强制升级 ?
    • 服务器地址统一管理

      1
      从该系统统一下发给客户端,使得客户端轻量级,让各个客户端不再因为管理近50个服务器地址而烦恼。
    • 配置公共元数据统一管理

      1
      字典,错误码 ...
  2. 特点

    • 必须保证高可靠

      1
      该系统是客户端直接对接的第一个后台应用,该系统不可用,则公司整个产品不可用; 系统可水平扩展。
    • 并发能力有要求

      1
      该系统的并发代表公司产品的最大并发。
    • 性能要求较高

      1
      能快速的处理客户端获取特性、地址、升级的响应。
    • 安全性要求

      1
      必须对该系统提供安全性措施,避免恶意攻击导致系统崩溃。

技术实现

  1. 技术栈

    1
    Spring + SpringMVC + Mybatis + MQ + MySQL + Canal + Redis + Dubbo + Restful API
  2. 技术细节

    • 高可用设计

      1
      2
      3
      同类型的服务(Web、dubbo)无状态、对等,部署2套或2套以上。
      可横向扩展、动态负载均衡,负载策略:轮询。
      技术手段:nginx + zookeeper。
    • 接口隔离

      1
      2
      不同的接口相互隔离,互不影响。
      技术手段:业务线程池 + Servlet 3.0。
    • 流控设计

      1
      2
      后台服务,底线是,即使穿透安全攻击,也不至于使服务宕机。
      技术手段:Guava RateLimiter ,令牌桶。
    • 缓存设计

      1
      2
      3
      4
      组件封装对数据库和缓存操作。简化客户端调用,客户端只管get key调用,不管 set。
      缓存全局开关,避免因缓存bug或不可用,导致整个服务不可用,运维手段后路。
      技术手段:Canal 实现数据库和缓存一致性。组件封装简化客户端操作,隐藏对数据源和缓存操作的细节。
      zookeeper客户端代码编写,实现分布式控制缓存开关。
    • 安全设计

      1
      2
      关键字段带时间戳接口签名
      appkey 授权合法性校验

数据流设计

Alt conf-workflow

接口安全性流程图

1
接口签名 + appkey授权合法性校验

Alt conf-sign

支持原创技术分享,您的支持将鼓励我继续创作!