Redis 之死:Garantia Data 如何策划了开源史上最大劫案?

news2024/11/13 13:13:00

  每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/

诗歌是永远完成不了的,只是被抛弃而已。你可以不断地改进它,使它在每一次迭代中变得更好。作为一个独立的项目,拥有全部决策权是合理的。然而,对于一个拥有超过十年历史的联合项目,拥有蓬勃发展的社区以及有效的治理结构,做出单方面决定来彻底推翻它是一个大胆的——我敢说是鲁莽的——交易。

Redis 具有各种各样的功能和能力,可以让开发人员快速上手!虽然有多种 API 和无穷无尽的"自杀"方式,但 Redis 以开发人员所需的功能满足他们的需求,无论是开发还是实际生产系统。

开发人员以爱意回报,多年来将 Redis 评为 Stack Overflow 开发者调查中最佳数据库之一。从核心驱动程序到模块,Redis 背后的开源社区正在蓬勃发展。在过去 15 年里,该项目得到了数十家公司和数百名个人的贡献。

Redis 没有创建 Redis


如果这让你感到困惑,那你就准备好接受一个曲折的故事吧!

虽然 Redis 可能有能力和法律权利关闭这个社区,但重要的是要注意到 Redis 并没有创建 Redis。

Redis 重新许可的公告将公司和开源项目互相混淆:

"从一开始,Redis 就为支持现代互联网上的应用程序和数据基础设施提供了性能和简单性的基础。15 年后的现在,我们很自豪能够为全球数百万开发人员提供支持,为世界每天所依赖的实时应用程序提供服务。"

然而,这种手法掩盖了一个关键细节:现在被称为 Redis 的公司在很多年后才参与到开源项目中!

Redis 于 2009 年由意大利开发人员 Salvatore "Antirez" Sanfilippo 作为一个爱好项目推出。2013 年发生了一些戏剧性事件,当时一家名为 Garantia Data 的小型 Redis 托管提供商试图将自己重新命名为"RedisDB"。在 Antirez 反对后,他们放弃了更名。这是当时 Garantia Data 的首席执行官 Ofer Bengal 所说的话:"我们打算将公司名称改为 RedisDB,甚至为此获得了 redisdb.com 的域名;然而,出于对 Redis 创建者 Salvatore Sanfillipo 的尊重,我们决定坚持使用 Garantia Data。"

几个月后,在 2014 年,Garantia Data 变成了 Redis Labs。

"这是该公司在过去三个月内第二次宣布要改名。去年秋天,Garantia 将名称改为 RedisDB,但在经历了来自开源 Redis 社区的一些批评后,该公司收回了这个名称,保留了 Garantia。这一次,该公司表示没有回头路可走——它现在是 Redis Labs。"

2015 年,Redis Labs(前身为 Garantia)雇佣了 Antirez,成为 Redis 开源项目的官方赞助商。在 2020 年从项目中离职之前,Antirez 将 Redis 的知识产权和商标权都转移给了 Garantia,这就是为什么现在 Garantia 有权力对该项目进行重新许可。Garantia 在 2021 年完成了对 Redis 名称的盗用,当时他们将自己重新命名为"Redis"。从那时起,他们一直在遗漏和掩盖着曾经名为 Garantia Data 的公司的历史。

Garantia 并不是 Redis 创新发展的主要驱动力


很简单,Garantia 并不是 Redis 创新发展的主要推动者。(我恳请你不要被代码行数分散注意力。)就像任何开源项目一样,Redis 是由努力工作的社区成员在备受崇敬的核心团队的悉心指导下的产物,这个团队值得我们永恒的感激。我被如此多充满热情的开发人员所取得的成就所震撼!

Garantia 也不是普及的主要推动者。这个荣誉应该归功于亚马逊 ElastiCache。通过让 Redis 的部署、扩展、复制和监控变得更加容易,ElastiCache 促进了如今开发人员所熟知和钟爱的 Redis 的大规模采用。当然,通过这种方式,ElastiCache 赚了很多钱——但是这种货币化是让一种技术走向主流、在全球范围内推广品牌知名度的应有回报。

控制平面:被遗忘的英雄


我们当中的许多人将今天的汽车产业的大规模生产和采用功劳归于亨利·福特。然而,正是 1956 年由德怀特·艾森豪威尔签署的《美国州际公路系统法案》,创建了一个庞大的公路系统供这些汽车行驶。这种新发现的效用使得底特律更容易销售汽车,从而开启了汽车的黄金时代,并最终形成了一个庞大的全球行业。

