Redis开源协议调整,我们怎么办?

2024年3月20日, Redis官方宣布,从 Redis 7.4版本开始,Redis将获得源可用许可证 ( RSALv2 ) 和服务器端公共许可证 ( SSPLv1 ) 的双重许可,时间点恰逢刚刚完成最新一轮融资,宣布的时机耐人寻味。

 

Redis协议调整,对云计算厂商的影响

Redis协议调整听起来可能没什么,但在开源项目领域是一个大问题。这并不是 Redis 官方第一次改变许可方式,早在 2018 年,Redis Labs 将其许可证从 AGPL 更改为Apache 2 modified with Commons Clause。Commons Clause在其许可之上增加了商业限制条款。

从Redis Labs 团队成员在网上发布的言论,可以了解到: “目前部分云提供商复用成功的开源项目,却没有为其社区做出重大贡献,他们将非其自行研发的软件产品通过重新打包的方式,转变成极具竞争力的云服务产品,并利用他们的业务优势从这些开源项目中获取可观的收入。”

不可否认,随着云计算技术的飞速发展,Redis作为一款流行的开源内存计算高速缓存,在云环境中将发挥着举足轻重的作用,其高效的数据处理能力和丰富的数据结构支持,使其成为众多企业应用和云服务产品的重要组件。

然而,随着云计算厂商纷纷推出相应的Redis之后,也面临着诸多方面的挑战:

  1. 合规性:Redis自2013年起,采用了BSD开源协议,允许云服务商自由分发和使用Redis代码,但随着Redis Labs引入Commons Clause补充条款之后,针对商业软件服务提供商便提出了额外限制,这意味着云厂商必须注意许可模式的变化,确保在提供托管Redis服务时符合开源协议的精神及其附加条款,避免潜在的法律风险。
  2. 技术创新与差异化:开源Redis虽然提供了基础功能,但为了在竞争激烈的云服务市场中脱颖而出,云计算厂商需要开发出具备差异化特性的高级功能或管理工具。如何在遵循开源协议的同时,增加诸如监控、备份恢复、安全防护等增值服务,是对云厂商技术研发能力的考验。
  3. 服务质量与SLA保障:云服务商提供的Redis服务不仅要保证开源版本的稳定性和性能,还需提供高质量的服务水平协议(SLA),包括高可用性、容灾恢复以及弹性扩展等,而这些特性往往需要在开源Redis基础上进行大量定制开发和优化工作。
  4. 维护与升级:云环境下的Redis集群需要及时更新至最新版本以获取最新的功能和安全修复。然而,不同客户可能依赖于不同的Redis版本,这就要求云厂商在提供统一服务的同时,必须处理好不同版本之间的兼容性和平滑升级的问题。

为了满足用户需求及顺应市场变化,各云厂商采取了以下对策:

  • 积极参与社区:云计算厂商应积极贡献开源社区,参与Redis核心功能的改进与发展,同时也通过这种方式获得社区的信任和支持,增强自身在开源生态中的影响力。
  • 自主创新与合作:建立专门的研发团队,针对Redis进行深度定制开发,推出自有知识产权的增强版Redis服务。此外,与Redis官方或其他第三方合作伙伴建立紧密联系,共同解决许可问题并寻求共赢解决方案。
  • 标准化服务与管理平台:构建完善的自动化运维平台,确保能够快速响应Redis实例的创建、扩容、迁移和维护等需求,同时提供可视化管理和监控工具,提升用户体验和运维效率。
  • 多样化的服务模式:根据客户需求提供多种服务模式,例如开源Redis的托管服务、基于Redis的企业版解决方案,甚至包含具有技术支持和个性化功能的高级服务包。

面对Redis开源协议带来的挑战,云计算厂商需在遵守许可规定的基础上,持续创新,提供优质服务,强化与开源社区的合作,并通过不断提升自身的技术服务实力,以满足日益增长的市场需求。在这个过程中,不仅推动了Redis技术在云端的应用普及,也促进了整个云计算行业的健康发展。

 

无惧Redis协议更改,华为云100%技术自主创新缓存更快更强

华为云分布式缓存服务DCS是华为云为客户提供的一款基于Redis内核的云服务,经过多年持续不断的投入与建设,较开源Redis在易用性、高性能、高可靠和性价比方面都具有显著的优势,已经成为企业信赖和依靠的一款优秀产品。

