标签: couchbase

Memcached,Redis或Couchbase

我有一个大约16GB RAM的Debian服务器,我正在使用nginx和几个重的mysql数据库,以及一些自定义的php应用程序.我想在Mysql和PHP之间实现内存缓存,但是数据库太大而无法将所有内容存储在RAM中.我认为,就研究而言,LRU缓存可能会更好.这会排除Redis吗?Couchbase也是一个考虑因素.

memcached caching redis couchbase

14
推荐指数
1
解决办法
2万
查看次数

建议的解决方案:在分布式环境中生成唯一ID

我一直在浏览网络,试图找到一个允许我们在区域分布式环境中生成唯一ID的解决方案.

我查看了以下选项(以及其他选项):

SNOWFLAKE(Twitter)

  • 这似乎是一个很好的解决方案,但我不喜欢为了创建ID而必须管理另一个软件的额外复杂性;
  • 它在这个阶段缺乏文档,所以我认为这不是一个好的投资;
  • 节点需要能够使用Zookeeper相互通信(延迟/通信故障怎么样?)

UUID

  • 看看吧:550e8400-e29b-41d4-a716-446655440000 ;
  • 它是一个128位ID;
  • 有一些已知的碰撞(取决于我猜的版本)看到这篇文章.

与MYSQL类似的关系数据库中的自动编码

  • 这似乎是安全的,但不幸的是,我们没有使用关系数据库(可伸缩性首选项);
  • 我们可以为此部署一个MySQL服务器,就像Flickr所做的那样,但同样,这又引入了另一个故障点/瓶颈.还增加了复杂性.

像COUCHBASE一样的非关系数据库中的自动识别

  • 这可能有用,因为我们使用Couchbase作为我们的数据库服务器,但是;
  • 当我们在不同区域有多个集群,延迟问题,网络故障时,这将无效:在某些时候,ID会根据流量的数量发生冲突;

我提出的解决方案(这是我需要帮助的)

假设我们在5个不同的地区(非洲,欧洲,亚洲,美洲和大洋洲)拥有由10个Couchbase节点和10个应用节点组成的集群.这是为了确保从最靠近用户的位置提供内容(以提高速度)并在发生灾难时确保冗余等.

现在,任务是生成在复制(和平衡)发生时不会发生碰撞的ID,我认为这可以通过3个步骤实现:

步骤1

将为所有区域分配整数ID(唯一标识符):

  • 1 - 非洲;
  • 2 - 美国;
  • 3 - 亚洲;
  • 4 - 欧洲;
  • 5 - Ociania.

第2步

为添加到群集的每个应用程序节点分配一个ID,记住一个群集中最多可能有99 999个服务器(尽管我怀疑:这是一个安全的预防措施).这看起来像这样(假IP):

  • 00001 - 192.187.22.14
  • 00002 - 164.254.58.22
  • 00003 - 142.77.22.45
  • 等等.

请注意,所有这些都在同一个集群中,这意味着您可以在每个区域拥有节点00001.

第3步

对于插入数据库的每个记录,将使用递增的ID来标识它,这就是它的工作方式:

Couchbase提供了一个增量功能,我们可以使用它在群集内部创建ID.为确保冗余,将在群集中创建3个副本.由于它们位于同一个地方,我认为应该可以安全地假设除非整个群集关闭,否则将有一个负责此节点的节点,否则可以增加许多副本.

将它们整合在一起

假设用户正在从欧洲注册:服务请求的应用程序节点将获取区域代码(在这种情况下为4),获取自己的ID(比如00005),然后从Couchbase 获取增加的ID(1)(来自相同的)簇).

我们最终有3个组成部分:4, 00005,1.现在,要从中创建ID,我们可以将这些组件加入其中4.00005.1.为了使它更好(我对此不太确定),我们可以连接(而不是添加它们)组件以结束:4000051.

在代码中,这将看起来像这样:

$id = '4'.'00005'.'1'; …

php distributed couchbase

12
推荐指数
1
解决办法
2580
查看次数

无法安装节点couchbase

couchbase builderror.log文件完全为空.所有东西都安装好npm安装,屏幕上或日志中没有错误.

相关细节:

$ echo $PATH
/Users/david_fells/.nvm/v0.10.40/bin:/usr/bin:/Applications/MAMP/Library/bin:/Users/david_fells/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
$ node -v
v0.10.40
$ python -V
Python 2.7.6
Run Code Online (Sandbox Code Playgroud)