Redis 是引发革命的内燃机。但是,完全可用的汽车(ElastiCache)和采用的公路(AWS)将它转变为一个全球性的成功。在这个比喻中,Garantia Data 既没有发明汽车,也没有发明发动机。它甚至不是第一家汽车制造商。它只是另一个从发动机、汽车和高速公路系统中获利的汽车品牌——但却被雪佛兰和福特等竞争对手远远超越。

将 Redis 投入生产是一个艰巨的挑战。如果没有先进的编排,大规模部署是难以为继的。当 ElastiCache 推出首个主要控制平面时,他们向世界证明了如此大规模部署是可能的——这启发了 Upstash、Dragonfly、KeyDB、Aiven、Google MemoryStore,甚至 Garantia/Redis Labs 自己的托管 Redis 产品。

随着 ElastiCache 推动大规模 Redis 部署的发展,他们的团队不得不应对一些最棘手的问题,如复制、扩展、快照等。到目前为止,ElastiCache 团队已经投入了超过 1000 个工程师年的工作,使 Redis 能够扩展。他们为 Redis 核心做出了一些最复杂和最有价值的改进。

最终,这些工作使 ElastiCache Serverless 和无服务器缓存的范式转变成为可能。

Momento 是无服务器 Redis 吗?


既然我们在拨乱反正,Momento 并不是无服务器 Redis。无服务器 Redis 和托管 Redis 是缓存生态系统的重要组成部分,我们钦佩 Upstash、Google Memory Store 和许多其他公司的工作。我们每个人都在努力帮助开发人员构建高性能、可扩展的系统。

Momento 采取了不同的方法。我们从一开始就摒弃了内燃机,改为电动化。虽然我们也钟爱 Redis,但我们决心从头开始构建无服务器缓存。这使我们能够设计一种服务,对规模、可用性和易用性有更严格的要求。它还使我们与众不同。

Momento 的独特多租户模型可以跨缓存池化资源,有效吸收更大的负载峰值,并以任何规模提供一致、经济高效的性能。同时,我们的网关层可以处理来自数百万移动和物联网设备的直接连接,并具有企业级别的身份验证和细粒度访问控制,这大大简化了您的云架构。

Momento 是无服务器缓存的进化。

接下来会发生什么?


我对 AWS 的预测和恳求是,ElastiCache 团队将会分支 Redis,并(希望)用 Rust 重写它,打造比以往更出色的 Redis 软件和生态系统。时间很紧迫——这需要尽快发生。社区在这个项目上投入了太多的热爱,不能让它被 Garantia Data 夺走。我们需要这个公告来开启治愈的过程。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Temple of Doom靶场nodejs获取shellss-manager漏洞tcpdump提权

下载链接: Temple of Doom: 1 ~ VulnHub 下载完成后直接在vxbox中导入即可,网络链接模式根据自身情况而定(我采用的桥接模式) 正文: 先用nmap进行扫描靶机ip nmap -sn 192.168.1.1/24 对192.168.1.5进行端口探测&a…

Spring学习——什么是循环依赖及其解决方式

文章目录 前言一、什么是循环依赖二、解决思路1、循环依赖分类2、对象初始化步骤及对象分类3、spring是如何解决的4、图解5、三级缓存1、区别2、ObjectFactory是什么 三、源码debug1、spring创建对象过程1、dubug第一步——找到getBean2、dubug第二步——getBean与doGetBean3、…

基于AT89C51单片机的智能交通灯设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/89035863?spm1001.2014.3001.5503 1绪 论 1.1课题研究背景 交通是城市经济活动的命脉,对城市经济发展、人民生活水平的提高起着十分重要的作用。城市交…

用 C++ 编码架构图的最佳用例

统一建模语言(UML),作为一种实际应用的语言标准,借助一系列架构图呈现建模软件系统。UML 的出现鼓励了自动化软件工具的开发,有助于自动代码生成。UML 图面向对象系统和软件工具,将静态结构和动态行为以可视…

如何统计代码量

工具: cloc 下载地址: Releases AlDanial/cloc GitHub 使用方法:

2024.3.26

实现闹钟 weiget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTimer> #include<QTime> #include<QTimerEvent> #include<QString> #include<QtTextToSpeech> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } Q…

力扣● 503.下一个更大元素II ● 42. 接雨水

503.下一个更大元素II 与496.下一个更大元素 I的不同是要循环地搜索元素的下一个更大的数。那么主要是对于遍历结束后&#xff0c;单调栈里面剩下的那些元素。 如果直接把两个数组拼接在一起&#xff0c;然后使用单调栈求下一个最大值就可以。 代码实现的话&#xff0c;不用直…

ubuntu22.04配置Azure Kinect DK深度相机

