​网易游戏实时 HTAP 计费风控平台建设

本文整理自网易互娱资深工程师, Flink Contributor, CDC Contributor 林佳,在 FFA 实时风控专场的分享。本篇内容主要分为五个部分:

  1. 实时风控业务会话
  2. 会话关联的 Flink 实现
  3. HTAP 风控平台建设
  4. 提升风控结果数据能效
  5. 发展历程与展望未来

1.jpg

众所周知,网易互娱的核心业务之一是线上互动娱乐应用服务,比如大家耳熟能详的梦幻西游、阴阳师等都是网易互娱的产品。不管是游戏产品还是其他应用,都需要做出好的内容来吸引用户进行应用内购买,进而产生盈利。

2.jpg

当用户在商城里点击商品进行购买的时候,会弹出支付界面,进行验证、支付后,就可以收到道具了。这个过程对于用户来说往往都是一些非常简单的操作,但为了保证这个过程可以正确结算、发货,整个支付流程其实跨越了很多服务提供商和终端,走了一条相当复杂的调用链路。这些不同的业务节点之间会产生很多相互的调用关系,进而产生一些异构的日志、数据、记录。

由于经过了网络,其中的数据可能会有一定时间水位线的不一致、延迟,甚至数据丢失的情况,且本身这些数据又很可能是异构的,就更增大了我们对这些数据进行分析和使用的难度。

如果我们需要用这些数据进行高时效性的故障排查或者风险控制,就势必需要研制一套方案,来适配这样技术需求。为了解决以上的问题,我们以 Flink 为计算引擎构建了一套实时风控平台,并为他起名为 Luna,下面我将为大家进行详细的介绍。

实时风控业务会话

3.png

常见的线上支付逻辑是,当用户在应用上点击商城的道具进行应用内购买的时候,用户的客户端终端就会到计费系统进行下单,获得本次下单的订单信息。

4.jpg

然后我们的客户端会弹出支付界面,用户进行渠道付款。

5.jpg

当支付完成后,我们会把渠道返回给客户端的支付凭证回传给计费系统,计费系统会去渠道验证凭证是否有效。

6.jpg

如果是有效的,就会通知游戏服务器发货,这个时候我们的客户端才会收到道具。这就是从用户点击到最终收到道具的整个流程。

7.jpg

从这个已经极度简化了的支付模型可以看到,不同的公司、服务提供商、部门、服务系统会产生了一系列会话下的数据。如果我们能把这些数据收集起来,进行一定的处理后,还原当时用户操作的现场。这将对运营运维人员在定位故障、排查故障,甚至整个业务环境的宏观分析都有着非常重要的价值。

而分析的关键点是,我们如何还原这个行为的现场,我们把这个行为的现场叫风控业务会话,即由一次用户行为所引发的,需要多个系统协作完成、同时触发多个请求、产生跨越多个服务提供方调用的全过程。

这里需要注意的是,业务会话跨越了多个相互独立的请求链路,且没有统一全局的 trace-id 可以被提前置入所有的数据中。

8.jpg

由于我们的业务会话需要跨越多个请求链路,所以在数据关联分析的时候就存在很多难题。比如

  • 多服务、多请求产生的异构结果难以直接关联。
  • 调用顺序复杂,存在并发、异步的情况。
  • 时间跨度大、业务水位不同步。

以前在解决支付丢单、支付一次重复发货等问题的时候,往往只能通过运营人员去处理,这就非常依赖于运维人员的经验了。并且在这些大量的数据里,会有非常多冗余和无用字段,还有可能会有一些非常复杂的嵌套关系。这些都有可能让运维人员在判断时产生错判和误判。此外,还会给运维人员带来非常多的重复性工作,从而使得人力能效低下,把时间浪费在重复的事情上。

前文也提到了开源 Tracing 方案,往往需要依赖全局的 trace-id。对于新的系统,我们可以提前设计 trace-id 打点。但是对于有历史包袱的系统来说,他们往往不愿意修改跟踪来跟踪打点,那么这个时候传统的方案就走不通了。

9.jpg

在这种情况下,如果我们要进行业务会话还原,就需要设计一套新的方案。这套方案我们希望可以具备以下功能:

  • 实时微观业务会话检索与查错。
  • 实时宏观业务环境统计与风控。
  • 业务会话级数据能效挖掘与提升。

10.jpg

从还原业务会话到使用数据做 HTAP 实时风控平台的全过程,我们使用 Flink 消费原始数据,根据平台上提前配置好的分析模板,实时还原出业务会话。然后把业务会话的结果存储存起来,并为它打上我们提前设置好的一些结论模型,产生的风控结论。

对于存储起来的这些微观会话进一步被聚合,进而产生整个业务环境上的宏观统计量,以支持我们在整个平台上的风控分析需求。

会话关联的 Flink 实现

Flink 是实时计算的实施标准,基于此我们毫无疑问地选择了它。

11.jpg