DCS与开源产品对比情况:

 

除此之外,DCS的研发团队也非常重视对开源社区的回馈。

截止发文日,过去一年在开源社区贡献排名第5,累计贡献排名第9;国内社区影响力排名第2;累计154次commit次数和138次PR,总共贡献13000+行代码。

在去年2023年,华为云分布式缓存服务DCS还特别推出了企业版,该企业版是100%自主创新开发的多线程高性能缓存,并且100%兼容Redis协议,较Redis不管是在多线程、内存效率还是高吞吐量上都完全超越对方。

Redis 5.x以前的单(主)线程模型,主线程主要处理新建网络链接接入、命令解析、命令执行、响应封装等,同时负责网络读写,当遇到网络阻塞或者高耗时任务,如命令执行时,则会导致时延增高。

随着计算硬件的性能提升,网络的读写成为系统性能提升的瓶颈,在Redis6.0以上,通过多线程模型处理网络读写,提升系统性能,主线程承接高时延的命令执行任务,考虑到多线程复杂度问题,在满足80%业务诉求的情况下,仍然采用单主线程。

在业务发展的同时,仍然需要能够把更高性能要求的硬件资源发挥到极致,那么,命令执行任务的时延问题就会成为性能提升的瓶颈,DCS企业版的核心解决思路就是通过完全的多主线程模型提升性能,并且100%兼容开源Redis,通过网络多线程调度模型,大大提升网络读写任务的并发量,保障秒级的读写性能,下面是实验室评测的一些数据:

20240329-180956(WeLinkPC).png

20240329-1182831(WeLinkPC).png

 可以看到,华为云DCS企业版Redis的QPS并发数优于基于开源Redis版本最大接近5倍,时延是其25%,完全遥遥领先。 

华为云分布式缓存服务DCS经过5年的发展,目前已经广泛应用于电商、社交文娱、游戏等行业。

在上云阶段通过专业的上云搬迁团队,提供贴身技术咨询和迁移实施支持服务,实现了应用“零改造”,搬迁上云业务无中断;上云后通过千万级的并发接入能力和百万级的读写能力保障秒杀商品“零等待”、订单无丢失、直播间礼物“零卡顿”等高难度应用场景,成为华为云客户信赖的最有价值的云服务。

 阅读原文

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FFmpeg 详解

FFmpeg 详解 FFmpeg 详解整体结构不同下载版本的区别常用库常用函数初始化封装格式解码器 版本对比组件注册方式对比FFmpeg 3.x 组件注册方式FFmpeg 4.x 组件注册方式 结构体比对函数对比avcodec_decode_video2()vcodec_encode_video2() 数据结构结构体分析AVFormatContextAVIn…

Day5-

Hive 窗口函数 案例 需求:连续三天登陆的用户数据 步骤: -- 建表 create table logins (username string,log_date string ) row format delimited fields terminated by ; -- 加载数据 load data local inpath /opt/hive_data/login into table log…

商场促销--策略模式

