课时6:Tair在雪球和作业帮的使用剖析

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,通用型 2核4GB
简介: 课时6:Tair在雪球和作业帮的使用剖析

Redis入门训练营:课时6:Tair在雪球和作业帮的使用剖析

课程地址:https://developer.aliyun.com/trainingcamp/5fd706c381604c09bebaf774a6290c5a?spm=a2cwt.28190922.J_8357884230.1.1e817127ycWQyx

Tair在雪球和作业帮的使用剖析

 

内容介绍

一、Tair三种形态对比

二、Tair持久内存型产品概况

三、FAQ

四、作业帮的业务特点

五、 Redis双云架构存在的问题

六、Tair的优势和上线方案

七、双云部署

八、 Tair其他优势

 

一、Tair三种形态对比

今天分享的内容是Tair在典型金融行业的应用。
image.png

首先,我们来分享一下Tair的三种形态对比,如果我们以Redis社区版整个性能1.0为基准的话,下面Tair分三个版本,分别是Tair性能增强型,Tair持久内存型,Tair容量存储型,如果您对性能有较高要求,那么您可以选择性能增强版本,它的整体性能相对于Redis社区版提高了两到三倍,然而,整体价格也相应增加了两倍。因此,如果您在相同的使用情境下需要更高的性能,可以考虑选择性能增强版本,它在极限抗压和高热点承受方面表现更出色。

此外,性能增强版本还包含一些Redis社区版不具备的高级数据结构,这些结构非常适合需要不断迭代的应用。另外,选择性能增强版本还将获得一个高性能的内存数据库,与天猫、淘宝、高德和优酷等同款,在测试中,它已经达到每秒15亿次的性能水平。此版本还提供了一些高级企业功能,例如随机申请的恢复和全球分布式以及Redis分布式散列,这些功能社区版本不具备。

总结来说,性能增强版本注重提供90%的性能,而价格仅为社区版的70%,可以说是非常完美的选择,尤其是在性能至关重要的应用中。后面还有一个Tair容量存储型,这不上本节重点,重点内容是Tair的持久型内存,帮助更好的在性能跟价格方面达到很好的平衡

 

二、Tair持久内存型产品概况

这个版本在兼容性方面表现非常出色,这也是为什么它被称为底层核心采一。它在内部进行了大量的核心机制优化。每个层级都经过了持续的优化,以确保达到稳定性和可靠性。

因此,您可以期待没有周期性抖动或其他类似的问题。

image.png

 

此外,还有一个关于存储的话题,我们可以将其视为断皮卡源存储产品。然而,今天我们的主要重点是存储,我们将帮助您找到性能和价格之间的良好平衡。

让我们来概括一下这一层的产品特点。太阳上会存是全球首家公共云内存数据库。如果您使用开源数据库,您可能会面临三个主要问题之一。

首先,内存容量受限制,扩容不方便,受物理限制;其次,内存本身成本较高;最后,存在双重系统的问题,例如使用MySQL,可能需要维护两个不同的数据库。

现在,让我们来看一下这个产品的特点,它是一个平台,底层使用了强大的持久化引擎,如果您选择使用它,您将获得原生数据管理,无需担心扩容和运维,也不再需要传统监控告警和手工维护。整体性能方面,正如前面提到的,它能提供接近内存的90%性能,但能够降低您的成本。使用这个版本可以显著降低成本,基本上只有70%的成本。这个版本适用于多种情况,包括温和的数据、温热数据和部分热数据。只要您的应用场景不要求极致性能,这个版本都非常方便,而且价格非常合适。传统方法中,如果您需要将其用作缓存,仍需要额外的持久化存储。而在复杂的情况下,使用标准的MySQL服务器集群也可能需要更多成本和维护工作。然而,如果您选择使用这个版本,您可以直接利用内存实现缓存加值的存储,简化架构并降低综合成本。

 

image.png

再来看一看与开源版本的比较,整体功能非常出色。性能方面,基本上是标准版本的90%,延迟也更低,服务更平稳。与开源版本相比,这个版本减少了抖动和其他不可预测的延迟情况。

成本方面,我们最近可以达到内存的50%,而且无需自行建设,避免了预留内存导致的额外花费。如果您之前考虑过使用内存,那么这个版本可以避免扩容的麻烦。此外,容量方面也进行了优化。