那么实时业务会话关联在 Flink 系统上,我们希望可以做出怎样的效果呢?

  • 第一,零侵入。即无需对现有业务进行改动,也无需有全局的跟踪 ID,就可以做到业务会话的还原。
  • 第二,跨数据源。因为我们的业务往往需要跨越 n 种数据源,所以我们希望这 n 种数据源都可以被这个系统所支持,比如日志、维表、事实表、REST 接口等。
  • 第三,实时。实时产生结果,无需等待 T+1。
  • 第四,低代码。我们希望基于分析需求,可以通过向导式的配置,来产生实时的分析模板,并对宏观统计报表,可以配置式的进行多维度聚合。

12.jpg

上图展示的是 JFlink-SDK,它是网易自研的一套流管理平台以及它的开发手脚架 SDK。大家可以把它理解成是一套可以模块化配置式开发的流作业手脚架,实时关联分析的引擎就是基于这套手脚架开发出来的。

13.jpg

回到在使用业务会话还原的问题上。来自各个数据源的数据业务点,通过各种方式被同步收集到数据仓库的存储层中,我们有多种数据存储收集这些数据。针对各种各样的数据存储,Flink 有非常丰富的 connect 可以进行消费。然后 JFlink-SDK 又对它进行了二次封装,定义异构数据。使其在读取到 Flink 的时候,可以被转化成统一的视图。

14.jpg

这些数据视图是我们提前建设好的一些数据治理系统和平台,数据治理系统会为 JFlink-SDK 提供数据读取的规范。

15.jpg

当通过 SDK Source 读取后,他们就会被统一转化成业务视图,这样就非常方便我们后续对这些原始异构的数据进行关联了。

16.jpg

它的数据结构是以基准和非基准共同构成的一种设计。在进行业务数据点关联的时候,它的基本思想是基准+补充。所以我们在选择业务时,会选择最为核心的风控阶段作为基准,也就意味着,基准是整个业务中最关键的步骤,可以用唯一的 ID 关联起来。

对于通过业务 ID 关联起来的基准,我们会形成一个类似图的数据结构,这个东西我们称之为基准簇,它由同一种数据来源的基准和补充所关联得到的一个雪花状数据结构。

17.jpg

基准是业务会话中最关键的步骤,它通常是公共携带的某种标志步骤。比如以计费下单为场景,客户端的下单,打开支付界面、上传凭证、支付完成是四个最为关键的步骤。他们都打上了执行这些步骤的订单号,这四个步骤就可以作为整个业务规划的核心步骤,也就是基准。因为数据是不按顺序到达的,所以出现这是个步骤中的任意一个我们都可以开启业务会话。

18.jpg

而下单记录、商品详情、渠道回调记录等等一些辅助性的数据,他们对问题定位起不了关键作用,而且它们可能没有基准中订单号的字段,所以就没有资格被选为基准。

但它们中也有一些字段可以和基准中的字段进行关联。比如渠道回调日志,渠道商在一些辅助性的数据上打了 trans_id 字段。它虽然没有 order_id,但它可以通过 trans_id 与基准中的 trans_id 建立一一映射的关系,也就是我们可以通过 trans_id 关联起这份数据与基准簇的关系。

所以通过基准+补充,我们就可以解决目前线上系统,无法为所有数据打上统一 ID 埋点的痛点。

19.jpg

在 Stream API 中基准关联的实现,我们使用的是 Session Window。它是 Flink 提供给我们的标准时间窗口之一,可以在有数据流入的时候进行窗口时间超时的重置。除此之外,如果整条流的业务水位线,越过了整个超时时间的边界,它就会触发窗口计算。这种结果就非常适合由用户触发的会话窗口,也适合我们基准数据构造的逻辑。

但用户引起的这种行为,往往时间是不固定的,所以带有属性的会话窗口就非常适配这种特性。比如风控业务会话的还原,和浏览商品到最终下单支付的整个支付应用轨迹的追踪,都非常适合用这种模式来进行窗口计算。

这里的 Flink Session Window 其实就是前文提到的构造完毕的基准簇,它包含了所有被关联进来的原始数据,以及按照一定规则处理好的二级字段。至于它怎么在关联的时候进行字段抽取呢,后续再来讨论这个规则,此处就先认为,在窗口完成的时候就把簇计算出来了,并完成了所需字段计算和抽取。

20.jpg

一般用户的支付意愿窗口往往在 10~20 分钟,如果我们直接使用 Event Time Session Window 来进行计算,就会发现如果用户很快完成了下单,但系统仍然需要等待 10~20 分钟,才能使会话窗口进行计算,这就大大降低了数据的时效性。

对此 Flink 也为我们提供了一口入口,我们可以自定义窗口的 Trigger 来设置窗口触发的时机和业务会话提前结束的判定。

举个例子,一些数据量极少的场景,它的水位线可能一直没有向前推动,这种情况我们就可以加上 Process Timeout 和 FIRE & UPDATE 语义。这就可以让业务会话在水位线没有推进的情况下,先进行计算,往后发送。然后在下游进行保证,即当上游重复 fire 的时候,可以进行 update 的语义。

