etcd与redis之间的区别

news/发布时间2024/5/7 13:21:34

一、简介

我们之前用了redis,那么好用为什么还要来用etcd呢,这里就来和大家聊聊为什么有的业务场景选择etcd。

分析:在当今的分布式系统中,数据存储及一致性相当重要。etcd和redis都是我们最受欢迎的开源分布式数据存储的解决方案,但是他们有着不同的试用场景。下面我个人对其中二个的见解。

1.数据模型

etcd:键值存储,支持原子性和分布式事务,树状结构,键可为任意字节数组,值可任意二进制
redis:键值存储,支持多种数据结构:字符串,哈希,列表,集合,有序集合,可存储多种类型数据

2.一致性

etcd:强一致性,副本始终保持相同状态,就是说,你写了数据到主节点,从节点会立即更新,保证数据一致性及可用性
redis: 保证最终一致性,存在短暂的数据不一致的情况,其持久化机制为:rdb和aof,以保证数据最终一致性

3. 可用性

etcd: 高可用,支持Raft分布式一致性算法,就是说即使有节点挂掉了也会保证数据一致性及其他节点的可用性
redis: 高可用,主从复制和哨兵选择模式,保证数据在最短时间内可以恢复

4.性能选择

etcd: 高性能,可并发读写,高吞吐量,低延迟
redis: 高性能,基于内存的存储,多种结构储存方式,读取速度快

5.可扩展性

etcd: 水平扩展,多节点可提高集群的容量及性能
redis: 垂直扩展,添加多个节点的内存和cpu资源可提交性能

6.特点对比

image

7.场景对比

etcd:
分布式协调服务,如服务发现、配置管理、锁服务
存储需要强一致性、高可用性和并发读写的关键数据
Redis:
缓存服务,加速数据库或其他慢速存储的访问
会话管理,存储用户会话信息和状态
实时分析,存储和处理流数据

8.实战用法

etcd:

使用强一致性特性来保证数据的可靠性和可用性
启用 Raft 日志压缩以减少存储空间占用
监控集群健康状况,及时发现和解决问题

Redis:

根据数据访问模式选择合适的持久化策略
使用主从复制或哨兵模式提高可用性和故障恢复能力
优化数据结构以提高查询性能

9.总结

etcd 和 Redis 都是分布式数据存储的优秀选择,但它们具有不同的特性和适用场景。etcd 提供强一致性、高可用性和并发读写能力,适合于需要这些特性的场景。Redis 提供多种数据结构、高性能和读密集型特性,适合于缓存、会话管理和实时分析等场景。通过理解它们的差异,开发人员可以根据具体需求选择最合适的解决方案。

本文部分参考原文链接:https://blog.csdn.net/star19830909/article/details/136828995

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

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

[转帖]比黄金更贵的显卡,疯狂H100

https://zhuanlan.zhihu.com/p/654361974 华尔街和硅谷联袂奉上了一件震撼业界的大事:让一家创业公司拿到23亿美元的债务融资,抵押物则是当前全球最硬的通货——H100显卡。 这个大事件的主角叫做CoreWeave,主营业务是AI私有云服务,简单说就是通过搭建拥有大量GPU算力的数据…

BBS项目创作流程

BBS项目创作流程 【零】完整文件gitee仓库BBS/BBS1.0/BlogBasedSystem Lea4ning/DjangoObject - 码云 - 开源中国 (gitee.com)【一】项目基本配置 【1】所需模块 asgiref==3.7.2 beautifulsoup4==4.12.3 certifi==2024.2.2 charset-normalizer==3.3.2 Django==3.2.12 fake-use…

Alfred使用AppleScript来实现一键隐藏功能(老板键)

set appNames to {"WeChat","QQ"} -- 将要隐藏的进程名称放入数组中tell application "System Events"repeat with appName in appNamesset appProcess to first process whose name is appNameset appId to id of appProcesstell process appNa…

[转帖]Nginx+Keepalived实现简单的服务高可用

https://www.cnblogs.com/xiexun/p/14604650.html 一般情况下,如果我们做小型项目,前端用一个nginx做反向代理即可,大概是这样的 image.png 但是,作为互联网项目,纯2C的话必然需要做高可用,不仅后端的Server有N个,Nginx同样需要有N个,一主N备,当有一个服务器挂掉的时…

红米Redmi Note 8 拆机进深度刷机模式短接图,刷机、解锁进高通9008模式

首先将手机关机,打开电池盖,用镊子短接下图中的两个触点然后通过数据线连接上电脑,计算机-管理-设备管理器中可以看到手机进入深度刷机模式的端口(高通9008)松开镊子。最后打开刷机工具,选好刷机包即可刷机,短接点位置如图所示

五种方案图文并茂教你使用DBeaver,SQL文件导入数据库,插入数据,备份恢复mysql,postgres数据

备份导出数据 方案一:支持可以整个库导出、部分表导出、多个库导出(可选格式较少) 使用连接数据库 鼠标右键选择需要导出备份的数据库-工具-备份 此步骤对于不同类型数据库来说,有的可以一次选择多个表,有的可以一次选择多个库,下面是两个截图案例勾选需要导出的表-点击下…