在持久化方面RPO等于零,可靠性非常高,而关于企业能力方面,原生版本没有这些功能,但我们开源版本计划完全兼容这些企业级功能,社区版本也包含一些企业能力,例如数据备份和增强的数据结构,目前我们已经具备这些功能。

image.png

我们的社交平台将迅速得到支持。以雪球客户为例,雪球是一家拥有超过4300万用户的在线财富管理平台,股票和基金投资者可以在雪球社区广泛交流并进行交易。雪球的主要内容涵盖了A股、港股、美股以及公募和私募基金等市场。每天数百万用户在社区内互动交流,并跨市场、跨类别地查询行情数据、浏览内容和进行创作和下单交易。目前,雪球使用阿里云内存存储并实时呈现给用户市场的行情和股票数据。

客户面临的主要问题是成本非常高。内存利用率很低,需要按需开通并保留额外的内存容量,导致高昂的成本。此外,数据库的数据退化问题也存在,例如股票信息的K线数据。雪球的业务不仅对性能有形要求,还对数据的持续性有要求,但如果启用了传统版本,性能可能下降,对客户体验产生不利影响。如果不启用传统版本,数据也可能受到影响,造成一种困境。

另一个问题涉及运维方面。如果使用传统的开源版本,运维和维护工作难度较大,特别是随着业务量的不断增加。原生扩容、故障处理和问题排查等工作可能导致团队需要经常通宵工作。

扩容时可能会出现各种意想不到的问题,这显然不利于业务,而且会增加大量的工作量。如果您考虑成本,并且希望百分之百的可靠性,云上资的使用是一个不错的选择。此外,如果您关注成本的话,完全可以考虑使用这种解决方案。我们的雪球整体来说,仅需支付传统版本的70%的价格,同时吞吐能力和访问延迟都相当不错。如果您的数据需要实时化处理,我们的产品可以满足您的需求,而且具备断电不丢失的特性。

再加上产品提供的开箱即用弹性能力,可以解决客户的重要数据存储问题,并简化客户端维护成本和运维复杂性。我们的解决方案主要通过脚本实现,无需客户在运维方面付出太多,也不需要预留大量成本。因此,综合成本较社区版本更低,同时吞吐能力可以达到社区版本的90%以上。

这个解决方案能够满足客户的高度可靠性需求,并解决了许多业务挑战。它能够实时处理数据,并确保断电时数据不会丢失。这种能力不仅限于常见的缓存,而是提供了可靠的高性能持久化数据存储,可以显著降低客户的数据运维复杂性。它能够帮助客户轻松应对变化,降低压力,包括弹性缩放、审计、监控和分析等方面都得到了改善,客户能够将更多精力投入到业务中,而不是运维层面。

客户对我们的支持表示非常认可,他们希望简化架构,降低维护成本。在采用这个数据库后,整体数据架构得到了优化,通过这种解决方案消除了缓存与磁盘存储一致性的问题。扩容变得非常简单,不再需要预留大量内存,因为扩容操作可以轻松应对容量需求,而且无需客户再通宵进行数据迁移。客户对我们的解决方案非常满意,包括使用我们的存储以及MySQL等。客户主要在K线和交易等场景中使用,这些场景对性能要求非常高。在这些场景中,我们的解决方案得到广泛应用。此外,客户还注意到了内存的重要性,它在整个解决方案中扮演着关键角色。

我们将内存主要用于性能要求较低的场景,主要负责数据的缓存,我们相信这对雪球和其他客户都有很大帮助。除了这一点,我们还扮演了一种消息传递的角色。此外,对于阿里云,我们保持着密切的合作联系,之前遇到的问题都能够迅速解决,目前客户的反馈没有新的问题和疑问,使用体验非常顺畅。我们可以看到,客户从港股、美股到A股等各种市场都在使用我们的解决方案,并成功整合了MySQL。总的来说,我们的业务价值在于降低成本,提高效率,为客户提供高效的缓存和高性价比的存储能力,大大简化了客户的维护成本和复杂度。

 

三、FAQ

性能方面非常接近社区版本,并且提供了卓越的存储能力。在这里,我总结了客户在商业过程中最常见的问题。

首先是性能方面的问题,官网也会提供详细的资料,性能增强可达到接近300%,与开源版本相比高出90%。
image.png