再举个例子,我们可以在风控的分析模板中配置一下。当业务会话满足某些条件的时候,就不用再等待超时了。比如当所有的节点都被关联上时,如果继续等待也不会等到任何节点,这个时候就无需等待超时时间,可以立即 fire 出结果。

21.jpg

当业务会话存在一些特殊且极端的情况,比如客户端支付到一半崩溃了,等了非常久才起来,这个时候很可能就会被拆分为两个业务会话,因为前一个业务会话已经超时了。这种时候我们会选择把两个被分裂的会话 fire 出来,然后由运维人员进行合并或者保持原样。

22.jpg

接下来我们来讨论一下,对于补充的数据我们又是如何构造的。基准数据拥有公共 ID,所以它们可以被 Key By 到数据窗口里进行计算。但是补充数据点往往是各自用各自不同的 ID 进行关联,所以这个时候我们就可以类比数据库里的多表 join 了。不同的补充数据就类似于一张不同的表,通过不同的字段与基准数据簇进行 join 操作。

23.jpg

这就是我们遇到的挑战,它不仅关联字段不同,水位线的推进速度也很可能不一样,这都是无法把它们两者放到同时间窗口中计算的关键因素。

那么如何去解决这个问题呢?如何基于扩展的基准先进知识,关联回没有公共 ID 的补充数据呢?这正是整个解决没有公共 trans_id 还能形成会话的关键所在。

24.jpg

类比 join 操作,Flink 已经为我们提供了非常好用的算子,叫做 Interval Join。即两种输入数据分别取自己的特定字段作为 key,然后通过这个 key 把他们分到同一分组上,进行时间区间内的 join。

Flink Event Time Interval Join 是把当前流和对手输入流里,指定上下边界的区间内数据进行 join,这种特性就非常适用于我们这种场景,因为当我们从基准数据簇中取一个字段,和从非基准的补充中取一个字段,如果它们等值,那就意味着它们属于同业务会话,它们应该进行关联。

这个时候就可以用 Interval Join 算子进行关联,而且 Interval Join 不会打开时间窗口,因为每条流的 GC Watermark 是根据对手流加上我们提前配置的边界时间区间来进行的,这种结构就非常适合两种数据流时间水位线推动不一致的情况。

25.jpg

但是还有另外一种情况,就是当某一条数据来源有延迟的情况下,这笔数据会被丢失,这是 Flink 1.16 正式版之前的情况。在 Flink 1.17 版本中,社区的小伙伴已经把这个代码合并进去了,后续很期待在新版本中使用这个功能。

26.jpg

当数据延迟进行补回的时候,我们的处理方式是,把延迟数据和当时关联的上下文,放到消息队列里,通过流重新消费出来,并根据当时关联的上下文,重新从数据存储里把写进去的会话查回来,然后用同样的逻辑重新把这笔数据补回更新,写回数据库。

这样整个过程中无论是实时关联,还是延迟数据的补回,用的逻辑都是完全一样的,保证了我们处理逻辑的简洁和一致性。

27.jpg

最终我们用 Flink 实时关联出来的业务会话会被存储起来以供检索,并通过 Luna 平台以行为树的形式进行展示。

HTAP 风控平台建设

当我们完成了算法可行性测试,并使用 Flink 实现了技术原型后。接下来就是如何把这一整套框架平台化,使其成为便捷、准确、丰富的风控平台。

28.jpg

风控平台需要做到以下这些功能。

支持微观排障,可以具体查询某一笔订单、业务会话当时的业务场景,把它还原出来;支持从宏观上统计整个环境的各种数据量。且配置和查询都需要是自助、向导式的。

29.jpg

基于以上的考虑,我们设计了 HTAP 实时风控平台 Luna。基于这个平台,用户就可以自己从各种异构数据源中选择,配置业务行为树和分析模板。然后平台会根据配置好的模板,起 Flink 流算出业务会话的结果,形成会话结果存到存储层。且支持用户从平台上进行条件检索,进行多维度的聚合。

30.jpg

分析模板的配置我们是做了自动更新,也就是所有平台上的更新都无需人工运维。

从上图中可以看到,核心组件是计算层的 Flink,加上存储层的 TiDB,加上我们自己基于 JavaScript 的平台服务系统。目前可以达到微观查询是毫秒级,多维度的风控聚合结果在年级别都可以做到秒级查询。

31.jpg

我们的平台支持,用户从不同的数据源中选出,需要参与这一次关联分析的数据和关注抽取的字段进行配置。配置好后,Flink 会根据这些配置,自动生成出 Flink 的 Source 和 Sink。

32.jpg

然后进行行为树的定义。定义整个业务行为会发生的动作,本质就是用人力运维排障方法论进行沉淀和泛化,将配置的形式固化下来。之后这些配置模板就会用于生成 Flink 流的 UDF 配置,并被实时同步到运行中的 Flink 流中。

