背景

随着数据规模的不断膨胀,使用多节点集群的分布式方式逐渐成为趋势。在这种情况下,如何高效、自动化管理集群节点,实现不同节点的协同工作,配置一致性,状态一致性,高可用性,可观测性等,就成为一个重要的挑战。

本部分包括三个模块:治理、集群管理、可观测性。

挑战

分布式治理的挑战,主要在于集群管理的复杂性,以及如果以统一和标准的方式对接各种第三方集成组件。

集成管理的复杂性体现在,一方面我们需要把所有的节点,不管是底层数据库节点,还是中间件或者业务系统节点,它们的状态都统一管理起来,并且能够实时的探测到最新的变动情况,进一步为集群的控制和调度提供依据。这方面我们使用集群拓扑状态图来管理集群状态,同时使用心跳检测机制实现状态检测与更新。

另一方面,不同节点节点之间的统一协调,策略与规则的同步,也需要我们能够设计一套在分布式情况下,进行全局事件通知机制,以及独占性操作的分布式协调锁机制。这方面,我们使用 Zookeeper/Etcd 等实现配置的同步,状态变更的通知,以及分布式锁来控制排他性操作。

同时,由于治理功能本身可以采用合适的第三方组件作为基础服务,需要我们抽象统一的接口,统一各种不同的组件的标准调用API,对接到治理功能模块。

最后对于可管理性和可观测性的要求,我们需要完善通过UI查询、操作和控制系统的功能,进一步完善对于 tracing 和 APM 的支持,实现 Metric 指标监控以及与 Prometheus、Grafana 的支持,实现实时监控。

目标

对于治理功能,目标如下:

  • 实现配置中心:支持 Zookeeper/etcd/Apollo/Nacos,管理数据源、规则和策略的配置。
  • 实现注册中心:支持 Zookeeper/etcd,管理各个 Proxy 示例的状态。
  • 实现元数据中心:支持 Zookeeper/etcd,管理 LogicSchema 的元数据。

对于集群管理功能,目标如下:

  • 实现节点心跳检测:支持 Sharding-JDBC、Sharding-Proxy,使用可配置策略探活。
  • 实现集群状态拓扑管理:更新和管理集群状态拓扑图。

对于可观测性,目标如下:

  • 支持 OpenTracing/Skywalking 集成,实现调用链的跟踪;
  • 实现 Metric 支持,对接 Prometheus、Grafana,实现监控指标的可视化展示。