当前位置:首页 > 文章列表 > Golang > Go教程 > EchoVault:Go 中的嵌入式 Redis 替代方案

EchoVault:Go 中的嵌入式 Redis 替代方案

来源:dev.to 2024-07-24 10:46:05 0浏览 收藏

大家好,今天本人给大家带来文章《EchoVault:Go 中的嵌入式 Redis 替代方案》,文中内容主要涉及到,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

EchoVault:Go 中的嵌入式 Redis 替代方案

大约一年前,我开始致力于一个开源项目,以在 Go 中构建 Redis 的嵌入式替代方案。就在那时我开始构建 EchoVault 项目。从那时起,该项目引起了一些兴趣,甚至一些贡献者。

本文介绍了 EchoVault、其功能、用例以及其开发背后的动机。

什么是 EchoVault?

EchoVault 是专为 Go 应用程序量身定制的嵌入式内存数据存储。它通过 TCP 提供与 RESP 兼容的接口,同时提供直接嵌入到应用程序中的灵活性。

通过这样做,EchoVault 的目标是在某些用例中取代 Redis 等传统内存数据存储,通过增强与 Go 的集成来提供类似的功能。

为什么建造 EchoVault

我构建 EchoVault 的最初动机是:

  • 嵌入式灵活性:像Redis这样的传统内存数据存储是需要单独管理和部署的外部服务。 EchoVault 允许开发人员将数据存储直接嵌入到他们的应用程序中,从而简化部署过程,从而消除了这种开销。
  • Go 生态系统集成:EchoVault 主要为 Go 设计,确保 Go 应用程序内的无缝集成和最佳性能。但是,它还保持了 TCP 上的 RESP 兼容性,使其与现有的 Redis 客户端(例如 redis-cli 和 Jedis)兼容。
  • Redis 许可证变更:EchoVault 是开源的(在 Apache 2.0 下许可)。我们致力于保持这种完全开源的模式,而不是开放核心。

EchoVault 提供的功能

EchoVault 的功能使其成为内存数据存储的可靠选择:

  • TLS 和 mTLS 支持:通过支持多个服务器和客户端根证书颁发机构 (RootCA) 实现安全通信。 复制集群支持:利用RAFT算法进行复制和集群。
  • 访问控制层:提供用户身份验证和授权以保护数据访问。
  • 分布式发布/订阅功能:支持发布/订阅通道和模式以进行实时数据处理。
  • 数据结构:我们支持多种数据结构,包括集合、排序集合、哈希、列表等。我们正在继续在其中添加更多数据结构和命令。
  • 持久层:该层通过快照和仅附加文件持久性确保数据持久性。 AOF 文件与 RESP 兼容,但尚未完全兼容 Redis。
  • 关键驱逐策略:实现各种关键驱逐策略来管理内存使用。 EchoVault 具有被动和主动密钥驱逐功能。通过被动密钥驱逐,过期的密钥直到下次访问它们时才会被驱逐。通过主动驱逐,EchoVault 将主动删除过期的密钥。
  • 命令扩展:允许通过共享对象文件和嵌入式 API 对命令进行运行时扩展。

由于我们处于开发的早期阶段,功能列表不断扩大。我们为未来准备了一些更酷的功能,包括:

  • 流。
  • Lua 模块扩展。
  • 分片。

EchoVault 的架构

EchoVault 支持独立部署和集群部署。

独立模式

在独立模式下,EchoVault 运行单个(独立)实例。这是运行 EchoVault 的最简单方法。您可以从嵌入式库运行独立实例,也可以将其作为接受 TCP 连接的自己的进程启动。
嵌入式实例还可以接受 TCP 连接,允许您从 TCP 客户端与 Go 进程进行通信。

RAFT复制集群模式

对于需要强一致性和容错能力的应用,EchoVault支持基于RAFT的复制集群模式。

RAFT 是一种共识算法,可确保分布式系统之间的数据一致性。在这种模式下,多个EchoVault实例可以组成一个集群,提供数据复制并确保即使在节点故障的情况下数据也保持一致。

RAFT集群模式的主要特点:

  • 容错:即使集群中的某些节点出现故障,也能确保数据可用性。
  • 一致性:保证集群中所有节点的数据相同。
  • 可扩展性:允许通过向集群添加更多节点来进行水平扩展。

您甚至可以在嵌入式模式下运行 EchoVault 集群。这意味着您的应用程序实例可以通过 EchoVault 层相互通信,而无需部署第三方服务。这非常适合跨应用程序实例集群的会话管理等用例。

EchoVault 用例

