0

0

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

WBOY

WBOY

发布时间:2024-07-24 11:30:09

|

456人浏览过

|

来源于dev.to

转载

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 支持独立部署和集群部署。

uBrand
uBrand

一站式AI品牌创建平台,在线品牌设计,AI品牌策划,智能品牌营销;uBrand帮助创业者轻松打造个性品牌!

下载

独立模式

在独立模式下,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 并给我们一颗星!我们始终欢迎更多反馈和贡献!

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

331

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

236

2023.10.07

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

539

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

21

2025.12.22

深入理解算法:高效算法与数据结构专题
深入理解算法:高效算法与数据结构专题

本专题专注于算法与数据结构的核心概念,适合想深入理解并提升编程能力的开发者。专题内容包括常见数据结构的实现与应用,如数组、链表、栈、队列、哈希表、树、图等;以及高效的排序算法、搜索算法、动态规划等经典算法。通过详细的讲解与复杂度分析,帮助开发者不仅能熟练运用这些基础知识,还能在实际编程中优化性能,提高代码的执行效率。本专题适合准备面试的开发者,也适合希望提高算法思维的编程爱好者。

28

2026.01.06

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1157

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

215

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2022

2025.12.29

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

30

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.4万人学习

Redis+MySQL数据库面试教程
Redis+MySQL数据库面试教程

共72课时 | 6.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号