一直都是memcachedb+magent处理一个存储的需求,达到400G的内容,都是一个db,我发现这个已经导致了两块硬盘的ba gong,不知道是因为他们比较老了折腾不了了还是这个架构的问题导致大数据文件的读写有难度而崩垮了。。
原先的方案是:magent -s A -b B
A和B都备有500G左右的空间,可也挺浪费的,500G空间做备份,而很不幸,如果发生问题,切换到备用的服务器后,再建立一个新的备用就得复制这500G的文件了,这个并不是好事情,而且这里面不好的地方是,只有一半的空间有用。
改良方案:利用分布式存储的优势,建立magent的多源方式
magent -s A -s B -s C -s D -b E
也就是用多个服务器解决存储的问题,这样500G的数据,分到一个数据库的数据压力都平分了,不担心大文件的问题,也可以在一个节点出问题的时候换上另外一个服务器,但这里就导致备份的问题了。
一些问题:
1 magent有备份服务器的时候,所有的写操作都会发送到备份,那备份的机器就并没法达到减小文件的作用了。
2 magent是hash算法,key对应固定的节点,对应的是A则永久的对应为A,不会在A机器挂掉后自动调节对应关系,而是请求备份机器,如果没有备份,单节点失败则影响该节点的存储
也就是说,备份是必须的,但如果使用一样的方式,备份并没有改善。
那可以启用memcached作为备份,有下面的好处:
1 只占用固定的内存数量
2 可以应对不断的存储需求,自动把前面的存储内容清理掉
3 可以应对短时间的节点失败
我们看看这个方案的过程:1 存储key1时magent会计算那个服务器(A)存储key1,存储key1到A,存储到备份E
2 存储key2时要存到B,但B节点失败,存储到E
3 读取key1,从A读取
4 读取key2,从B读取,节点失败,从E读取
5 B恢复后,读写B,备份只存储
注意到一个问题,备份只保持存储的数据有一定的时效,如果存储请求很多并且分配的内存很小,可能在短时间就被替换了,而读取会失败,所以备份只是保证访问能够一定程度正常,并非保证数据的完整性。
分享到:
相关推荐
5. **灵活的数据模型**:虽然不支持 SQL 查询,但 Memcachedb 采用键值对存储方式,能够适应各种非结构化数据的存储需求。 #### 四、支持的命令 Memcachedb 支持一系列与 memcached 相兼容的命令,例如: - `set`...
- API 包含了连接管理、数据操作和事务处理等功能,例如 `memcachedb_connect`、`memcachedb_get`、`memcachedb_set` 和 `memcachedb_begin`。 5. **配置与优化** - 配置文件通常位于 `/etc/memcachedb.conf`,...
3. **Berkeley DB引擎**:Memcachedb采用了Berkeley DB作为其底层存储引擎,这是一款由Oracle公司提供的嵌入式数据库系统,具有事务处理、多版本并发控制等特性,能提供可靠的数据管理服务。 4. **API接口**:...
在Ubuntu 9.04中安装Memcachedb是一个相对直接的过程,但如果希望在系统上顺利运行Memcachedb,用户需要了解一些前置知识,包括对Memcachedb的基本认识、相关依赖库的安装,以及在Ubuntu系统上进行安装操作的具体...
- **实时性需求**:由于数据存储在内存中,Memcachedb提供亚毫秒级的响应时间,对于实时性要求高的应用,如社交网络、电商网站等,有着显著优势。 - **扩展性**:分布式架构使得Memcachedb可以通过增加服务器节点...
因此,一系列创新技术应运而生,包括分布式缓存、MPP(大规模并行处理)的分布式数据库、分布式文件系统以及各种NoSQL分布式存储方案。 1. **分布式缓存**:分布式缓存,如Amazon Dynamo和memcached,是提高系统...
【Spring-DM 分布式】是一种基于Spring Dynamic Modules (Spring-DM)的分布式服务框架,旨在简化在OSGi(Open Service Gateway ...随着版本的升级,DSF将继续优化其架构,以满足更复杂的应用场景和更高的性能需求。
Cassandra采用分布式架构,支持多数据中心的复制,适合处理大规模数据,适合大规模分布式数据存储。 5. **CouchDB**和**MongoDB**都支持文档型数据模型,而**Redis**则更适合键值存储,**Riak**和**Membase**也是...
而NoSQL数据库,正如文章中提到的CouchDB和MongoDB(文档型存储)、MemcacheDB和Dynamo(键值存储),则放弃了严格的SQL语法规则,以换取更高的可扩展性和灵活性。NoSQL数据库适用于大数据量、高并发、分布式环境下...
但在处理大规模数据、高并发读写、分布式存储和动态结构的数据时,关系数据库可能会面临性能瓶颈和扩展性问题。 NoSQL数据库,全称为"Not Only SQL",是为了应对上述挑战而出现的一种新型数据库模型。NoSQL数据库不...
- **列存储**:如 Hbase、Cassandra 和 Hypertable,适合处理大规模数据,优化了对特定列的查询。 - **文档存储**:MongoDB 和 CouchDB 属于此类,以 JSON 格式存储数据,允许对字段建立索引。 - **Key-Value ...
NoSQL(Not Only SQL)数据库是一种非关系型数据库管理系统,其设计初衷是为了处理大规模数据存储需求,特别是在大数据和实时Web应用中,NoSQL能够提供更好的可扩展性和灵活性。 #### NoSQL发展背景与动机 NoSQL...
例如,Memcachedb的出现引起了广泛关注,随后涌现了Tokyo Cabinet、Redis和Cassandra等著名键值存储解决方案。 分布式键值存储成为关注焦点,其中Dynamo是分布式实现的典型代表。Dynamo的设计理念被许多分布式键值...
3. **分片(sharding)**:当需要更大的存储空间和处理能力时,MongoDB 可以通过分片在多个服务器上分布数据,确保性能。 4. **丰富的查询表达式**:使用 JSON 格式的查询语句,支持内嵌对象和数组的操作。 5. **更新...
在DSF V0.7之后的版本,可能会根据实际需求引入更多机制调整和支持,比如针对不同场景优化服务元信息的存储和更新策略,或者提供更灵活的服务发现和通信机制。 总结来说,基于Spring-DM的DSF充分利用了Spring的灵活...
3. **数据分片**:对于大数据量,可以考虑将数据分片存储在多个Memcached实例上,提高并行处理能力。 4. **预热**:在服务启动时,可以预先加载常用数据,减少初次访问时的延迟。 **Q&A**: 1. **如何解决数据一致...
Voldemort是一款分布式Key-Value存储系统,主要用于处理大规模数据存储的需求。它设计之初就是为了能够应对高并发读写场景,并且支持容错机制。与Redis相比,Voldemort更侧重于数据分片和复制,适用于对数据一致性和...