另一个常见问题是工具选择,我们通常会有两种工具供选择。一种是Redis工具,另一种是我们推荐的dts,dts是阿里云的数据库同步工具,支持从MySQL等各种数据源发送数据至构建的数据仓库。在雪球中也使用了这个工具,它支持全量和增量同步,可以帮助业务在商业过程中保持平滑的运行。值得注意的是,在全量同步时是支持限速的,这可以帮助避免对数据库造成过大压力。我们可以根据每秒查询速率和每秒全量移动的行数等因素进行限速调整。

第三点是客户端,我们目前推荐使用端来返回库的功能,特别是在期间。在性能方面,它的故障恢复时间更快,但需要注意的是,与作者进行了多次沟通后,作者承认了这个问题,但目前还未进行充分改进,因此我们一般不建议详细介绍。关于切换,您可能感兴趣的是,我们支持Tair增强型、持有内存型甚至是容量存储型三种类型,但目前还不支持直接的平滑切换。

我们正全力开发中,但目前我们可以通过前面提到的DTS 同步工具来实现数据同步后的切换,这是我们目前可行的方式。


四、作业帮的业务特点

我来自作业帮,担任DTS负责人的职务,非常高兴有机会与大家分享一些Tair在作业帮的实践经验。

首先,简要介绍一下作业帮,作业帮成立于2015年,一直以来,我们借助科技手段,包括人工智能和大数据等前沿技术,为学生提供更高效的学习解决方案。今天的分享内容主要涵盖以下几个部分。

首先,我将简要介绍一下作业帮的业务特点,特别侧重介绍与技术相关的特点。其次,我们将讨论作业帮以前使用的Redis架构,以及在使用该架构时遇到的问题。然后,我们将详细说明与阿里云合作的优势以及为什么我们选择了这个方案。接着,我将介绍当前作业帮的集群架构。最后,我们将探讨在我们现有方案的基础上,我们正在进行的进一步改进工作。

接下来,我们将从作业帮的一些业务特点开始讲起。首先是稳定性,我们的一些流量型服务的用户日活量大约在数千万级别,这种规模对稳定性要求非常高。此外,我们还提供一些履约型服务,对于这些服务,履约时效性要求非常强,一旦在特定时间点无法履约,很难弥补,这将严重影响履约质量,因此稳定性对我们至关重要。

基于对稳定性的高要求,作业帮选择采用多云的方式来提高我们服务的整体稳定性。目前,作业帮已经基本完成多云架构的建设,实现了核心服务的多云部署。多云架构既意味着我们的服务可以在多个云平台上部署,又意味着我们可以通过策略动态地在不同云平台之间调度和分配流量。

第三个特点是自主可控,由于作业帮需要基于多云架构构建整体技术生态,我们在数据存储服务方面需要选择自建服务的道路。当我们开始多云建设时,各云厂商的私有化部署方案还不够成熟,因此自建服务是当时的较好选择。

最后一个特点我想强调的是成本。自成立以来,作业帮一直对成本有着较高的要求,这一点非常重要。

这一点,与我们合作的阿里云团队的各位老师应该都有体会。随着互联网红利消退,越来越多的公司将关注降低成本和提高效率。在我们进行技术方案升级时,成本通常是一个关键考虑因素。我们的升级决策和方案落地通常都从成本的角度出发。

接下来,让我们回顾一下作业帮在采用多云集群之前的架构。在此简化的示意图中,我们仅展示了两个云的情况,每个云内有一个示意分片。用户流量从入口开始按比例分配到这两个云中。这两个云的应用层通过各自的负载均衡服务连接到我们作业帮自研的上游服务。

 

Redis在我们架构中的关键用途包括路由决策、频率控制,以及屏蔽底层节点的故障切换和主从切换等操作。我们在底层使用的是Redis社区版,并实现了跨云部署,节点分布在多个云上。其中,我们将所有主节点都集中在一个云上,无论有多少个分片。从节点则根据业务流量比例分布在各个云上。主从节点之间使用原生复制来同步数据,从节点按比例分布。

具体的路由策略主要包括读请求的路由。我们优先将读请求路由到本云的从库,以避免跨云读取。但是对于写请求,由于只有一个原主库,这种架构下确实会存在一定比例的跨云写入。

此外,您可能注意到左下角有一个独立的节点不承担流量,用于满足那些对Redis有持久化需求的业务。这一设计是为了避免持久化操作对性能的影响。我们使用独立的节点来完成持久化工作。