启动应用程序(节点index.js或npm start):

[2015-09-30T15:26:23] [ERROR] [Error: Module did not self-register.]
[2015-09-30T15:26:23] [ERROR] { [Error: Cannot find module './build/default/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
[2015-09-30T15:26:23] [ERROR] { [Error: Cannot find module './build/Debug/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
/Users/david_fells/projects/inmarCDM/node_modules/couchbase/lib/binding.js:152
  throw new Error('Failed to locate couchnode native binding' +
  ^

Error: Failed to locate couchnode native binding (maybe check builderror.log!)
    at Object.<anonymous> (/Users/david_fells/projects/inmarCDM/node_modules/couchbase/lib/binding.js:152:9)
    at Module._compile (module.js:434:26)
    at Object.Module._extensions..js (module.js:452:10)
    at Module.load (module.js:355:32) …
Run Code Online (Sandbox Code Playgroud)

node.js npm couchbase

12
推荐指数
1
解决办法
967
查看次数

使用Couchbase Mobile还为时尚早吗?

对于iPhone应用程序,我决定尝试使用NoSQL DB,因为我需要在本地存储数据的性质.我找到的最复杂的解决方案是Couchbase Mobile.但似乎该项目仅具有beta状态.使用它还为时尚早吗?

iphone couchdb nosql ios couchbase

11
推荐指数
1
解决办法
583
查看次数

如何在iOS Couchbase Mobile上使用HTTPS复制?

我正在使用iOS Couchbase Mobile在iPad上安装couchdb服务器,该服务器使用复制与https://cloudant.com上的服务器同步.cloudant使用HTTPS,当我尝试在iPad上复制时,我只是因为错误而被垃圾邮件发送.

这是一个已知问题,如本FAQ文章所示.它建议使用1.0.2来解决问题,但我怎么知道我是否在Erlang R14上运行它?

版本信息

  • 在myserver.cloudant.com上: {"couchdb":"Welcome","version":"1.0.2","cloudant_build":"1.3.49"}
  • 在iOS Couchbase Mobile上: {"couchdb":"Welcome","version":"2.0.0-beta"}

(出于某种原因,它说我在iOS上使用2.0.0-beta,即使我下载了这个版本(2.0.1).)

这是我得到的那种错误:

[info] [<0.327.0>] Retrying HEAD request to https://user:password@mycompany.cloudant.com/mydb/ in 16.0 seconds due to error {'EXIT',
{no_ssl_server,
    {gen_server,call,
        [<0.347.0>,
         {send_req,
             {{url,
                  "https://user:password@mycompany.cloudant.com/mydb/",
                  "mycompany.cloudant.com",443,"mycompany","password",
                  "/mydb/",https,hostname},
              [{"Accept","application/json"},
               {"User-Agent","CouchDB/2.0.0-beta"}],
              head,<<>>,
              [{response_format,binary},
               {inactivity_timeout,30000},
               {is_ssl,true},
               {socket_options,[{keepalive,true},{nodelay,false}]},
               {ssl_options,[{depth,3},{verify,verify_none}]}],
              infinity}},
         infinity]}}}
Run Code Online (Sandbox Code Playgroud)

erlang https couchdb ios couchbase

11
推荐指数
1
解决办法
748
查看次数

bedbase社区版超过2个节点

我目前正在围绕沙发基础数据库建立一个网站,如果它受欢迎,我很可能会在未来某个阶段在2台以上的机器上托管网站和数据库.它仍然是一个公平的方式,所以我想要一些信息来帮助我决定从这里走哪个方向.我的问题是:

  1. 有人知道我是否被允许在超过2个节点上部署couchbase的免费版(ce)?如果答案因版本而异,那么请告诉我哪个版本允许(如果有的话).

  2. 如果无法在超过2个节点上部署免费版本的couchbase,那么有人可以解释这是通过软件还是法律来阻止的?

在couchbase网站上发现了以下声明:

社区版(CE)最适合非商业开发人员,其中花一些时间来弄清楚或解决问题不会导致重大问题.在生产系统上使用这些二进制文件没有任何限制

这听起来好像软件可以安装在生产中所需数量的机器上,而无需付费,但是另一个沙发基页会显示:

寻找免费版本?我们的企业版免费版提供Couchbase Server的全部功能,可在开发中无限制地使用,在生产群集中最多可使用两个节点.

所以我很困惑.也许这最后一个只是指支持的成本,而不是与软件本身相关的任何成本?

couchbase

11
推荐指数
3
解决办法
9207
查看次数

这个Python请求错误意味着什么?

这个Python请求错误意味着什么?这是否意味着它尝试连接到服务器而不能?什么[Errno 8] nodename nor servname provided, or not known意思?

在get中输入文件"python2.7/site-packages/requests/api.py",第55行

在请求中提交"python2.7/site-packages/requests/api.py",第44行

在请求中文件"python2.7/site-packages/requests/sessions.py",第279行

发送文件"python2.7/site-packages/requests/sessions.py",第374行

在send中输入"python2.7/site-packages/requests/adapters.py",第209行

ConnectionError:HTTPConnectionPool(host ='localhost',port = 8091):使用url:/ pools/default超出了最大重试次数(由:[Errno 8]提供nodename或servname,或者未知)

代码生成了这个:http://github.com ...

class RestConnection(object):
    def __init__(self, serverInfo):
        #serverInfo can be a json object
        if isinstance(serverInfo, dict):
            self.ip = serverInfo["ip"]
            self.username = serverInfo["username"]
            self.password = serverInfo["password"]
            self.port = serverInfo["port"]
            self.couch_api_base = serverInfo.get("couchApiBase")
        else:
            self.ip = serverInfo.ip
            self.username = serverInfo.rest_username
            self.password = serverInfo.rest_password
            self.port = serverInfo.port
            self.couch_api_base = None

        self.base_url = "http://{0}:{1}".format(self.ip, self.port)
        server_config_uri = ''.join([self.base_url, '/pools/default'])
        self.config = …
Run Code Online (Sandbox Code Playgroud)

python couchbase

11
推荐指数
2
解决办法
1万
查看次数

如何在couchbase中增加集群的RAM内存?

例如,我创建了每个节点具有1GB RAM内存的集群.一段时间后,我想增加claster的RAM内存,例如每个节点2GB.我以为我可以通过Couchbase控制台做到这一点.但是每个节点都禁用"编辑"按钮.

那么有人可以告诉我解决方案吗?

谢谢.

couchbase

10
推荐指数
1
解决办法
4633
查看次数

如何在android中安装和使用沙发数据库

我应该如何在android中安装和使用沙发Db.
我的意思是当地沙发Db,我可以在平板电脑和模拟器中使用.我必须遵循的所有步骤.

android couchdb couchbase

10
推荐指数
2
解决办法
2万
查看次数

Couchbase中的Bucket密码

我正在使用springboot和Couchbase创建一个用于reative编程的演示项目.我在application.properties文件中设置了以下属性:

spring.couchbase.bootstrap-hosts=localhost
spring.couchbase.bucket.name=vanquish
spring.couchbase.bucket.password=
spring.data.couchbase.repositories.type=auto
Run Code Online (Sandbox Code Playgroud)

因为我在创建它时没有任何桶级密码.但是,由于以下异常,服务无法启动:

Caused by: com.couchbase.client.java.error.InvalidPasswordException: Passwords for bucket "vanquish" do not match.
    at com.couchbase.client.java.CouchbaseAsyncCluster$OpenBucketErrorHandler.call(CouchbaseAsyncCluster.java:651) ~[java-client-2.5.9.jar:na]
    at com.couchbase.client.java.CouchbaseAsyncCluster$OpenBucketErrorHandler.call(CouchbaseAsyncCluster.java:634) ~[java-client-2.5.9.jar:na]
    at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:140) ~[rxjava-1.3.8.jar:1.3.8]
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.onError(OnSubscribeMap.java:88) ~[rxjava-1.3.8.jar:1.3.8]
    at rx.observers.Subscribers$5.onError(Subscribers.java:230) ~[rxjava-1.3.8.jar:1.3.8]
    at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.checkTerminated(OperatorObserveOn.java:273) ~[rxjava-1.3.8.jar:1.3.8]
    at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:216) ~[rxjava-1.3.8.jar:1.3.8]
    at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55) ~[rxjava-1.3.8.jar:1.3.8]
Run Code Online (Sandbox Code Playgroud)

我尝试搜索所有属性但无法找到任何相关属性来设置用户名和密码,或者在couchbase中为存储桶设置密码.

couchbase spring-boot

10
推荐指数
1
解决办法
2490
查看次数