对DBA、开发、测试、产品同时友好 大规模多存储场景的数据库选型与服务平台建设( 四 )


  • 打造业界一流的高可用、高性能、低成本的 数据存储产品与服务
  • 关于产品设计和建设的思路 , 有以下三点:
    1. 不以DBA视角主导产品设计 , 零基础也可以玩转数据库 , 这一点也是最关键的 , 不会先入为主 , 见过很多建设数据库服务平台的开发&设计人员本身就是DBA , 会有先入为主的思路 , 做了很多默认的思路 , 那我们现在着重强调这一点 , 希望不论是刚入行的开发或者DBA , 还是摸爬滚打了很多年的老鸟都能轻松的使用数据库 。
    2. 重视用户交互体验 , 平衡可靠性、易用性、操作效率 , 这块我们配备了产品经理做产品设计 , 每半年也会做详细的用户满意度调研 , 收集用户的意见
    3. 机器学习、混沌工程等只是实现产品功能的一种方法 , 这块之所以拿出来讲 , 我们不会标榜我们做的是什么 AIOPS还是什么 , 这些方法只是我们在解决这类问题的一个方案 , 如果用机器学习或者深度学习解决更好 , 我们就用 , 反之如果传统的方案能更好的解决 , 我们不会为了做AI而做AI 。

    对DBA、开发、测试、产品同时友好 大规模多存储场景的数据库选型与服务平台建设

    文章插图
    接下来我们看下 , 平台的架构设计 , 这个是简化了之后的平台架构图 , 中间灰色部分的关联图隐藏了 , 因为关联关系比较复杂 , 蓝色是我们自己开发的 , 绿色的是公司现有的能力 。
    对DBA、开发、测试、产品同时友好 大规模多存储场景的数据库选型与服务平台建设

    文章插图
    整体思想主要有以下四点:
    1. 抽象公共服务(工单、权限等)
    2. AGENT负责元数据、监控数据、巡检任务的上报执行
    3. 共建公共能力 , 不重复造轮子
    4. 统一用户接口 , 屏蔽公有云与自建IDC区别
    5、多运行环境管理
    对DBA、开发、测试、产品同时友好 大规模多存储场景的数据库选型与服务平台建设

    文章插图
    前面讲到我们的用户会在多种环境使用我们的数据库产品 , 那一般情况下 , 测试开发环境和生产环境是会做网络隔离的 , vivo也是这么做的 , 为了解决这个问题 , 我们做了很多的改造和适配 , 主要有以下几点:
    1. 统一权限与接入Portal , 不要测试开发一套环境 , 生产环境一套环境 , 这样割裂的操作对用户体验有很大的伤害
    2. 生产环境与测试开发环境隔离
    3. 统一元数据管理
    这个架构我做下简单的介绍 , 这里的Tomcat代表的是我们的平台服务 , 因为我们的平台服务是用JAVA写的 , 整个平台里面的数据库从功能来看 , 主要分为两类 , 一类是 提供给我们用户用的数据;一类是我们平台自己用的数据库 。平台用的数据库就是我们的元数据 , 这块一定要统一 , 因为在权限和资产管理上必须要统一 。
    前端在接入层需要带上环境的标志 , 接入网关根据环境标志进行流量路由 , 因为生环境的Tomcat服务是没有办法直接管理测试环境的数据库环境的 , 所以我们在开发&测试环境也需要部署我们的平台服务 。
    我们给数据库定义了很多套餐 , 按照套餐来分配并且这些套餐是和环境有映射关系的 , 这样我就可以用一套代码通过环境和用户的需求来管理资源 。
    6、数据库产品能力矩阵
    对DBA、开发、测试、产品同时友好 大规模多存储场景的数据库选型与服务平台建设

    文章插图
    最后我们看下我们目前已经建成的一些能力 , 上层主要分为 可用性、效率、成本、安全四块 。中间的部分是我们的数据存储产品 , 这块就不详细展开讲了 。
    >>>>
    Q&A
    Q1:请问这个平台有用到开源框架嘛 , 多少人开发的 , 用了多久?
    A:数据库服务平台的架构比较通用 , 后端服务为Spring Boot框架的微服务架构 , 前端采用的是Vue , 部分组件如SQL审核、SQL优化、容量预测等组件采用了Golang或者Python编写;平台从2018年下半年开始建设 , 历经约2年时间 , 参与平台研发的同学5-7人左右 。


    推荐阅读