1.1 商场收银软件 package com.lhx.design.pattern.test;import java.util.Scanner;public class Test {public static void main(String[] args){System.out.println("**********************************************"); System.out.println("《大话设计模式…

聊聊测试用例评审流程

测试人员将需求熟悉完成后,开始编写相应的测试用例,待测试用例编写完成后只是测试用例完成前的第一步,后边的流程需要组织线上或线下评审会议等等。 首先要了解测试用例评审的最终目的是什么:提高测试用例的质量和覆盖率&#xff…

利用Node.js实现拉勾网数据爬取

引言 拉勾网作为中国领先的互联网招聘平台,汇集了丰富的职位信息,对于求职者和人力资源专业人士来说是一个宝贵的数据源。通过编写网络爬虫程序,我们可以自动化地收集这些信息,为求职决策和市场研究提供数据支持。Node.js以其非阻…

【Frida】【Android】08_爬虫之网络通信库okhttp3

🛫 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

【Spring】分别基于XML、注解和配置类实现Spring的IOC(控制反转)

目录 1、理解loC是什么 2、基于XML实现Spring的IOC(这种方式已经不怎么使用了) 3、基于注解实现Spring的IOC 4、基于javaConfig实现Spring的IOC 5、总结 1、理解loC是什么 lOC:lnversion of Control 控制反转,简称就是 IOC 控…

如何使用极狐GitLab Maven 仓库?

本文作者:徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了如何使用极狐GitLa…

Yarn与Zookeeper的介绍

Yarn--三大调度策略 FIFO(先进先出): 目前几乎已经没有人使用了. 类似于: 单行道. 好处: 每个计算任务能独享集群100%的资源. 弊端: 不能并行执行, 如果大任务过多, 会导致小任务执行时间过长. Capacity(容量调度): 我们用…

入门教程:Windows搭建C语言和EasyX开发环境

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 如果对你…

【论文阅读】TimesNet: Temporal 2D-Variation Modeling for General Time Series Analysis

TimesNet: Temporal 2D-Variation Modeling for General Time Series Analysis 引用: Wu H, Hu T, Liu Y, et al. Timesnet: Temporal 2d-variation modeling for general time series analysis[C]//The eleventh international conference on learning representa…

学习 MongoDB:打开强大的数据库技术大门

一、基本概念 MongoDB 是一个基于分布式文件存储的文档数据库,由 C 语言编写。它旨在为 Web 应用提供可扩展的高性能数据存储解决方案。 相信MySQL我们非常的熟悉,那么MySQL的表结构与MongoDB的文档结构进行类比的话可能更好理解MongoDB。 MySQL的数据…

联通iccid 19转20 使用luhn 算法的计算公式

联通iccid 19转20 使用luhn 算法的计算公式 第一次对接iccid 才知道 使用的是luhn 算法 19转20位 文章来源于 文章来源 当时也是一脸懵逼 的状态,然后各种chatgpt 寻找,怎么找都发现不对,最后看到这片java的文章实验是正确的,因…

ubuntu生成core文件的设置方法

core文件可以很方便的帮助我们查找程序挂的问题,因此在程序挂后生成core文件的很有必要的。 1、查看ulimit参数 ulimit -a 如果core file size是0 需要设置其最大容量。按下面步骤操作 2、设置core文件大小,两种方法 临时生效,重启设备失…

WPF学习笔记-FlowDocument流文档基础知识和基本操作

文章目录 概述一、块元素和内联元素1.1 块元素(Block类)1.2 内联元素(Inline类)二、Paragraph元素2.1 基本属性设置2.2 将内联元素Inline添加到Inlines中2.3 设置中西文字体不一样 三、Table元素3.1 添加新的Table3.2 添加列3.3 添…

采用C#.net6.0+Vue,Ant-Design技术开发的一套大型医院手术麻醉信息系统源码,系统成熟,运行稳定

手术麻醉信息系统源码,C#手麻系统源码,自主版权应用案例(适合上项目) 手术麻醉信息系统可以实现手术室监护仪、麻醉机、呼吸机、输液泵等设备输出数据的自动采集,采集的数据能据如实准确地反映患者生命体征参数的变化&…

前端、后端上传文件到OSS,简明记录

前端、后端上传文件到OSS,简明记录 上传文件到oss的方式: **后端上传:**文件先要从页面上传到后端存起来,再通过后端发送到oss,然后后端将存起来的文件删除(当然可以不删)。 **前端上传&…

Unix 网络编程, Socket 以及bind(), listen(), accept(), connect(), read()write()五大函数简介

Unix网络编程是针对类Unix操作系统(包括Linux、BSD以及其他遵循POSIX标准的操作系统)进行网络通信开发的技术领域。网络编程涉及创建和管理网络连接、交换数据以及处理不同层次网络协议栈上的各种网络事件。在Unix环境中,网络编程通常涉及到以…

华为ensp中ospf多区域管理 原理及配置命令(详解)

作者主页:点击! ENSP专栏:点击! ————前言———— OSPF 多区域的主要作用是缩小链路状态数据库和路由表的规模,减少路由更新的频率,提高网络的可扩展性,实现路由过滤和路由汇总&#xff0…

交通标志识别项目 | 基于Tensorflow+SSD实现道路交通标志识别

项目应用场景 面向智能驾驶或自动驾驶场景道路道路交通标志的识别,在交通标志识别的基础上为下一步的智能决策提供前提 项目效果: 项目细节 > 具体参见项目 README.md (1) 安装依赖 Python3.5、TensorFlow v0.12.0、Pickle、OpenCV-Python、Matplotl…