作者 黄鹏程 马格
阿里云Tair云原生内存数据库线上名字为阿里云数据库Redis企业版 又称阿里云Tair 从2009年开始正式承载集团业务 是一款历经磨练的企业级产品。它完全兼容Redis的数据结构和通讯协议 包括API接口 并且在内部逐步打磨的过程中 基于Tair研发云上托管云内存数据库。
如上图所示 Tair产品分为三个类型 从性能到性价比有不同的产品排布 下面用1.0X表示开源的Redis的性能与价格 从性能和价格上与三个类型的Tair产品进行对比。
如上图所示 从内存存储方面 Tair三个类型的产品适应不同的场景。
1 数据读写频繁 要求低延迟 支持大连接
2 成本相对不敏感 以满足业务性能需求为主。
1 数据读写较频繁 延迟要求可稍微放宽 存储数据量有一定较大容量要求
2 成本控制较之热数据要求更高。
1 数据读写密集程度低 延迟要求不高 整体存储容量要求高
2 成本是最大考量因素。
在业务方面 阿里云Tair与基于传统Redis存在许多不一样的地方 阿里云Tair业务结构如下所示。
除此之外 阿里云Tair有以下优点
1 高性能
性能增强型 流量上涨淡然处之 性能是开源Redis的2倍。
2 持久化
持久内存型 数据可靠 方便业务使用 不再担心数据丢失。 RPO 0
3 低成本
多种存储介质 选择最优性价比 性价比高于ECS自建。
4 丰富数据模型
在社区Redis上提供了更多面向应用的数据结构 应用开发更简便。
5 企业级能力
全球多活 数据闪回 混合多云 热点散列 。
上图为Tair的发展历史。从Tair1.0开始 团队就孵化出了云Redis社区版和云Memcache 这是线上社区托管的两个版本。
在Tair1.0的时候 就会整个孵化出来 2.0逐步上云 3.0会孵化出来一款叫GDB的产品 是一款线上的图数据库。
再往下是Tair Redis企业版/Tair 3.0 集团和云上是同一个版本 有很多种形态来支持用户在各种业务场景下的需求。
我们希望做一个不丢数据的数据库 做法是通过新硬件和新软件来进行。
1.新硬件
上图为存储介质图 速度延迟从上到下逐步增大 相反 容量逐步减少 成本逐步降低。Storage Class Memory处于中间 性价比较高。
2.新软件
新软件的开发模式方案有两种 分别是内存模式 Memory Mode 与应用程序直接访问模式 App Direct Mode 。
在内存模式下 应用和OS将其视为易失性内存池 虽对应用透明 但掉电即失 因此不采用。
在应用程序直接访问模式下 持久内存和 DRAM充当独立内存资源 通过构建符合Redis协议和数据结构的软件利用两块存储资源构建兼容Redis、具备命令级持久化能力的内存数据库。
我们选择重新写兼容Redis的东西 而不是在Redis基础上进行更改 是因为新软件有着全新的挑战
1 替代原有的内存分配器 同时要保证内存分配器元数据的持久化
2 Redis数据结构与索引的持久化要保持一致性
3 持久内存和易失内存如何协同工作 让整个数据库高性能工作 同时还具备强大的持久化能力。
3 产品化能力
上文结合软硬件的能力阐述了如何去构建持久化内存的形态 下面可以看一下所带来的成果。
4.应用场景
应用场景主要分为如下两种。
场景一 大数据量、高性能、成本的综合选型考虑
机器学习平台、推荐系统等计算数据对性能和容量的要求很高场景二 用作持久化数据存储
游戏、直播、数据分析中大数据结果集对外提供查询服务等场景可以使用我们希望这个内存数据库具备有时光机能力。时光机能力表示可以将数据恢复到过去指定的任何时间点 也称为数据闪回 它有如下两大特点
1 Backup/Restore的终极形态
2 支持按秒级的数据恢复 可支持到按条
3 防止删库跑路场景
4 Clone Switching 随时回切
1 灵活应对部分数据异常
2 其余未指定数据不变化
3 游戏数据回档实现
1.基本概念
我们希望数据库能够多地写入 把多地的内存数据库进行多活操作 用户可以在多地访问与写入 我们帮用户做数据按序同步。
2. 三地六向同步
3. 低时延SLA保障
1 整体看 T1 T2 稳定在10ms 最差100ms T3基本上时延是网络RTT。
2 忙时下不敏感 replicator具备独立的资源 点到点同步通道带宽稳定。
https://help.aliyun.com/document_detail/199010.html
4. Session场景
Session的容灾至关重要
随着业务扩展 session访问压力几何级数增长。5. 游戏场景
架构特点 玩家可就近接入 本身逻辑就近计算数据读取 基本不存在数据一致性问题 灵活调整分布式节点。
可以灵活跨地域部署 数据通过Tair同步延迟根据网络速度决定通常在100ms以下。
场景 聊天室 弹幕信息同步 跨服对战 全球道具商城。
6.出行场景
Tair也在高德地图中深度使用 并解决了出行场景的一些问题。
使用前 导航时地理位置信息推送问题
DNS漂移是一个边界效应 通常大概影响边界上5%-7%的用户。使用后 高德交通三地六向同步 Tair only
Redis-enterprise跨域多活提供百万OPS每秒的数据同步。1. TairCPC高精度计数
TairCPC是一种数据的压缩算法 sketches 的内存实现 可以利用很小的空间对采样数据做高性能的计算 适合在实时和流式计算场景下做高性能的风控和安全场景。
1 内存占用低
2 增量读写 IO最小化
3 毫秒级高性能去重
4 超高去重精度
5 误差率稳定收敛
1 想以较低的内存实现对海量数据的去重计算
2 容忍一定的四舍五入的误差率
3 适用于实时计算的滚窗和滑窗去重。
2. TairTS时序数据处理
TairTS是基于Redis Module开发的时序数据结构 提供低时延高并发的内存读写访问 以及快速的过滤聚合查询功能。将存储与计算集于一身 极大地简化用户处理时序数据的流程 结合Tair持久内存型单集群最大规模可达65T。
1 TairTS相对于TSDB类传统时序数据库 可提供更快的写入性能 并提供数10倍的查询性能。
2 针对小规模数据场景 TairTS可将批量查询与聚合计算集成到单条命令中 减少网络交互 实现毫秒级响应。
3 针对大规模数据场景 可利用索引命令 将大规模数据 分批查询与聚合 实现秒级响应。
1 监控数据的存储与计算
2 车联网、工业互联网实时IOT数据处理
3 APM秒级监控等
最后谈一下未来面对的事情 关注云产品的人可能都知道存储计算分离 我们希望在这基础上能再进行一层分离。将内存也分离出来 做一个大的内存存储池。希望我们的再分离一层 就是把内存也分离出来 因为现在可能是一个大的存储池 为用户提供更加弹性的服务。
本文转载自微信公众号「bugstack虫洞栈」,作者小傅哥 。转载本文请联系bugstack...
溢价 域名 的续费价格如何?通常来说,因为溢价域名的价值高于普通域名,所以溢...
TIOBE 公布了 2021 年 3 月的编程语言排行榜。 本月 TIOBE 指数没有什么有趣的变...
在Python开发过程中,我们难免会遇到多重条件判断的情况的情况,此时除了用很多...
本文转载自公众号读芯术(ID:AI_Discovery)。 这一刻你正在应对什么挑战?这位前...
基本介绍 给定 n 个权值作为 n 个叶子节点,构造一颗二叉树,若该树的带权路径长...
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://...
近几年,互联网行业蓬勃发展,在互联网浪潮的冲击下,互联网创业已成为一种比较...
背景 我们知道 如果在Kubernetes中支持GPU设备调度 需要做如下的工作 节点上安装...
前言 统计科学家使用交互式的统计工具(比如R)来回答数据中的问题,获得全景的认...