1.1 复杂产品组件交付

首先我们想讲的是TDSQL的交付挑战,我们也是以三个方面去展开,第一个我们遇到的挑战是我们TDSQL产品架构所带来的特点:一是产品化不断完善带来的特点——组件多,包括拥有数据库内核,任务分发、冷备中心、平台告警、性能诊断等;二是组件之间相互依赖关系比较复杂。

TDSQL交付要求和挑战:  快速、灵活、安全_依赖关系

首先从层次上把这些组件进行划分:赤兔、监控采集、OSS、metacluster、扁鹊、onlineddl等可以划分为一个角色,叫管理节点。对业务来说,实际访问数据库的过程是,先是负载均衡层,然后到SQL引擎层,而SQL引擎层会直接访问底层DB,DB上会部署Agent。图中左侧列这些叫做管理节点;右侧列如冷备中心、消息队列、多源同步等,一般划分为数据节点。而日志分析平台其实是一个其他模块,可划分为其他的节点。

这些节点之间的依赖关系比较复杂。比如管理节点,其主要负责元数据管理,元数据包括比如以监控采集模块为核心的监控数据、以任务分发系统为核心的任务节点数据;第二是DB模块,DB会和管理节点有一些交互——除了DB节点,还有其他的节点都会向管理节点发送监控信息;而管理节点也会下发任务,比如客户在前台进行的垂直扩容、水平扩容、主备切换等变更动作,也会到实际的DB进行交互;数据节点会向管理节点发送数据,和DB节点做一些交互……

所以其实各个组件之间的依赖关系比较复杂,这对于交付带来一定的难处。

1.2 多场景适应性交付

第二个挑战来自于TDSQL多个场景。

TDSQL交付要求和挑战:  快速、灵活、安全_sql_02

TDSQL多个场景主要来源于使用TDSQL的对象是不同的,包括个人、企业、第三方平台。不同的对象使用TDSQL的需求和场景也不同。个人使用可能更想低门槛快速上手产品。企业使用最主要是POC测试和生产场景,关注的是整个产品的性能和功能,包括高可用性、容灾能力、国产化适配等。

不同场景的需求如何高效满足?是要做多个分支去适配不同的场景,还是用一个分支去适配不同的场景?当然我们是用一个分支去适配不同的场景。

1.3 TDSQL交付质量保障:安全、合规、多层级扫描

TDSQL交付要求和挑战:  快速、灵活、安全_sql_03

第三个挑战是,由于时间的推移,负责TDSQL交付的人产生了变化。早期TDSQL由产品研发团队、DBA同学去现场给客户做交付。产品研发团队和DBA团队,大家都是一个团队,团队内由于长期的合作协同形成了标准和质量可靠。而随着TDSQL产品化做大做强,用户规模不断扩大以后,交付人员会发生变化。不同的交付实施方,他们的操作和使用如果不够标准化,则容易带来隐患,体现在几个方面:

第一个是安全。比如说环境的安全,我们知道数据库场景是对内存、CPU、硬盘、IO等能力都是要求比较高的场景,包括对TCP的内核参数优化等这些工作都是作为潜在风险来统一考虑。

第二个是监控。对整个集群、进程、机器的监控,以及自动拉起,即机器级别故障之后,快速恢复的能力,这些都要作为完善的体系来考虑。其他比如定时任务,包括定时清理一些日志,清理一些历史数据,否则磁盘就会撑满,这在生产的环境上也是风险很大。最后是如何保障整个集群的高可用性、容灾能力;如何杜绝潜在旧版本带来的隐患,检测这些版本的漏洞等方面,都是交付质量体系中需要解决的问题。

其实TDSQL交付质量服务和保障就是围绕着上述的各方面问题,实现由不同的实施人、实施方去交付TDSQL产品,都能保证TDSQL的投产质量。这是我们在做的事情。