我有一个大约16GB RAM的Debian服务器,我正在使用nginx和几个重的mysql数据库,以及一些自定义的php应用程序.我想在Mysql和PHP之间实现内存缓存,但是数据库太大而无法将所有内容存储在RAM中.我认为,就研究而言,LRU缓存可能会更好.这会排除Redis吗?Couchbase也是一个考虑因素.
我一直在浏览网络,试图找到一个允许我们在区域分布式环境中生成唯一ID的解决方案.
我查看了以下选项(以及其他选项):
SNOWFLAKE(Twitter)
UUID
与MYSQL类似的关系数据库中的自动编码
像COUCHBASE一样的非关系数据库中的自动识别
假设我们在5个不同的地区(非洲,欧洲,亚洲,美洲和大洋洲)拥有由10个Couchbase节点和10个应用节点组成的集群.这是为了确保从最靠近用户的位置提供内容(以提高速度)并在发生灾难时确保冗余等.
现在,任务是生成在复制(和平衡)发生时不会发生碰撞的ID,我认为这可以通过3个步骤实现:
步骤1
将为所有区域分配整数ID(唯一标识符):
第2步
为添加到群集的每个应用程序节点分配一个ID,记住一个群集中最多可能有99 999个服务器(尽管我怀疑:这是一个安全的预防措施).这看起来像这样(假IP):
请注意,所有这些都在同一个集群中,这意味着您可以在每个区域拥有节点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'; …
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) 对于iPhone应用程序,我决定尝试使用NoSQL DB,因为我需要在本地存储数据的性质.我找到的最复杂的解决方案是Couchbase Mobile.但似乎该项目仅具有beta状态.使用它还为时尚早吗?
我正在使用iOS Couchbase Mobile在iPad上安装couchdb服务器,该服务器使用复制与https://cloudant.com上的服务器同步.cloudant使用HTTPS,当我尝试在iPad上复制时,我只是因为错误而被垃圾邮件发送.
这是一个已知问题,如本FAQ文章所示.它建议使用1.0.2来解决问题,但我怎么知道我是否在Erlang R14上运行它?
{"couchdb":"Welcome","version":"1.0.2","cloudant_build":"1.3.49"}
{"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) 我目前正在围绕沙发基础数据库建立一个网站,如果它受欢迎,我很可能会在未来某个阶段在2台以上的机器上托管网站和数据库.它仍然是一个公平的方式,所以我想要一些信息来帮助我决定从这里走哪个方向.我的问题是:
有人知道我是否被允许在超过2个节点上部署couchbase的免费版(ce)?如果答案因版本而异,那么请告诉我哪个版本允许(如果有的话).
如果无法在超过2个节点上部署免费版本的couchbase,那么有人可以解释这是通过软件还是法律来阻止的?
我在couchbase网站上发现了以下声明:
社区版(CE)最适合非商业开发人员,其中花一些时间来弄清楚或解决问题不会导致重大问题.在生产系统上使用这些二进制文件没有任何限制
这听起来好像软件可以安装在生产中所需数量的机器上,而无需付费,但是另一个沙发基页会显示:
寻找免费版本?我们的企业版免费版提供Couchbase Server的全部功能,可在开发中无限制地使用,在生产群集中最多可使用两个节点.
所以我很困惑.也许这最后一个只是指支持的成本,而不是与软件本身相关的任何成本?
这个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) 例如,我创建了每个节点具有1GB RAM内存的集群.一段时间后,我想增加claster的RAM内存,例如每个节点2GB.我以为我可以通过Couchbase控制台做到这一点.但是每个节点都禁用"编辑"按钮.
那么有人可以告诉我解决方案吗?
谢谢.
我应该如何在android中安装和使用沙发Db.
我的意思是当地沙发Db,我可以在平板电脑和模拟器中使用.我必须遵循的所有步骤.
我正在使用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中为存储桶设置密码.