Redis开源协议变更!Garnet:微软开源代替方案?

Garnet:微软开源的高性能替代方案,秉承兼容 RESP 协议的同时,以卓越性能和无缝迁移能力重新定义分布式缓存存储! - 精选真开源,释放新价值。

概览

最近,Redis修改了开源协议,从BSD变成了 SSPLv1和 RSALv2 的双重许可,而RSALv2 和 SSPLv1,都并未被 OSI 正式认可。OSI 认为,这两种协议包含了一些限制性条款,这些条款与开源定义(OSD)不完全兼容。因此可以认为 Redis 在修改许可证后,已经不再是开源软件(OSS)。Redis 的官网已经修改为“Redis is source-available software”。现在,云服务商已经不能再免费使用redis的源代码了,这可能会影响到云redis的定价,当前阿里云和腾讯云都是有云redis服务的。

微软研究院近期宣布推出一款名为Garnet的创新开源分布式缓存存储系统,致力于解决现代应用程序在处理大规模数据时对于高吞吐量、低延迟及卓越可扩展性的严苛要求。它是一个远程缓存存储,提供了一系列独特的优势。这款基于C# .NET 8.0构建的新型系统,充分利用了现代硬件能力,为应用程序开发人员提供了加速数据访问与处理的强大工具。

Garnet采用了Redis的RESP协议作为起点,这使得开发者可以使用大多数编程语言中现成的Redis客户端,例如 .NET 中的StackExchange.Redis,来使用Garnet。

相比于其他开源缓存存储,Garnet在性能、延迟、可扩展性和持久性方面有显著的提升。Garnet 通过许多客户端连接和小批量提供更好的吞吐量和可扩展性,从而节省大型应用程序和服务的成本。

Garnet 使用启用了加速 TCP 的商品云 (Azure) VM 展示了极低的客户端延迟(在 99.9% 时通常低于 300 微秒),这对于现实场景至关重要。

截至发稿概况如下:

  • 软件地址:GitHub - microsoft/garnet: Garnet is a remote cache-store from Microsoft Research that offers strong performance (throughput and latency), scalability, storage, recovery, cluster sharding, key migration, and replication features. Garnet can work with existing Redis clients.

  • 软件协议:MIT

  • 编程语言:

语言

占比

C#

97.9%

C++

1.5%

PowerShell

0.5%

JavaScript

0.1%

  • 收藏数量:7.3K


特性

Garnet的核心设计理念在于实现极致性能和弹性扩展。以下是Garnet系统的主要技术特性:

  • 高性能与低延迟

Garnet通过高度优化的内存管理机制和高效的并发处理架构,在单个节点内部署多线程处理,显著提升了数据的读写速度。支持在主内存中进行高速缓存,确保了极低的访问延迟,尤其适用于需要快速响应的应用场景。

  • 分布式与可扩展性

Garnet采用了分片集群架构,使得系统能够轻松横向扩展,每个节点都能独立处理一部分数据,从而支持海量数据的存储和检索。内置的自动分片与负载均衡机制,让系统可以根据业务需求动态调整资源分配,确保整体性能保持稳定。

  • 容错与持久化

提供了数据复制功能,以保证在单点故障发生时,数据能够迅速切换至备份节点,确保服务连续性。集成了检查点机制和故障转移功能,允许系统定期保存关键状态并在必要时恢复服务。支持将数据持久化存储在诸如SSD或Azure等分层存储介质上,既保证了数据的安全性又维持了较高的I/O效率。

  • 事务支持与API丰富

Garnet实现了事务处理能力,保证了在分布式环境下的数据一致性,这对于涉及多个操作的复杂业务逻辑至关重要。提供了丰富的API接口,使开发者可以便捷地集成Garnet到现有应用和服务中,同时也便于定制高级功能和扩展系统。

性能

  • 吞吐量 GET

在图1所示的实验中,工程人员使用了大批量的GET操作(每批4096个请求)和小负载(8字节的键和值)来最小化网络开销。随着客户端会话数的增加,工程人员观察到Garnet的可扩展性比Redis或KeyDB更好。Dragonfly展示了类似的扩展性,尽管只能达到16个线程。还要注意,DragonFly是一个纯内存系统。总的来说,即使数据库大小(即预加载的不同键的数量)更大(达到2.56亿个键)超过了处理器缓存的大小,Garnet的吞吐量相对于其他系统始终更高。

图1:在数据库大小为(a) 1024个键,和(b) 2.56亿个键的情况下,随着客户端会话数的变化,吞吐量(对数尺度)。

  • 延迟 GET/SET

接下来,工程人员通过发出80%的GET和20%的SET请求的混合体,来测量各种系统的客户端延迟,并将其与Garnet进行比较。因为工程人员关心的是延迟,所以工程人员保持数据库大小较小,同时变化工作负载的其他参数,如客户端线程数、批量大小和负载大小。

图3展示了随着客户端会话数的增加,Garnet的延迟(以微秒计)在各个百分位数上都一直较低且更稳定,与其他系统相比。请注意,这个实验不使用批处理。

Garnet的延迟经过了精细调整,以适应客户端的批处理和高效处理查询系统的多个会话。在工程人员的下一组实验中,工程人员将批量大小从1增加到64,并在下面的图中以128个活跃客户端连接绘制不同百分位数的延迟。如图4所示,当批量大小增加时,Garnet保持稳定性并实现了比其他系统更低的整体延迟。

  • 更多性能测试