总体来看,这个架构满足了我们多云架构的需求,并具有令人满意的稳定性。然而,确实存在一些需要优化的方面。这些问题主要分为两类,一类是Redis社区版本身的问题,另一类则与我们的多云架构相关。至于Redis本身的不足,有以下几个方面的问题需要简要介绍:

第一个是Redis本身是一个纯内存的存储引擎,随着业务的不断扩张,我们的数据量已经增长到了数据持久化的级别。寻找降低成本的方法对我们非常重要。

 

五、Redis双云架构存在的问题

通过使用多云架构,我们在一定程度上成功地避免了一些数据丢失的风险。例如,当主节点发生故障时,自动进行主从切换可以一定程度上防止数据丢失。然而,仍然存在一些集群级别或分片级别的故障可能导致数据丢失的情况。有经验的运维人员可能对这些情况有所了解。

此外,原生复制机制不能保证在主动切换时不会丢失数据。如果需要持久化数据,我们需要权衡性能和成本,因为增加持久化节点会导致成本上升。

另一个问题是随着节点数量的增加,集群状态的切换速度会变得很慢,这主要是由于高速协议的原因。此外,Redis的迁移速度相对较慢,这会对集群性能产生负面影响。

由于我们使用的是多云架构,还存在一些与多云相关的问题。例如,跨云数据传输可能导致一些延迟,这对延迟敏感的业务可能会产生一定的影响。此外,在云级别的故障发生时,特别是主节点所在云发生故障时,需要依赖多云管理平台来完成切换,这可能需要较长的时间。

总之,我们在多云架构下面临一些与稳定性和性能相关的挑战,需要通过不断的优化来解决。

 

六、Tair的优势和上线方案

当面对这个问题时,我们与阿里云的PA团队进行了多次深入的交流,并对该方案进行了详细的测试。最终,我们决定采用这一方案,主要是因为它具有以下几个显著的优点:

首先,最大的优势在于成本。采用持久内存作为存储解决方案,其成本仅为普通内存的60%到70%。与此同时,性能基本保持一致,我们在实际测试中实现了百分之98到百分之百的性能水平。虽然相比Redis,它的延迟略高一些,但仍然在业务可接受范围内。目前,我们已经完成了将阿里云的所有节点替换为该方案,而对业务来说几乎没有感知变化。

其次,它是一个天生的持久化方案,数据不会丢失,实现了数据的可靠性和一致性,其PR(持久性比率)几乎等于零。

第三,它的持久化操作相对较低,不需要我们执行繁琐的手动操作。这也意味着我们不再需要单独的持久化节点,进一步降低了缓存成本。

然而,在实施该方案时,我们面临了两个主要障碍。首先,作业帮所有的集群都基于裸金属服务器自建,而这个新方案是一个PA产品,因此我们需要解决如何在自建集群中使用它的问题。其次,作业帮的所有集群都采用多元部署,这也需要我们应对特殊的多云架构问题。

当面对这个问题时,一开始我们对上线这个新方案的成功率持有一定的悲观态度,因为我们面临两个主要问题:一是如何将这个产品部署在我们多云的集群中,二是如何在多元部署的环境中顺利替换节点。

然而,阿里云的Tair团队表现得非常出色,他们在短时间内解决了这两个问题。首先,他们提供了专属集群方案,这意味着我们可以获得云资源的独享,并且可以直接管理主机操作系统,这有助于我们将新方案集成到我们自己的缓存管理平台中。

其次,为了应对多元部署的特点,阿里云的方案使用了专属的完全兼容协议,可以平滑地替换节点。这意味着我们可以在不影响上层用户的情况下,随时将节点替换为新方案的节点。

因此,我们成功地上线了这个新的集群方案,并完成了在阿里云上无缝替换所有节点的工作。

 

七、双云部署

 

image.png

 

在其他云上,在同一个集群内,仍然使用普通的节点,然后一同组成一个跨云的集群。由于使用了这些节点,我们也就不再需要单独的持久化节点,正如大家可以看到,独立的持久化节点现在已不再必要。在这种模式下,从协议到管理命令都实现了完全兼容,整个替换过程对上层业务是完全无感的,无需进行任何业务改造,这一点对于快速上线非常重要,因为业务层完全不需要做任何改动。

