`
nkadun
  • 浏览: 55554 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

<插曲>目前对key-value分布式集群数据库的认识(继续坚持)

阅读更多
通过论坛上大侠们的指点,以及跟“菜鸟”童鞋的交流,发现我原来的有些认识是错误的或有偏差的,如下:
1. 被cache所迷惑,误把distributed cache看成了distributed db,现在的理解是cache只是对db的增强(其实一直是这样,只是加上了个分布式就把我自己搞乱了)
2. 对cache进行事务处理,再由cache与storage同步是对事务的割裂,也就不能再称之为事务了
3. db不一定非得是server mode,一个db server + 一个app server与两个app server with local db是一样的道理

关于一致性哈希的最新认识:当一个节点宕掉时,对应区间的数据将会写到下一节点;因此就涉及到数据复制以及数据版本的问题。追加一句:Master/Slave模式并不是可靠的,呵呵
另一种就是B+树处理方式,需要进一步学习。现在先只看哈希方式。

同时,目前比较倾向于以下这种方案框架(在“菜鸟”的“勾引”和对dynamo的学习下形成的):
1. app server + local storage(可加缓存机制,合称db)作为一个节点
2. 节点间的事务和数据同步由框架来完成,对APP是透明的
3. APP开发者只需要会使用框架的API即可,不需要关注数据存储方式(交由数据管理员配置)
4. 通过框架可进行各db的规则配置,比如A、B节点hash值等
5. N、W、R思想及数据版本处理(原来这才是局部一性,全部一致的问题啊,呵呵)
6. 前端的连接(如HTTP连接)具体到哪个节点由DNS负载均衡处理,分为两种方式:
   - 请求A节点时框架判定B节点更合适,那么由B节点提供给A节点数据,由A节点返回
   - 请求A节点时框架判定B节点更合适,将连接转交给B节点,由B节点返回
说的还是有些乱,东西太多,自己思路老是跑到如何实现上去了,先这么着吧,能把自己的目标先描述清楚了再说。
分享到:
评论
2 楼 nkadun 2010-01-21  
jellyfish 写道
1. the new trend(倾向) is to replace db with cache, because of performance and huge data set. But this depends on your particular app. If you don't need it, don't worry about it.

2. cache could have transactions, just most of the implementations don't. Gemstone and Tangosol both have. But where do we enforce transactions is more application dependent(e.g., at the service level, rather than DAO level), this is a very careful design decision.

3. Yes, there are a lot of combinations here, but again, this is application dependent and the design decision does make a big difference. Optimize it and don't overoptimize it(meaning causing the system unstable). There is an old saying, an exact measurement worths a thousand experts' opinion.

Just my two cents.


谢谢点评!我就不用英文回复了,因为我用五笔,打汉字很快,呵呵。我还在继续学习中,乱七八糟想的东西还需要大家多指点。
1 楼 jellyfish 2010-01-21  
1. the new trend is to replace db with cache, because of performance and huge data set. But this depends on your particular app. If you don't need it, don't worry about it.

2. cache could have transactions, just most of the implementations don't. Gemstone and Tangosol both have. But where do we enforce transactions is more application dependent(e.g., at the service level, rather than DAO level), this is a very careful design decision.

3. Yes, there are a lot of combinations here, but again, this is application dependent and the design decision does make a big difference. Optimize it and don't overoptimize it(meaning causing the system unstable). There is an old saying, an exact measurement worths a thousand experts' opinion.

Just my two cents.

相关推荐

    Hadoop集群搭建.pdf

    &lt;name&gt;dfs.ha.fencing.ssh.private-key-file&lt;/name&gt; &lt;value&gt;~/.ssh/id_rsa&lt;/value&gt; &lt;/property&gt; &lt;property&gt; &lt;name&gt;dfs.ha.fencing.ssh.connect-timeout&lt;/name&gt; &lt;value&gt;30000&lt;/value&gt; &lt;/property&gt; ``` 通过以上...

    springboot-redis分布式锁

    SpringBoot以其轻量级和便捷的特性,使得开发者能快速搭建应用,而Redis作为内存数据库,提供高速的数据读写能力,适合用于实现分布式锁。 首先,我们需要在SpringBoot项目中引入Redis的相关依赖。这通常通过在`pom...

    HBase集群与应用手册.docx

    --开启集群--&gt; &lt;property&gt; &lt;name&gt;hbase.cluster.distributed&lt;/name&gt; &lt;value&gt;true&lt;/value&gt; &lt;/property&gt; &lt;!-- 端口 --&gt; &lt;property&gt; &lt;name&gt;hbase.master.port&lt;/name&gt; &lt;value&gt;16000&lt;/value&gt; &lt;/property&gt; &lt;!--...

    MQ常见命令集锦

    - `updateBrokerConfig -n &lt;nameserver&gt; -b &lt;broker_name&gt; -k &lt;config_key&gt; -v &lt;config_value&gt;`: 更新Broker配置。 9. **消费进度管理**: - `queryConsumeProgress -n &lt;nameserver&gt; -c &lt;consumer_group&gt; -t ...

    基于HDFS的,分布式的key-value store.zip

    标题 "基于HDFS的,分布式的key-value store.zip" 提示我们关注的是一个与Hadoop分布式文件系统(HDFS)相关的key-value存储解决方案。描述中的“人工智能-hdfs”表明这个项目可能是在HDFS基础上构建的人工智能应用...

    springboot集成kafka推送的简单例子

    &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt; &lt;/dependency&gt; &lt;!-- Spring Boot Starter Actuator --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-...

    分布式KEY-VALUE存储设计方案.docx

    ### 分布式KEY-VALUE存储设计方案 #### 一、引言 随着互联网技术的迅猛发展,数据量呈现出爆炸性增长的趋势。传统的集中式数据库已经难以满足海量数据存储的需求,因此,分布式Key-Value(KV)存储系统作为一种...

    spring集成redis,集成redis集群

    标题中的“spring集成redis,集成redis集群”表明我们要讨论的是如何在Spring框架中整合Redis分布式缓存,并且特别关注如何配置和使用Redis集群。Redis是一种高性能的键值数据存储系统,常用于缓存、消息队列等场景...

    asf-cache中文guide

    Memcached是一种分布式内存缓存系统,常用于减轻数据库的负载,提高应用程序的响应速度。这个优化版客户端尤其适用于Java开发环境,通过改进的算法和优化的通信机制,实现了更高效的缓存操作。 **依赖库** 在使用...

    mongoDB 教程 视频+PDF

    - 插入文档:`db.&lt;collection&gt;.insert({&lt;field1&gt;:&lt;value1&gt;, &lt;field2&gt;:&lt;value2&gt;})` - 查询文档:`db.&lt;collection&gt;.find({&lt;query&gt;)` - 更新文档:`db.&lt;collection&gt;.update({&lt;query&gt;}, {&lt;update&gt;})` - 删除文档:`...

    CentOS7x86-64bit+JDK1.8+hadoop2.7.2安装部署.docx

    &lt;value&gt;file:///data/hadoop/hdfs/datanode&lt;/value&gt; &lt;/property&gt; &lt;/configuration&gt; ``` 3. `mapred-site.xml` - 配置MapReduce框架: ```xml &lt;configuration&gt; &lt;property&gt; &lt;name&gt;mapreduce.framework.name&lt;/...

    Apache Cassandra是一套开源分布式Key-Value存储系统

    作为一款Key-Value存储系统,Cassandra在设计时就考虑了大规模数据存储和处理的需求,因此它非常适合那些需要处理PB级别数据、对数据可用性和读写性能有高要求的应用场景。 在Cassandra的设计哲学中,它强调了数据...

    hadoop&spark安装教程.pdf

    &lt;value&gt;/tmp/hadoop-${user.name}&lt;/value&gt; &lt;/property&gt; &lt;/configuration&gt; ``` - **hdfs-site.xml**:配置 HDFS 的数据块副本数量等参数。示例配置如下: ```xml &lt;configuration&gt; &lt;property&gt; &lt;name&gt;dfs....

    memcache Java

    这样做的好处是可以实现session的分布式共享,对于负载均衡的Web集群,用户在集群中的任意一台服务器上的操作都可以在其他服务器上继续,无需重新登录或丢失状态。 为了在Java项目中集成Memcache,你需要添加对应的...

    Hadoop & Spark 安装、环境配置及应用项目详解.docx

    &lt;value&gt;file:///usr/local/hadoop/data/namenode&lt;/value&gt; &lt;/property&gt; &lt;property&gt; &lt;name&gt;dfs.datanode.data.dir&lt;/name&gt; &lt;value&gt;file:///usr/local/hadoop/data/datanode&lt;/value&gt; &lt;/property&gt; &lt;/configuration...

    ehcache-spring

    例如,通过集群配置实现缓存的高可用性,或者使用 Terracotta Server 作为分布式缓存解决方案。 **性能优化和最佳实践** 1. 合理设置缓存大小:根据应用的实际情况,调整缓存的最大容量,避免因缓存溢出导致的问题...

    ehcache-terracotta代码配置

    Ehcache是一个流行的Java缓存库,用于提高应用程序性能,减少对数据库的访问。当与Terracotta结合使用时,Ehcache可以实现分布式缓存,使得多台服务器上的应用可以共享同一份缓存数据,从而构建高可用的集群环境。在...

    memcached-session-manager-1.8.1

    &lt;param-value&gt;n1:192.168.1.1:11211,n2:192.168.1.2:11211&lt;/param-value&gt; &lt;/init-param&gt; &lt;!-- 其他配置参数 --&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;MemcachedSessionFilter&lt;/filter-name&gt; &lt;url-pattern&gt;...

    Go-etcd一个高可用的分布式键值数据库k8s全家桶标配的注册与发现服务

    它通过提供强一致性的 Key-Value 存储,实现了对集群状态的高效管理和监控。 **1. etcd 简介** etcd 是一个开源项目,设计目标是提供一个简单、安全、高性能的分布式键值存储系统。它使用 raft 一致性算法来确保...

Global site tag (gtag.js) - Google Analytics