33.jpg

除此之外,配置界面还提供了预览功能,即可以一边配置一边预览整个行为树。

34.jpg

风控场景上的分析模板修改后,如果不涉及数据源的增减,我们的流可以通过 broadcast stream 的特性进行自动同步和变更。

35.jpg

从架构图中可以看出,我们选择了 TiDB 作为关联结果的存储层。那么我们是如何考虑的呢?

  • 数据结果需要灵活可拓展,且适配索引。这样用户就能快速的自由配置抽取字段。
  • 频繁的更新操作。因为我们的计算逻辑决定了我们会构造基准数据,再构造补充数据,以一种异步的形式写到数据库,所以需要频繁更新。
  • 完备的聚合函数。因为宏观统计需要做各种各样的聚合,以满足我们数据分析统计的需求。
  • 满足业务需求的写入/读取速度。

这样就可以使用列转行的结构,存储到我们的关系数据库里了。

36.jpg

列转行是把会频繁发生增减字段的 DDL 转化为 DML,就可以支持我们灵活的数据结构。

37.jpg

每个字段都需要索引这样的特性,这在数据量持续增大的表上,就有着非常优秀的特性。

38.jpg

在这样一种存储结构上,我们的微观业务会话查询就可以做到毫秒级,灵活结合多种条件进行检索,以帮助运维人员快速查看线上风险和可能发生的故障原因。

39.jpg

当我们点击查看任何具体的业务会话时,公共平台就会展示出当前这个业务会话的业务行为树,并抽取出有助于排障的一些关键字段和二级指标,极大方便了我们的运维人员排查具体问题的场景。对于常见的问题,我们甚至还会用结论模型直接给出风控结论,让我们的运维人员进去就能马上看出问题所在。

40.jpg

对于宏观统计,大家肯定也想到可以使用 SQL 作用在上面来进行统计了,毕竟我们把数据存在了关系型数据库 TiDB 里,但这里还存在着一些坑点。

41.jpg

当我们的数据量超过 10 亿的时候,我们的数据聚合时间会出现一些变化。比如当粒度是一小时,聚合时间是一天的时候,我们数秒可以完成。但当我们把时间拉到 60 天,几乎就出不来了。

在查看数据存储层的时候会发现,TiKV 已经 IO 满了,而且 CPU 飙升,因为我们做的数据量实在是太大了。

42.jpg

通过分析整个执行计划可以看到,TiKV 使用常规的模式进行 SQL 把所有数据捞到 TiDB 层进行聚合计算。这样做获取的数据函数会非常多,随着我们时间区间的增大会越来越缓慢,这样我们肯定是不能接受的。

43.jpg

那么我们来回看一下风控的 AP 需求,我们需要读取大量实时的关联的数据点;支持有复杂的聚合函数,且我们的查询不应该影响到 Flink 流进行 TP 写入。

这个时候就会想到,TiDB 有一个叫 TiFlash 的组件,它可以完成 TiDB 的 HTAP 特性。也就是 AP 和 TP 同样用 SQL 来完成,且它是物理隔离的,这就非常的适用于这样的场景。

44.jpg

TiFlash 伪装成一个 Raft Learner TiKV 节点,加入 Raft Group,参与数据实时、事务性同步。这样就可以做到 AP 和 TP 的物理隔离,并且它还支持事物,这样就可以在执行 SQL 的时候无感进行 HTAP 了。

45.jpg

在进行这样的优化后我们可以看到,当我们的查询包含多层 join,甚至有分位数计算的时候,90 天聚合时间,粒度查询可以在十秒内返回和完成,这可以说是一次质的飞跃。

46.jpg

最后,我们把宏观统计提供给用户。在 TiFlash 的助力下,我们的平台可以做到秒级的 AP 多维度聚合查询。这种聚合查询出来的结果可以让我们的数据分析人员,从更高层次对整个业务环境的风险进行识别。

提升风控结果数据能效

当我们可以实时产生业务会话的结果,并在平台上展示的时候,接下来我们将通过以下几点提高数据效能。

  • 风控结论生成:节约重复人力成本
  • 标签和统计:将详情数据归类统计为宏观数据
  • 数据打宽:增加分析维度
  • 可视化展示:挖掘数据规律

47.jpg

那么我们为什么把数据存储在 TiDB 这样的一种关系型数据库里呢?

因为 TiDB 作为一个分布式数据库,被我们广泛存储各项业务的事实和维度数据了。如果我们把风控数据簇也放在这里面,通过简单的专业操作我们就可以完成数据的拓宽,丰富我们的数据报表。

48.jpg

不仅是产生离线报表的时候可以这么方便的转,我们在实时计算的时候,也进行了 Async Join,通过 Async Join 转 UDF 进行实时数据打宽,同时我们支持多种存储介质。

49.jpg

对于这种 Async Join,我们利用了 Flink 的 Async IO 的特性,并在 join 的时候进行了一些优化。比如进行批的 join,不同时间水位线的缓存 join 以及 timeup 数据的侧输出等等,这些都为数据的准确性提供了保障。