EchoVault 的多功能性使其适用于广泛的应用程序。以下是一些潜在的用例:

  • 内存缓存 场景:某电商网站需要缓存商品详情和用户会话信息以提高性能。 解决方案:使用 EchoVault 缓存经常访问的数据以加快响应时间。 优点:页面加载速度更快,用户体验得到改善,数据库压力减少。
  • 服务发现 场景:微服务架构需要动态服务发现来进行服务间通信。 解决方案:将服务端点存储在 EchoVault 中,使服务能够有效地发现彼此并进行通信。 好处:简化服务发现并提高通信效率。
  • 会话管理 场景:分布式 Web 应用程序必须管理跨多个实例的用户会话。 解决方案:使用EchoVault嵌入式集群来存储会话数据,确保所有应用程序实例的一致性和可访问性。 优点:跨应用程序集群进行一致的会话管理,无需部署 Redis 等辅助服务。
  • 实时分析 场景:金融交易平台需要实时分析和监控交易数据。 解决方案:在 EchoVault 中存储和处理实时贸易数据,利用其排序集和发布/订阅功能进行跟踪和分析。 优点:实时数据处理和更快的分析。
  • 分布式任务队列 场景:后端系统需要管理并分发任务到多个工作节点。 解决方案:使用EchoVault的列表数据结构实现任务队列,其中任务被推送到列表中,工作节点弹出任务进行处理。 优点:高效的任务分配和可扩展性。
  • 功能标志和配置管理 场景:SaaS 应用程序需要动态启用或禁用功能并管理配置设置,而无需重新部署应用程序。 解决方案:将功能标志和配置设置存储在 EchoVault 中。 优点:动态配置管理和减少停机时间。
  • 速率限制和节流 场景:API 网关需要强制执行速率限制和限制请求,以防止滥用并确保公平使用。 解决方案:使用 EchoVault 的内存功能来实施速率限制,以跟踪请求计数并实时实施限制。 好处:有效的速率限制和提高 API 可靠性。
  • 领袖选举 场景:一个分布式服务集群需要选举一个领导者来协调任务。 解决方案:依靠EchoVault嵌入式分布式集群的Leader选举,确保只有一个应用程序实例被指定为Leader。 好处:可靠的领导者选举和改进的协调,而无需在应用程序级别自行实现。

结论

EchoVault 是一个雄心勃勃的项目。在这些早期阶段,我们预计必须解决许多问题并添加许多功能。然而,我们欢迎这一挑战,并希望让 Go 社区参与到该项目中。

如果这篇文章激发了您的好奇心,或者您有兴趣为这样的项目做出贡献,请查看我们的 GitHub 并给我们一颗星!我们始终欢迎更多反馈和贡献!

到这里,我们也就讲完了《EchoVault:Go 中的嵌入式 Redis 替代方案》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

版本声明
本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
TypeScript 中 &#Object&#、&#{}&# 和 &#object&# 之间的区别TypeScript 中 &#Object&#、&#{}&# 和 &#object&# 之间的区别
上一篇
TypeScript 中 &#Object&#、&#{}&# 和 &#object&# 之间的区别
人工智能交易模型
下一篇
人工智能交易模型
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    508次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    497次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • 谱乐AI:青岛艾夫斯科技的多模型AI音乐生成工具
    谱乐AI
    谱乐AI是由青岛艾夫斯科技有限公司开发的AI音乐生成工具,采用Suno和Udio模型,支持多种音乐风格的创作。访问https://yourmusic.fun/,体验智能作曲与编曲,个性化定制音乐,提升创作效率。
    4次使用
  • Vozo AI:超真实AI视频换脸工具,提升创意内容制作
    Vozo AI
    探索Vozo AI,一款功能强大的在线AI视频换脸工具,支持跨性别、年龄和肤色换脸,适用于广告本地化、电影制作和创意内容创作,提升您的视频制作效率和效果。
    4次使用
  • AIGAZOU:免费AI图像生成工具,简洁高效,支持中文
    AIGAZOU-AI图像生成
    AIGAZOU是一款先进的免费AI图像生成工具,无需登录即可使用,支持中文提示词,生成高清图像。适用于设计、内容创作、商业和艺术领域,提供自动提示词、专家模式等多种功能。
    4次使用
  • Raphael AI:Flux.1 Dev支持的免费AI图像生成器
    Raphael AI
    探索Raphael AI,一款由Flux.1 Dev支持的免费AI图像生成器,无需登录即可无限生成高质量图像。支持多种风格,快速生成,保护隐私,适用于艺术创作、商业设计等多种场景。
    4次使用
  • Canva可画AI生图:智能图片生成新选择
    Canva可画AI生图
    Canva可画AI生图利用先进AI技术,根据用户输入的文字描述生成高质量图片和插画。适用于设计师、创业者、自由职业者和市场营销人员,提供便捷、高效、多样化的视觉素材生成服务,满足不同需求。
    5次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码