一.安装SDK 今天我来配置一下微软公司的Azure Kinect DK深度相机,以前在ubuntu18.04上配置过,因为官方说唯一支持linux版本是18.04,所以在18.04中配置还算顺利 but这不代表不可以在更高版本的ubuntu中使用,只不过需要自己去多配置一些东西 apt 源安装 更新源: c…

上海企业必应bing国内广告推广如何开户?

随着数字化营销时代的深入发展&#xff0c;搜索引擎广告已成为众多企业提升品牌知名度和促进产品销售的重要手段之一。在国内市场&#xff0c;微软必应&#xff08;Bing&#xff09;搜索广告以其精准定位与高价值用户群赢得了众多企业的青睐。对于位于上海地区的企业来说&#…

蓝桥杯:Python基础学习一

目录 一、遍历列表 1.使用for 循环和 enumerate()函数实现 2.案例代码 二、对列表进行统计和计算 1.统计数值列表的元素和 2.案例代码 三、对列表进行排序 1.使用列表对象的sort()方法 2.使用内置的 sorted()函数实现 四、列表推导式 1.从列表中选择符合条件的元素组…

flask_restful结合蓝图使用

在蓝图中&#xff0c;如果使用 Flask_RESTful &#xff0c; 创建 Api 对象的时候&#xff0c;传入蓝图对象即可&#xff0c;不再是传入 app 对象 /user/__init__.py from flask.blueprints import Blueprintuser_bp Blueprint(user,__name__)from user import views /user…

泛型编程的启蒙之旅

个人主页&#xff1a;日刷百题 系列专栏&#xff1a;〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 &#x1f30e;欢迎各位→点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ​ ​ 讲模板之前呢&#xff0c;我们先来谈谈泛型编程&#xff1a; 泛型编程&#xff1a;编写与类…

Linux——命名管道

Linux——命名管道 命名管道命名管道和匿名管道的区别 创建命名管道利用命名管道实现简单通信 我们之前学习了匿名管道&#xff0c;这种管道有一个缺点就是只有两个有血缘关系的进程才能够使用匿名管道&#xff0c;这个非常不方便。所以我们又在匿名管道的基础之上引入了命名管…

Linux实现m4a格式转换为wav格式

需要在linux上安装ffmpeg 参考博客 Linux上安装ffmpeg修改环境变量【这一点很重要&#xff0c;自己因为没有添加环境变量&#xff0c;捣鼓了很长时间】 将ffmpeg的绝对路径添加到 PATH 环境变量中&#xff0c;以让系统能找到ffmpeg的安装路径。 # /home//project/ffmpeg-6.1-a…

QT作业day3

1、使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是…

vue3+threejs新手从零开发卡牌游戏(八):关联卡组和手牌区、添加初始化卡组和初始化手牌逻辑

首先我们优化下之前的代码&#xff0c;先加载游戏资源&#xff0c;然后再初始化场景&#xff0c;由于目前只有一个font字体需要加载&#xff0c;所以我们将之前game/deck/p1.vue中的font相关代码迁移到game/index.vue下&#xff0c;同时使用async和await处理异步加载&#xff0…

干货分享之反射笔记

入门级笔记-反射 一、利用反射破泛型集合二、Student类三、获取构造器的演示和使用1.getConstructors只能获取当前运行时类的被public修饰的构造器2.getDeclaredConstructors:获取运行时类的全部修饰符的构造器3.获取指定的构造器3.1得到空构造器3.2得到两个参数的有参构造器&a…

基于java+springboot+vue实现的超市管理系统(文末源码+Lw+ppt)23-354

摘 要 系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方法对超市管理的现状进行系统调查。采用结构化的分析设计&#xff0c;该方法要求结合一定的图表&#xff0c;在模块化的基础上进行系统的开发工作。在设计中采用“自下而上”…

启扬RK3568核心板助力智慧步道轻装健身,打造全民健康生活新方式

随着物联网、AI智能等新技术的快速发展&#xff0c;智慧步道成为全国各地公园建设和全民健身公共服务设施改造的新主题。智慧步道基于物联网、人脸识别、大数据分析等技术&#xff0c;对人们的运动进行监测和数据采集&#xff0c;显示运动数据&#xff0c;包括里程统计、热量消…

【王道训练营】第6题 输入一个整型数,判断是否是对称数,如果是,输出yes,否则输出no

文章目录 我的代码改正代码其他代码 我的代码 没有完成 #include<stdio.h> int main(){int a;int b;int c0;//位数int d0;//比较几次scanf("%d",&a);while(b!0){bb/10;c;}dc/2;//比较几次int ffor(int i0 ;i<d;i){int ec;//位数fa - a / (((e-i-1)*10…