50.jpg

通过数据打宽后,我们的风控统计分析维度就可以更上一层楼了。之前通过 ID 无法做到的特殊聚合,现在把数据打宽,都可以进行可视化的一些分析和展示了。

51.jpg

52.jpg

除此之外,对于常见问题,我们支持预先配置结论模型。当运维人员实时查询微观会话时,直接为他们给出结论。

53.jpg

得到结论后,我们就可以从更高的角度,观察和统计整个业务环境的宏观情况了,甚至可以进行实时的业务环境监控。从而提高故障的发现率、预警率、预警的准确率以及整个运维人力的能效。并且通过可视化的展示可以使我们的风控平台更准确的提供服务。

发展历程与展望未来

54.jpg

早在 2017 年我们就对实时计算开始调研了,并在 2018 年形成了双向发展的规划,分别是平台化和 SDK 手脚架的改造,经过多层的迭代,最终形成我们的一站式运维平台。

55.jpg

随着平台和 SDK 的发展,我们的实时业务线也越来越广泛。比如从最早的日志分析监控,到通用的解析 ETL,到用户画像,到复杂的关联分析,再到如今的实时风控平台,我们也是在实时领域越走越远,这都是 Flink 给我们带来的变革。

未来我们希望,可以实时风控平台可以支持更多的功能。比如我们希望支持用 Flink-SQL 即席查询风控结果;用户反馈驱动的风控模型修正;结合 Flink-ML 挖掘更深层次数据价值。

相关推荐

TiDB 可观测性解读(二)丨算子执行信息性能诊断案例分享