这种方式使我们能够快速上线,极大地降低了缓存成本,同时也解决了持久化的问题。然而,坦白说,这种架构实际上是一种妥协方式,为了实现完全兼容,我们无法利用许多其他出色的特性。正如刚才提到的,其中一些已经提到,而其他一些还没有。在这里,让我详细解释一下。首先,它支持多活,最多支持三个集群之间的双向数据同步。对于我们来说,这种多活方案在多云架构下是一个非常理想的选择,可以避免跨云和云级别的问题。

 

八、Tair其他优势

使用这种方案时,我们仍然面临一些挑战。例如,当发生云级别或分片级别的故障时,仍然需要人工介入以执行切换操作。此外,为了与持久化内存的复制兼容,我们不得不放弃一些减少数据丢失风险的功能。还有一些数据迁移协议也无法在现有的架构下支持,因为它们与我们的兼容性要求不符。虽然我们渴望采用更理想的方案,但当前的架构限制了我们的选择。

因此,我们目前正在与阿里云进一步合作,以对现有的缓存方案进行优化。我们已经取得了一些进展,包括在所有作业帮合作的云厂商的持久化内存机型上进行的兼容性测试。这意味着我们可以在这些云厂商的服务器上部署,技术上已经没有问题。
此外,在其他云上部署还需要解决一些商务合作上的问题,但我们一直在与阿里云团队保持合作,并且已经在其他云上部署这一方案与阿里云达成了一致。

因此,我们近期正在进一步优化我们的集群架构。让我简要介绍一下新的架构方案。在新的架构中,每个云上都将部署一个完整的集群,这个集群将具备所有优秀特性,实现了单元闭环的读写操作。同时,我们将利用原生的多活能力,在多云之间进行集群的双向复制。这意味着在发生故障时,不再需要底层的主动切换操作,只需在业务上层进行清流操作即可。

在这个新架构中,我们还将采用阿里云原生的缓存产品,这对于非自研的公司来说也会更加方便。此外,之前我们一直在使用自研的多活架构,现在我们需要进行一些改造,而随着DTS具备了更多的能力,我们的研发成本也会大幅降低。

希望我们的新架构能够尽快上线,一旦上线,我们希望有机会再次与大家分享并提供更详细的介绍。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
8月前
|
存储 NoSQL Redis
课时7:Tair生态及开源module的使用
课时7:Tair生态及开源module的使用
105 0
|
8月前
|
存储 人工智能 NoSQL
课时5:AIGC时代,Tair向量检索助力AI
课时5:AIGC时代,Tair向量检索助力AI
195 0
|
8月前
|
存储 JSON NoSQL
课时4:Tair在游戏行业的应用
课时4:Tair在游戏行业的应用
64 0
|
8月前
|
监控 NoSQL 数据库
课时2:Tair的实操流程及常见问题
课时2:Tair的实操流程及常见问题
127 0
|
8月前
|
存储 缓存 NoSQL
课时1:Redis(Tair) 产品介绍
课时1:Redis(Tair) 产品介绍
156 0
|
存储 缓存 弹性计算
Tair 在雪球和作业帮的使用剖析 | 学习笔记
快速学习 Tair 在雪球和作业帮的使用剖析
358 0
Tair 在雪球和作业帮的使用剖析 | 学习笔记
|
8月前
|
NoSQL Redis 数据库
Tair for Redis数据闪回:任意时间点数据恢复
Redis的数据闪回功能提供了更精细化的数据恢复能力,支持恢复实例指定Key的数据到指定时间点。
339 0
|
10月前
|
弹性计算 NoSQL 算法
阿里云Redis与Tair压力测评
无意中发现阿里云开发社区的训练营活动,其中有一个7天玩转Redis、tair训练营计划,里面可以免费领取三个月的试用礼包,因为是参营任务,不领取都不行的那种,领取之后放着也是放着,不如跑跑数据看看Redis和Tair的性能有什么区别,简单的压力测试下,本次测试并不精确,也不具有太多参考意义,真的就是为了测试而测试。
189 0
|
存储 Dragonfly 监控
Tair 对 Redis 引擎架构之争的看法
云原生内存数据库 Tair 是阿里云自研数据库,兼容 Redis 的同时提供更多数据结构和企业级能力,包括全球多活、任意时间点恢复和透明加密等。
Tair 对 Redis 引擎架构之争的看法
|
存储 NoSQL Redis
《阿里云Redis企业版Tair持久存储系列技术解读》电子版地址
阿里云Redis企业版Tair持久存储系列技术解读
105 0
《阿里云Redis企业版Tair持久存储系列技术解读》电子版地址