• [技术干货] 华为云旗舰Redis,分布式云数据库GaussDB(for Redis)
    开源Redis痛点开源Redis的RESP协议友好、命令种类丰富,支撑业务场景众多,很受开发者青睐。然而,近年企业规模都在逐渐扩大,传统缓存逐渐难以支撑业务。有以下几点主因: 容量有限,业务架构很难对“缓存”要求更多生产环境最怕OOM,而开源Redis一旦宕机,会导致内存数据丢失。因此,即使开源Redis能存各种丰富类型数据,业务也不敢太“PUSH”。内存昂贵,成本降不下来256G内存条价格比同等容量SSD硬盘贵30倍,而开源Redis独有的fork机制导致内存平时至少要预留50%备用。这是货真价实的“经费在燃烧”。可靠性不足如果你经常关注技术媒体,会发现缓存雪崩、主从同步脱节等故障已是老生常谈。相比关系型磁盘数据库,有经验的工程师都会觉得开源Redis真的不够“皮实”。为解决痛点,业界各显神通在这样的背景下,出现了一种新型Redis,主打大容量持久化、分布式高并发。业界也有多款开源项目,如SSDB、kvrocks、pika、ARDB等。他们有相同的设计理念——全量数据落盘。听起来容易,其实难度很高,因为要解决协议兼容、集群管理、故障接管、性能稳定等诸多技术问题。云原生的GaussDB(for Redis) 华为云紧跟业界趋势,也推出了自研的大容量Key-Value数据库旗舰——云原生分布式数据库GaussDB(for Redis)。从使用角度,这款产品与原生Redis没有任何差异。这是因为RESP协议兼容做得好,业务无需改代码,切换到GaussDB(for Redis)很轻松。从技术角度,相比开源原生Redis以及业界各类新型自建Redis,GaussDB(for Redis)是一款技术成熟的云数据库产品,它给客户带来明确的价值:解决运维之痛:一套实例 = 拥有一键备份/快速恢复、可视化监控、故障预警保护、API查询实例信息等等充满“人情味”的功能。这也是云原生的魅力所在。低成本:GaussDB品牌先进云原生架构 + 分布式大容量存储池,根本上解决开源Redis内存昂贵、使用率低的成本问题,成本可降低75%。省下经费,让业务更能自由发挥。高性能:存储层RDMA高速网络互连 + 计算层冷热分离设计,充分利用物理资源,保障性能稳健。强一致性:基于GaussDB品牌独有架构实现的强一致性,是业界最高标准,这是一个高门槛技术。实际上,它本就是很刚需的业务需求、运维需求。电商秒杀活动中,开源Redis做限流器,很容易因主从节点弱一致问题导致缓存击穿;即使是MySQL,运维也尝尝要利用MHA等复杂外部组件来“弥补”一致性缺失。超高可靠:计算层采用分布式架构,实现了故障后的秒级接管。即使只剩一个节点ONLINE,业务也可正常访问。存储池为每份数据离散保存三副本,即使硬件故障,也能确保数据0丢失。没有“意外”能让上层业务停摆。弹性伸缩:深知业务发展之道,在数据量拓展、高峰时段,一键即可快速扩容。内部搭载高性能proxy集群,自动数据分片能力,随之而来的是全局负载均衡,避免资源浪费。应用场景更加广阔对于过度依赖MySQL+Redis组合的传统业务架构,如果只想临时缓存下数据,开源Redis的确能提供急速访问性能。毕竟用内存承载全量数据,这不难实现。实际上,如果重新思考架构设计,你会发现:游戏业务直接使用Redis的hash数据结构存储用户动态、个性签名,使用zset存储天梯排名,多自由;Feed流业务直接使用stream来做推拉,多适合;地图相关业务直接使用Redis GEO来存储定位,多完美。结束语实际上,大容量Redis已是趋势,尤其是在云原生加持下,试想能节省多少硬件成本、运维成本?华为云GaussDB(for Redis)设计初衷很简单,就是让Redis这一航道长青,为每一个需要Redis的用户解决成本之痛,运维之痛。了解更多产品信息:https://www.huaweicloud.com/product/gaussdbforredis.html为了让更多企业可以体验到GaussDB(for Redis)魅力所在,华为云数据库迁移上云专场推出钜惠活动,GaussDB(for Redis)低至637元,包年享4折!详情请点击链接→https://activity.huaweicloud.com/dbs_Promotion/index.html
  • [行业资讯] 华为云GaussDB发布5大核心技术,打造行业领先的技术竞争力
    6月20日,在ACM SIGMOD国际学术会议“中国数据库高峰论坛”,华为云数据库产品部总经理苏光牛发表了《云数据库的创新与发展》主题演讲,分享了华为云GaussDB数据库5大创新技术,坚持生态开放理念,加速千行百业数字化转型。数字化时代下,企业对云数据库提出了更高要求,既希望云数据库能满足海量业务场景下的复杂需求,又希望可以降低使用成本,提升业务效率,保障数据安全。云数据库也成为了产业升级转型和重塑产业格局的关键抓手。苏光牛提到,华为很早就开始重视数据库的投入和发展,从2007年开始研究数据库,到2020年统一数据库品牌GaussDB,华为持续战略投入数据库,并布局全球7大研究所,汇聚了一批海内外数据库领域专业人才,同时布局前沿技术,积极打造行业领先的技术竞争力。华为云数据库产品部总经理苏光牛发表演讲华为云GaussDB聚焦业务新场景,打造了以下5大核心技术竞争力:金融级高可用:华为云GaussDB提供了多种高可用方案,包括AZ内高可用、跨AZ多活、异地跨Region容灾的两地三中心容灾方案,满足金融级监管要求,并且历经银行核心关键业务严苛考验。软硬协同全栈能力:依托华为全产业链优势,垂直整合华为软硬件全栈资源,不断提升竞争力。企业级混合负载:分布式+全并行架构设计,提供事务处理与复杂查询高性能,支持1000+超大分布式集群能力,可以轻松应对海量高并发数据处理和复杂查询场景的考验。全密态数据库安全:华为云GaussDB实现从密钥处理、查询、内存、存储等全方位的安全合规和隐私保护,包括链路安全、存储安全、访问安全,同时对应用实现尽可能的透明,保证客户隐私安全。智能运维与调优:结合AI技术,实现数据库自动优化与调优等功能,让数据库管理变得更加智能高效。数据库呼唤开放的生态,华为也始终坚持开源开放理念,积极构建良好的数据库生态关系。华为云GaussDB目前已支持华为自有openGauss生态与主流开源数据库生态(如MySQL、MongoDB、Redis、InfluxDB、Cassandra等)。华为还将GaussDB部分核心能力开源到openGauss社区,鼓励合作伙伴基于开源openGauss发行属于自己的商业版本。此外,华为持续和高校联合开课,致力于培养数据库人才,繁荣数据库生态。目前,华为云GaussDB已在1000+大客户规模商用,遍布金融、政府、电信、能源、交通、电商等。另外还在SIGMOD、ICDE、VLDB等国际知名学术会议发表累计50+篇创新成果论文,内容涵盖系统架构、事务处理、AI自治、安全等。面向未来,华为云GaussDB将持续打造领先技术和服务,与更多合作伙伴一起共创时代新价值,共赢未来新机遇!
  • [技术干货] 华为云PB级数据库GaussDB(for Redis)揭秘第二期:Redis消息队列Stream的应用探讨
    引言:Redis Stream是Redis 5.0引入的一种新的数据类型,其本质是一个消息队列,类似于 kafka等消息中间件。它提供了消息的落地存储功能,并实现了类似kafka消费组和消费者的功能。与kafka相比,Redis Stream同样拥有强大的功能,但因原生Redis无法有效支持大规模数据存储,成本昂贵,并存在数据丢失/不一致风险等原因,导致其未能流行起来。本文将对Stream的常用命令和应用场景进行介绍,并探讨原生Redis Stream消息队列的缺陷以及GaussDB(for Redis)提供的解决方案,供大家学习和选用。一、Redis Stream简介与Pub/Sub相比,Redis Stream 具有消息的落地存储功能,每一个客户端能访问任意时刻的消息,并且能记录每一个客户端的访问位置,还能保证消息不会丢失。Redis Stream 的结构如下所示,它有一个消息链表,将所有加入的消息都链接起来,每个消息都有唯一的 ID 和对应的内容。如图所示,每一个Stream队列包含多条消息,每条消息由唯一的ID进行标识,由时间戳和序列号组成,例如1627849609889-0。每条消息以追加的方式添加到Stream队列中。同一个Stream队列可以包含多个消费组(Consumer Group),每个消费组的状态都是独立的,同一个Stream队列的消息可以被多个消费组重复消费。同一个消费组又包含多个消费者(Consumer),这些消费者之间是竞争关系,不同消费者不会重复消费同一条消息,任意一个消费者读取了队列中的一条消息都会使消费组中的游标last_delivered_id往前移动。该方式提高了并发效率,例如,多个进程并发处理Stream队列中的消息。每个消费者中维持一个状态变量pending_ids,简称为PEL(Pending Entries List),记录了当前已经被客户端读取的但尚未被ACK的消息,确保消息被客户端成功消费。Redis Stream命令可以分为消息队列命令和消费者命令两类,如下所示:以即时通讯中的聊天室场景为例,使用Redis Stream作为中间件,实现聊天室的发言以及信息查看。使用XADD命令进行发言使用XLEN命令获取聊天室发言的数量使用XRANGE获取消息队列的消息使用XREAD命令读取消息。可以在不设置消费组和消费者的情况下,使用XREAD的命令进行消息读取,此时Stream队列类似于一个普通的列表(list)。更多的Redis Stream命令使用请参考官方文档(https://redis.io/commands/xread)。二、应用场景由于Redis Stream天然有序,特别适合存储时序数据,应用场景包括即时通讯、智慧医疗、流量削峰、智慧城市等领域。(1)即时通讯:微信、QQ等是我们日常生活中常用的通讯软件,常用的聊天方式包含点对点通讯和群聊两种方式。下图是一个群聊的模型图,当采用Redis Stream作为通讯的中间件,创建一个群聊时,在Redis中对应地为该群聊创建一个Stream队列。在发送消息时,将每个用户的消息按照时间顺序添加到Stream队列中,保证了消息的有序性。由于Stream是一个持久化的队列,无论是在线还是离线状态,每个用户可以多次查看历史消息,保证了通讯的完整性。(2)智慧医疗:医疗行业的信息化,可以更好地为服务于每一个人。为每一个人从出生起建立一份健康档案,记录相应的健康信息,如体检报告、诊断报告、用药信息、以及智能终端实时上传的健康指标。这些信息都是一些时序数据,同样可以采用Redis Stream来实现智慧医疗系统。建立起智慧医疗系统后,使用终端可以查看所有的医疗信息,并会提示患者按时吃药,在终端上传身体指标异常时,会自动报警并预约挂号。现阶段每个医院都有自己的信息系统,不同的医院很难查到同一个患者的医疗信息,在未来,医疗上云将有利于解决医疗信息孤岛,更好的帮助每一位患者。(3)流量削峰:在常见的秒杀活动或团购中,如春运抢票、商城促销等,通常短时间内有大量的流量,导致系统崩溃。由于每一个用户在请求时对应唯一的时间戳,所有的请求都有一个先后顺序,同样可以采用Redis Stream作为中间件,将请求加入到Redis Stream消息队列。将消息转存到消息队列间接提供给应用,而非直接发送给应用,可以防止大流量冲击导致的系统崩溃。当消息队列中的请求数量达到规定的最大值时,直接回复客户端抢购失败。三、原生Redis是否真的适用于以上场景?如上应用场景具有数据规模大、数据持续增长的特点,虽然原生Redis有良好的设计初衷,但是并不能解决实际问题。具体体现在:无法有效应对大规模数据:原生Redis是一个基于内存的数据库,单个节点存储容量有限,当扩展至TB级别的集群,将会出现管理困难,运维成本高等问题。集群扩容影响业务性能:原生Redis在进行集群扩容时,需要重新划分hash槽并进行数据迁移,必定会影响业务性能。数据可能会丢失:原生Redis虽然可以采用RDB和AOF的方式对数据进行持久化,但是并不会实时地将每一条命令写入到硬盘中,当出现掉电或集群崩溃的情况,必定会丢失一部分数据,对于类似智慧医疗场景,是难以忍受的。除此以外,必须考虑数据库系统的可用性、数据一致性、成本和备份恢复能力等情况:可用性: 原生Redis若采用一主一备的集群模式,当一对主备节点下线,集群部分数据将不可用。数据一致性:当主节点宕机,主备节点切换,数据存在没有完全同步的情况。成本:原生Redis是一种内存型数据库,当内存容量扩展至TB级别,成本将非常昂贵。备份恢复:需要人工连接数据库执行 SAVE或BGSAVE命令,不能支持定期自动备份,在恢复到新实例时需要手动拷贝备份数据。四、是否有更好的解决方案?在以上场景中,亟需一种能够存储和处理大规模Stream数据、鲁棒性强、且成本低廉的数据库系统。而GaussDB(for Redis)(下文简称高斯Redis)正是以上场景中一种很好的应用解决方案。高斯Redis是华为云数据库团队自主研发的兼容Redis协议的云原生数据库,该数据库突破原生Redis的内存限制,可轻松扩展至PB级存储,具有秒扩容、超可用、强一致和低成本等特点。五、总结Redis Stream可以广泛应用在即时通讯、智慧医疗、流量削峰等领域。在面对大规模的Stream数据时,原生Redis存在成本过高、容量太小、可用性差、数据不一致等问题,无法适用于海量消息队列的场景。与原生Redis相比,高斯Redis具有海量存储,低成本,可持久化等优点,可做为比原生Redis更理想的Stream队列承载方案。
总条数:48 到第
上滑加载中