参考网站:Evaluating Garnet's Performance Benefits | Garnet

部署

参考网站:Welcome to Garnet | Garnet

克隆项目

git clone https://github.com/microsoft/garnet

安装dotnet 8的SDK后,使用以下命令进行编译

dotnet build -c release

进入garnet文件夹下的main文件夹,点击GarnetServer文件夹,一直进入发布版本(net8.0),然后找到GarnetServer.exe双击运行即可。

终端出现以上界面即代表启动成功。你可以使用redis的连接客户端连接上Garnet。


遐想

Garnet作为微软开源的一款高性能分布式缓存存储系统,凭借其卓越的性能、可扩展性以及全面的功能特性,为数据密集型应用场景带来了新的解决方案。Garnet并非是要取代Redis,而是提供了一个与Redis兼容的、具有一些独特优势的选择。任何技术产品都有其适用范围和限制,用户在选择采用时需结合自身项目的具体需求和环境来权衡其优缺点。并且Redis毕竟是经历过十数年工业验证,无数双眼睛盯着这个开源项目,不可能一上来就被某神秘力量以数量级的性能优势超越,到底怎么样,需要交给时间、交给市场检验!

热烈欢迎各位在评论区分享交流心得与见解!!!


声明:本文为辣码甄源原创,转载请标注"辣码甄源原创首发"并附带原文链接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/575954.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主流公链 - Filecoin

探索Filecoin:去中心化存储网络 1. Filecoin简介 Filecoin是一个去中心化的存储网络,旨在通过区块链技术实现全球性的分布式文件存储和检索市场。Filecoin允许用户将文件存储在网络中的节点上,并通过加密、分片和复制等技术保证数据的安全性…

八大技术趋势案例(虚拟现实增强现实)

科技巨变,未来已来,八大技术趋势引领数字化时代。信息技术的迅猛发展,深刻改变了我们的生活、工作和生产方式。人工智能、物联网、云计算、大数据、虚拟现实、增强现实、区块链、量子计算等新兴技术在各行各业得到广泛应用,为各个领域带来了新的活力和变革。 为了更好地了解…

【数学符合】

数学符合 ■ ∑ ■ ∑

Javascript — 异步方法与异常捕获问题

问题:try catch为什么不能捕获未被 await 修饰的异步方法异常 async function throwError() {throw new Error("自定义Error!") }let testOne async () > {console.debug("start testOne")try {throwError()} catch (e) {conso…

HSF:阿里RPC框架

简介 HSF(High-speed Service Framework)是一种广泛应用于阿里巴巴内部的分布式RPC服务框架。 作为阿里巴巴的基础中间件,HSF连接了不同的业务系统,解耦了系统间的实现依赖。HSF从分布式应用的角度统一了服务的发布和调用方式&a…

智慧工地安全生产与风险预警大平台的构建,需要哪些技术?

随着科技的不断发展,智慧工地已成为现代建筑行业的重要发展趋势。智慧工地方案是一种基于先进信息技术的工程管理模式,旨在提高施工效率、降低施工成本、保障施工安全、提升施工质量。一般来说,智慧工地方案的构建,需要通过集成物…

Rust编程(五)终章:查漏补缺

闭包 & 迭代器 闭包(Closure)通常是指词法闭包,是一个持有外部环境变量的函数。外部环境是指闭包定义时所在的词法作用域。外部环境变量,在函数式编程范式中也被称为自由变量,是指并不是在闭包内定义的变量。将自…

OpenHarmony中的LLDB高性能调试器

概述 LLDB(Low Lever Debugger)是新一代高性能调试器。详细说明参考 LLDB官方文档 。 当前OpenHarmony中的LLDB工具是在 llvm15.0.4 基础上适配演进出来的工具,是HUAWEI DevEco Studio工具中默认的调试器,支持调试C和C应用。 工…

将ENVI的roi转为mask图像

方法1: 直接使用ENVI step1: 将roi文件存储为.roi格式 [1] 链接: link step2: 将.roi转为mask [2] 链接: link [3] 链接: link 方法2: 使用Matlab step1: 将roi文件存储为.xlm 文件 step2:针对把每个roi存储为一个单独文件 [4] 读取xlm文…

【React】onClick点击事件传参的4种方式

记录React onClick 点击事件传参的 4 种方式 方式一&#xff1a;使用内联箭头函数 import React, { MouseEvent } from "react";function App() {const handleClick (event: MouseEvent<HTMLButtonElement>, name: string) > {console.log(event)console.…

HWOD:字符的排序

一、知识点 char的最大值是127&#xff0c;最小值是-128 自己填充的char型数组&#xff0c;以字符串打印&#xff0c;打印之前要手动在末尾加上 \0 二、题目 1、描述 Lily上课时使用字母数字图片教小朋友们学习英语单词&#xff0c;每次都需要把这些图片按照大小&#x…

【机器学习300问】55、介绍推荐系统中的矩阵分解算法是什么、有什么用、怎么用?

本来这篇文章我想先讲矩阵分解算法是什么东西的&#xff0c;但这样会陷入枯燥的定义中去&#xff0c;让原本非常有趣技术在业务场景中直观的使用路径被切断。所以我觉得先通过一个具体的推荐算法的例子&#xff0c;来为大家感性的介绍矩阵分解有什么用会更加合理。 如果你还不知…