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之后,也面临着诸多方面的挑战:
- 合规性:Redis自2013年起,采用了BSD开源协议,允许云服务商自由分发和使用Redis代码,但随着Redis Labs引入Commons Clause补充条款之后,针对商业软件服务提供商便提出了额外限制,这意味着云厂商必须注意许可模式的变化,确保在提供托管Redis服务时符合开源协议的精神及其附加条款,避免潜在的法律风险。
- 技术创新与差异化:开源Redis虽然提供了基础功能,但为了在竞争激烈的云服务市场中脱颖而出,云计算厂商需要开发出具备差异化特性的高级功能或管理工具。如何在遵循开源协议的同时,增加诸如监控、备份恢复、安全防护等增值服务,是对云厂商技术研发能力的考验。
- 服务质量与SLA保障:云服务商提供的Redis服务不仅要保证开源版本的稳定性和性能,还需提供高质量的服务水平协议(SLA),包括高可用性、容灾恢复以及弹性扩展等,而这些特性往往需要在开源Redis基础上进行大量定制开发和优化工作。
- 维护与升级:云环境下的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,通过网络多线程调度模型,大大提升网络读写任务的并发量,保障秒级的读写性能,下面是实验室评测的一些数据:
可以看到,华为云DCS企业版Redis的QPS并发数优于基于开源Redis版本最大接近5倍,时延是其25%,完全遥遥领先。
华为云分布式缓存服务DCS经过5年的发展,目前已经广泛应用于电商、社交文娱、游戏等行业。
在上云阶段通过专业的上云搬迁团队,提供贴身技术咨询和迁移实施支持服务,实现了应用“零改造”,搬迁上云业务无中断;上云后通过千万级的并发接入能力和百万级的读写能力保障秒杀商品“零等待”、订单无丢失、直播间礼物“零卡顿”等高难度应用场景,成为华为云客户信赖的最有价值的云服务。
阅读原文
相关文章:

Redis开源协议调整,我们怎么办?
2024年3月20日, Redis官方宣布,从 Redis 7.4版本开始,Redis将获得源可用许可证 ( RSALv2 ) 和服务器端公共许可证 ( SSPLv1 ) 的双重许可,时间点恰逢刚刚完成最新一轮融资,宣布的时机耐人寻味。 Redis协议调整,对云计算…...
干了三年外包。。。忘了什么是CICD。。。
干了三年外包。。。忘了什么是CICD。。。 CI/CD(持续集成与持续交付) 是一种软件开发实践,它可以帮助我们更快地交付高质量的软件产品。CI/CD的核心思想是将软件开发过程中的各个阶段自动化,从而减少人工干预,提高开发效率和产品质量。本文将…...
【LeetCode】454. 四数相加 II
目录 题目 思路 代码 题目 题目链接:. - 力扣(LeetCode) 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 < i, j, k, l < nnums1…...
搜索(DFS BFS)
DFS 常规DFS: 二叉树前序,中序,后序遍历-CSDN博客 void postorderTraversal(root)初始化一个空列表 arrfind访问总树(root,arr)return arrvoid find(temp, arr)if temp 为空return // 调用顺序由前中后序决定find递归访问左子树find递归访问右子树arr加入当前节点…...
koc和kol是什么意思?
一、koc和kol是什么意思? koc和kol是专业术语。KOC是关键意见消费者的意思,是Key Opinion Consumer的缩写;KOL是关键意见领袖的意思,是Key Opinion Leader的缩写。 1、关键意见领袖kol “关键意见领袖”通俗地讲是达人。这些人…...

基于vscode Arduino插件开发Arduino项目
基于vscode Arduino插件开发arduino项目 插件配置问题记录1. 指定编译输出文件夹2. 编译下载时不输出详细信息3. 输出端口信息乱码4. 通过串口输出中文,vscode对应的串口助手上会显示乱码(未解决) 插件配置 环境:Arduino插件版本…...

AI 驱动强大是视频转换处理软件
由 AI 驱动的视频工具包。 增强、转换、录制和编辑视频AI 驱动的顶级视频工具包。 不论是老旧、低质、噪声或模糊的影片/图像,都能升级至 4K,稳定抖动的影片,提升帧率至 120/240fps,并能以全面 GPU 加速进行转换、压缩、录制和编辑…...