通常我们可以用 explain analyze 语句获得算子执行信息。explain analyze 会实际执行对应的 SQL 语句,同时记录其运行时信息,和执行计划一并返回出来,记录的信息包括: actRows 、 execution info 、 memory 、 disk。不同算子的 execution info 可以通过 TiDB 文档 ( https://docs.pingcap.com/zh/tidb/stable/sql-statement-explain-analyze )了解。

TiDB_PingCAP 的博客 1020

TiDB × AI :DeepSeek 时代你需要什么样的数据基座

AutoFlow 是一套 GraphRAG 框架,不仅提供了类似于 LlamaIndex 的能力,而且还内置语义化的知识图谱构建和召回,以及我们在 AutoFlow 上实践得出的一系列行之有效的领先的 RAG 能力(这些接下来会介绍)。不过需要强调的是,Dify 是一个开箱即用的非常易用的界面,而 AutoFlow 虽然功能更强却则具有比较高的使用门槛,所以这两个选择其实面向了不同的群体,用户需要依据自己的实际需求进行选择。它并非传统的基于规则的优化工具,而是利用大模型的知识来优化不同类型的数据库。

TiDB_PingCAP 的博客 1417

架构师必看!现代应用架构发展趋势与数据库选型建议丨TiDB vs MySQL 专题(一)

随着业务系统数据量的增长,早起只能无奈采取分库分表方案以及架构,这不单为运维带 来了极高的复杂度,同时对业务开发也带来的极大的入侵,SQL 只能限定按照 shard key 维度进行编写,无法任意维度的进行 SQL 查询,开发不得不牺牲业务需求,业务的发展也不得不受限,同时又需投入大量的高精尖人才进行开发维护。这对数据库的承载能力提出了极高的挑战,不但需要承载大数据量,又需要保障业务读写性能的稳定性,而在数据的承载能力上,MySQL 的极限,是 TiDB 的起点。一行命令完成扩展,无需任何的人工干预。

TiDB_PingCAP 的博客 1233

TiDB 观测性解读(一)丨索引观测:快速识别无用索引与低效索

通过识别并优化未使用或低效的索引,可以减少资源浪费,并提高系统的响应速度和稳定性。在 TiDB 中,TIDB_INDEX_USAGE 系统表提供了相对丰富的索引使用统计数据,帮助 DBA 快速发现低效索引,并通过优化或删除它们来提升数据库效率。尽管删除索引的操作相对简单,但在实施时仍需注意潜在的限制和风险,尤其是在大数据量和高并发环境下。定期检查索引使用情况,尤其是对于大规模数据库。确保用于决策的统计数据涵盖足够长的业务周期,避免误判。

TiDB_PingCAP 的博客 973

海量数据融合互通丨TiDB 在安徽省住房公积金监管服务平台的应用实践

目前安徽省住房公积金监管服务平台已具备一系列功能模块,包括首页、运营分析、统计报表、智慧大屏、数据治理、风险检查和系统管理。其中,运营分析主要用于从不同维度分析公积金业务指标,统计报表则负责生成、填报和查询住建部规定的报表,同时也支持省级用户的报表导入、核对和更新。智慧大屏提供了综合和业务两大类可视化展示,而数据治理模块则涵盖了传数统计、数据检核和人工数据核对等功能,以确保数据的质量。风险检查方面,平台不仅支持公积金中心的自我检查,也支持省厅的检查,并可以根据需要添加新的检查模型。

TiDB_PingCAP 的博客 1133

TiDB 2024 年度报告:增长的故事

TiDB 2024 年度报告:增长的故事

TiDB_PingCAP 的博客 328

TiDB Chat2Query 深度解析:我们如何打造一款更高效、准确的智能 SQL 生成工具?

上个季度的销售额是多少?“哪个产品类别表现最佳?“本月客户投诉的趋势如何?相比其他工具,Chat2Query 能够对用户上传的大规模数据集进行理解和分析, 摒弃繁杂的专业术语和查询语句,Chat2Query 使得用户能够通过自然语言直接向数据库提问,并即时获得答案。

TiDB_PingCAP 的博客 1335

4.98 亿月活背后的国产数据库:咪咕视讯携手 TiDB 攻克内容分发核心系统挑战

咪咕大概是 2018 年左右正式开始对分布式数据库进行研究的,到现在为止我们看到和测试过太多的国内产品。但是在当时,敢用 LSM 树而不是 B+ 树做存储引擎,敢做分布式存算引擎分离的,能够行列副本共存、优化器路由分流做 MPP shuffle 的,市面上真的真的非常非常地不多见。比较多的是精致的分库分表外挂,或某些知名国外产品的模仿版。TiDB 的产品给我的印象是极具冲击性的,那么大胆、不随大流。验证和使用下来,效果也是切实的。

TiDB_PingCAP 的博客 1204

53 倍性能提升!TiDB 全局索引如何优化分区表查询?

在 TiDB 中,全局索引是一种定义在分区表上的索引类型,它允许索引分区与表分区之间建立一对多的映射关系,即一个索引分区可以对应多个表分区。这与 TiDB 早期版本中的本地索引(Local Index)不同,本地索引的索引分区与表分区之间是一对一的映射关系,即一个分区对应一个局部的索引块。全局索引能覆盖整个表的数据,使得主键和唯一键在不包含分区键的情况下仍能保持全局唯一性。此外,全局索引可以在一次操作中访问多个分区的索引数据,而无需对每个分区的本地索引逐一查找,显著提升了针对非分区键的查询性能。

TiDB_PingCAP 的博客 1356

一行代码不用写,用 Autoflow + Gitee AI 搭建本地知识库问答机器人

本文详解 AutoFlow 从部署到配置的完整流程,包括数据库连接、模型设置、知识库创建及聊天引擎配置,实现了一行代码不用写的问答机器人快速搭建。轻松上手,助力开发者探索智能问答解决方案。

TiDB_PingCAP 的博客 1046

TiDB 分布式数据库多业务资源隔离应用实践

本文将分享某客户在 TiDB 分布式数据库中实现多业务资源隔离的实践案例。

TiDB_PingCAP 的博客 1317

攻克多版本运维难题:爱奇艺百套 TiDB 集群升级至 v7.1.5 实战宝典来袭!

本文将深入探讨爱奇艺如何通过升级,成功将百套 TiDB 集群从多个旧版本升级至 v7.1.5,攻克多版本运维挑战,获得更稳更快的 TiDB 使用体验。

TiDB_PingCAP 的博客 1157

百亿大表的实时分析:华安基金 HTAP 数据库的选型历程与 TiDB 使用体验

明确需求:首先评估业务对 TP(事务处理)和 AP(分析处理)的需求比重,确定数据量、查询速度和响应时间,确保数据库能满足业务对实时性的要求。技术特性评估:考虑数据库的实时分析能力、可扩展性、高性能、安全性和灵活性,以支持业务人员实施的场景需求,特别是后台营销人员对数据实时性的需求。集成与兼容性:评估数据库与现有数据库、应用程序和其他关键系统的集成能力,确保数据同步策略的无缝实施。安全性与可靠性:重视数据库的安全性措施、容灾备份机制、数据恢复能力和错误处理机制,保障业务连续性和数据安全。

TiDB_PingCAP 的博客 1019

TiDB 的高可用实践:一文了解代理组件 TiProxy 的原理与应用

TiDB 是一款典型的分布式存算分离架构的数据库,其中计算层由多个无状态的 TiDB Server 组成,这些 TiDB Server 同时对外承担连接请求。为了可以将连接分发到多个 TiDB Server 节点上,一般需要借助外部负载均衡组件如硬件负载均衡 F5、软件负载均衡 HAProxy 等。为了实现全链路的高可用架构,我们经常也需要考虑负载均衡组件本身的高可用性,比如通过 KeepAlived 来保证 HAProxy 的高可用。

TiDB_PingCAP 的博客 1255

你需要什么样的资源隔离?丨TiDB 资源隔离最佳实践

通过本文的学习,相信大家对 TiDB 的资源隔离能力有了更全面的理解;大家可以根据不同的场景需求,选择合适的资源隔离方案。如果您有新的资源隔离需求或场景,欢迎与我们联系。

TiDB_PingCAP 的博客 1254

狂飙 50 倍丨TiDB DDL 框架优化深度解析

前面我们介绍了 TiDB DDL 任务的整体执行流程。接下来,让我们聚焦到在线 Schema 变更的细节上。执行单步变更:Job Worker 会根据任务定义,执行一次在线 Schema 的变更。每一次变更都代表着 Schema 向目标状态迈进了一步,即进入下一个状态,可能的状态包括 write-only 和 delete-only 等。状态更新:完成单步变更后,Job Worker 会将当前的 Schema 状态更新到元数据中。

TiDB_PingCAP 的博客 1203

唐刘:TiDB 的 2024 - Cloud、SaaS 与 AI

最后再说下产品,在今年,我们发布了TiDB 8.1和8.5两个版本。在 2025 年,我们会有一个重大的改变,就是会持续的投入到 8.5 版本的质量加固,同时收敛新功能的开发,只会在 2025 年发布一个有更高质量的 LTS 版本。关于 TiDB 8 系列,我后面再写一篇文章详细的介绍一下吧。在 2024 年,我们交付了非常不错的成果,当然,能取得这样的成绩,来自于我们不断地交付优异的产品,满足客户的需求,赢得客户的信任。

TiDB_PingCAP 的博客 1054

PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”

TiDB 凭借领先的 HTAP 架构设计,支持用户在云上的数据库中同时运行关键业务交易和实时分析任务,充分享受云的弹性优势和业务连续性优势,助力企业实现数据敏捷。PingCAP 是业界领先的企业级开源分布式数据库企业,提供包括开源分布式数据库产品、解决方案与咨询、技术支持与培训认证服务,致力于为全球行业用户提供稳定高效、安全可靠、开放兼容的新型数据服务平台,解放企业生产力,加速企业数字化转型升级。

TiDB_PingCAP 的博客 703

TiDB 8.5 LTS 发版——支持无限扩展,开启 AI 就绪新时代

TiDB 8.5 扩展了Runaway Queries 的功能,新增“处理行数”和“用量(RU)”作为识别标准,实现更精确的识别,并允许将这些 Runaway Queries 放入一个资源可控的组中,确保在高负载环境下集群的稳定性。TiDB 8.5 通过实例级执行计划缓存功能,使得同一 TiDB 实例内的所有会话共享执行计划缓存,减少SQL编译时间,从而降低整体 SQL 运行时间,提高 OLTP 的性能和吞吐量,并有效地控制内存使用,提升数据库的稳定性。

TiDB_PingCAP 的博客 776

基于时间维度水平拆分的多 TiDB 集群统一数据路由/联邦查询技术的实践

通过该组件与 TiDB 分布式数据库的有效结合,可以实现近乎无容量上限的超大规模数据管理,尤其是对于重要程度高、吞吐量大、业务敏捷性强、数据冷热特征明显的业务系统。不仅能够支撑面向内外部客户业务无损的多维度、不受分片键制约的灵活高效访问,还可以有效控制和平衡单集群的负载、容量、资源利用率、稳定性等关键指标,在不增加过多复杂性的前提下实现更强的整体扩展能力。当然,组件的现有功能更多是聚焦在当前的客户场景,未来可以按需在功能性、易用性、高性能等方面进一步优化和提升。

TiDB_PingCAP 的博客 915

Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战

Rakuten 乐天是一家成立于 1997 年的日本公司,总部位于东京,员工总数超过 30,000 人,业务遍及 100 多个国家和地区。除了电商业务外,乐天还涉及电信、金融等多个行业。乐天的积分系统在日本非常普及,用户通过使用乐天的服务,如银行卡、手机卡等,可以获得积分,并在乐天商城中使用这些积分进行购物或抵扣,我们每个季度还会举办促销活动、会有大量用户高频访问积分系统,因此,乐天积分服务平台的性能、延迟和可用性要求极高。

TiDB_PingCAP 的博客 1355

平凯星辰亮相开放原子开发者大会,TiDB 荣获年度活跃开源项目奖项

12 月 20 - 21 日,以“一切为了开发者”为主题的 2024 开放原子开发者大会暨首届开源技术学术大会在武汉成功举办。平凯星辰亮相本次大会,出品 AI 时代的数据库技术发展论坛,获评“校源行”优质开源课程合作单位。由平凯星辰创立的开源分布式数据库 TiDB 获评“2024 年度数据库领域国内活跃开源项目”,7 位 TiDB 开发者获评“2024 年度数据库领域国内活跃开源开发者”,彰显了 TiDB 在开源数据库领域的卓越影响力和社区活力。

TiDB_PingCAP 的博客 606

B 站数据库负责人赵月顺:助力海内外业务增长,百套 TiDB 的选型与运维实战

B 站的 TiDB 集群规模已达到 100 多套,计算节点超过 2000 个,存储节点超过 800 个。TiDB 的应用场景非常广泛,包括视频观看、一键三连、发送弹幕、撰写评论、阅读漫画以及视频后端的存储等。B 站的 TiDB 部署采取了存算分离的策略,计算节点被部署在容器中,这种做法的优势在于能够充分发挥容器化管理无状态服务达到水平弹性拓展能力,允许根据需求随时对计算节点进行扩展或缩减,整个过程仅需一次服务发版,有效提升了效率与灵活性。存储节点则继续部署在物理机上。

TiDB_PingCAP 的博客 1234

微众银行携手平凯星辰荣膺金融科技创新奖,共同打造纳管千台服务器的大规模数据库运维平台

在过去的十年中,平凯数据库在金融行业积累了丰富的实践经验,已经在国有大型银行的 PB 级别数据服务平台、头部商业银行的核心交易系统、头部保险公司的核心保单系统、头部证券公司的核心交易系统等领域,成功完成了对国外商业数据库和 MySQL 数据库的替换升级,部署了超过 1,000 套关键业务系统,集群节点总数超过了 10,000 个。为了应对这些挑战,同时满足金融行业对高可用、高可靠、高性能数据库的需求,微众银行开发了一套完整的运维体系,打造了大规模信创原生分布式数据库智能运维平台。

TiDB_PingCAP 的博客 804

知乎 PB 级别 TiDB 数据库集群管控实践

知乎的数据库团队以“致力于提供稳定、高效和易用的数据库服务”为目标,为公司业务团队提供更好的 TiDB 存储服务来应对高并发、复杂查询和大数据存储的需求。本文详细介绍了 TiDB 的生态架构,包括核心组件、数据迁移与同步、运维与监控平台、备份与恢复、生态集成、K8s 支持、工具集和安全与审计等方面。同时探讨了知乎如何在云上和云下环境中管控 TiDB 集群,以及如何通过自研的天穹平台实现数据库平台化建设,提升业务研发团队数据库变更和 DBA 团队的资源管控效率。

TiDB_PingCAP 的博客 1180

TiDB 优化器 | 执行计划管理及实践

本文深入解析了 TiDB 优化器的执行计划生成过程及其局限性,介绍了如何通过 Hint、SQL Binding、执行计划缓存等技术手段进行执行计划管理,确保查询性能的稳定性和高效性。

TiDB_PingCAP 的博客 1315

商业银行基于容器云的分布式数据库架构设计与创新实践

本文介绍了某商业银行基于 TiDB 和 Kubernetes(简称 K8s) 构建的云化分布式数据库平台,重点解决了传统私有部署模式下的高成本、低资源利用率及运维复杂等问题。通过引入 TiDB Operator 自动化管理与容器化技术,银行能够实现多个业务系统的高可用、弹性扩展与自动化运维,极大提高了运营效率与资源利用率。本文还详细阐述了平台架构设计、面临的技术挑战及创新解决方案,展示了 TiDB 在金融行业数字化转型中的应用前景。

TiDB_PingCAP 的博客 1360

PingCAP 荣膺 2024 亚马逊云科技合作伙伴两项殊荣

近日,在 2024 亚马逊云科技 re:Invent 全球大会上,PingCAP 荣膺亚马逊云科技年度技术合作伙伴和年度亚马逊云科技 Marketplace 合作伙伴两项殊荣。这是 PingCAP 连续第二年获得亚马逊云科技年度合作伙伴奖项,彰显了 PingCAP 在与亚马逊云科技合作服务客户的过程中所展现的卓越技术实力和专业服务能力,共同推动全球用户业务取得成功。

TiDB_PingCAP 的博客 569

基于 AutoFlow 快速搭建基于 TiDB 向量搜索的本地知识库问答机器人

通过本篇文章介绍,相信大家对使用 PingCAP 开源项目 AutoFlow 实现快速搭建基于 TiDB 的本地知识库问答机器人会有一个完整的了解。如果提前准备好 Docker、TiDB 环境,整个搭建过程估计在 10 分钟左右即可完成,无须开发任何代码。文中使用一篇 TiDB 文档作为本地数据源作为示例,在实际情况中,您可以基于自己的企业环境用同样的方法快速构造企业内部知识库问答机器人。

TiDB_PingCAP 的博客 1283

TiDB 关联子查询及半连接的优化实践

TiDB 针对子查询语句会执行多种子查询相关的优化,以提升子查询的执行性能。半连接语句和关联子查询语句是常用的两类子查询,TiDB 优化器默认包含一些自动优化策略,同时 TiDB 也提供额外的 HINT 用于影响优化器在特定场景下可以选择更高效的执行计划。本文针对半连接及关联子查询语句在 TiDB 中的用法及优化技巧进行说明。

TiDB_PingCAP 的博客 1405
上一篇: TiDB 在安信证券资产中心与极速交易场景的实践
下一篇: 促进关键软件高层次人才培养:平凯星辰与华东师范大学签订联合博士培养合作协议
TiDB_PingCAP
TiDB_PingCAP 企业官方账号 企业官方账号
博客等级 码龄10年 2726粉丝 780原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值