Python+requests+Pytest+logging+allure+pymysql框架详解
一、框架目录结构 1)tools目录用来放公共方法存储,如发送接口以及读取测试数据的方法,响应断言 数据库断言 前置sql等方法;2)datas目录用例存储接口用例的测试数据,我是用excel来存储的数据,文件数据 图片数据等;3)testcases目录用来存放测试用例,一个python文件对应…...
菜鸟笔记-Numpy函数-full/random.randint/random.choice
full函数 numpy.full 是 NumPy 库中的一个函数,它用于创建一个具有指定形状、数据类型和填充值的数组。此函数非常有用,因为它允许你快速生成一个具有相同值的数组,而无需手动设置每个元素。 1函数介绍 numpy.full(shape, fill_value, dty…...
蓝桥杯每日一题:牛的学术圈I(二分,双指针)
由于对计算机科学的热爱,以及有朝一日成为 「Bessie 博士」的诱惑,奶牛 Bessie 开始攻读计算机科学博士学位。 经过一段时间的学术研究,她已经发表了 N篇论文,并且她的第 i 篇论文得到了来自其他研究文献的 ci次引用。 Bessie 听…...
fping命令
fping是一个用于网络扫描的工具,它可以在 Linux 系统上使用。fping可以发送 ICMP ECHO_REQUEST(即 ping)数据包到指定的网络地址范围,并等待响应。通过这种方式,fping可以用来检测哪些 IP 地址是活跃的。 可以测试多个…...
奇富科技推出新一代全自研智能语音模型,打破沟通壁垒
“您好!请问是李先生噻?” 李先生刚接起电话,就被这熟悉的乡音逗乐了。这不是他所预料的常规客服,而是奇富科技新一代全自研智能语音模型——QI语精灵。这款模型不仅能用方言与人自然交流,还能在智能营销、贷后提醒、风…...

穿越代码之海:探寻结构体深层逻辑,展望未来应用新天地
欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看,已成习惯 创作不易,多多支持! 结构体作为一种数据结构,其定义和特点决定了它在各种应用中的广泛适用性。随着科技的进步和新兴行业的不断涌现…...

layui框架实战案例(26):layui-carousel轮播组件添加多个Echarts图标的效果
在Layui中,使用layui-carousel轮播组件嵌套Echarts图表来实现多个图表的展示。 css层叠样式表 调整轮播图背景色为白色;调整当个Echarts图表显示loading…状态;同一个DIV轮播项目添加多个Echarts的 .layui-carousel {background-color: #f…...

Unity开发一个FPS游戏之三
在前面的两篇博客中,我已实现了一个FPS游戏的大部分功能,包括了第一人称的主角运动控制,武器射击以及敌人的智能行为。这里我将继续完善这个游戏,包括以下几个方面: 增加一个真实的游戏场景,模拟一个废弃的…...

NIUSHOP完美运营版商城 虚拟商品全功能商城 全能商城小程序 智慧商城系统 全品类百货商城
完美运营版商城/拼团/团购/秒杀/积分/砍价/实物商品/虚拟商品等全功能商城 干干净净 没有一丝多余收据 还没过手其他站 还没乱七八走的广告和后门 后台可以自由拖曳修改前端UI页面 还支持虚拟商品自动发货等功能 挺不错的一套源码 前端UNIAPP 后端PHP 一键部署版本 源码免费…...

vue2开发好还是vue3开发好vue3.0开发路线
Vue 2和Vue 3都是流行的前端框架,它们各自有一些特点和优势。选择Vue 2还是Vue 3进行开发,主要取决于你的项目需求、团队的技术栈、以及对新特性的需求等因素。以下是一些关于Vue 2和Vue 3的比较,帮助你做出决策: Vue 2࿱…...

爬虫 新闻网站 并存储到CSV文件 以红网为例 V2.0 (控制台版)升级自定义查询关键词、时间段,详细注释
爬虫:红网网站, 获取指定关键词与指定时间范围内的新闻,并存储到CSV文件 V2.0(控制台版) 爬取目的:为了获取某一地区更全面的在红网已发布的宣传新闻稿,同时也让自己的工作更便捷 对比V1.0升级的…...

JavaSE-11笔记【多线程2(+2024新)】
文章目录 6.线程安全6.1 线程安全问题6.2 线程同步机制6.3 关于线程同步的面试题6.3.1 版本16.3.2 版本26.3.3 版本36.3.4 版本4 7.死锁7.1 多线程卖票问题 8.线程通信8.1 wait()和sleep的区别?8.2 两个线程交替输出8.3 三个线程交替输出8.4 线程通信-生产者和消费者…...

WebKit是什么?
WebKit是一个开源的浏览器引擎,它用于呈现网页内容在许多现代浏览器中,包括Safari浏览器、iOS内置浏览器、以及一些其他浏览器如Google Chrome的早期版本。以下是一些关于WebKit的重要信息: 起源和发展:WebKit最初是由苹果公司为其…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...

GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...