如何监控couchbase api

什么是系统监控对于功能简单,用户量较少的软件系统,大部分公司不需要额外的监控系统来保证公司业务的正常运行。而当公司发展到一定程度,系统越来越多元化,单一系统也越来越复杂,面对的用户数量越来越多。为了能实时保证系统的正常与稳定和对外业务的实时监控,大部分互联网公司都会根据自己的系统架构和业务级别来设计并开发一套监控系统,例如阿里巴巴的"鹰眼"系统。
个巡 - 个推系统监控随着个推业务的不断扩展,用户量不断的增加,个推急需一套完整的监控系统来实时保证系统和业务的正常运转。系统层面上,个推必须保证上亿用户在同时接入时的系统稳定和正常,业务层面上,个推需要通过实时数据来反应每天的业务增长和下降,个巡就是在这时孕育而生了。
系统难点与设计
多元化的数据基于推送业务,个推扩展出许多独立运行的系统,而且每个系统的监控数据也不一样。为了保证系统的稳定和可扩展性,我们将所有数据来源分成了两类:一类为基于JMX的可配置型数据,另一类为独立封装的接入型数据,基于两种数据的特性,JMX数据设计为去主动收集,独立封装数据设计为被动接收。
庞大的节点分布面对大量的用户,个推需要布置许多节点在不同的地域以保证业务的实时性。面对大量的节点,并发型的数据收集和接收设计是唯一方案,并且基于不同的数据来源我们也需要封装不同类型的线程和线程池,但大量多线程并发的带来的另一难点就是,共享资源的设计与分配,原子操作的保证与回滚,以及数据收集的准确性。基于此难点,代码结构上采用Producer-Consumer模式,以及进程与线程的设计思路。
复杂的业务逻辑监控系统的另一功能就是能实时反应出公司业务的发展趋势并及时报警,为了保证个推的每一项决策都能反应在用户量与业务量上,我们的监控系统收集了大量的系统接入以及不同种类请求的数据。基于这些数据,许多分析策略和报警策略需要写入程序,因此使得业务逻辑异常复杂,动态的加载不同策越,Strategy 设计模式成为不二选择.
实时性的需求监控系统的一大特性就是能够及时对异常数据进行报警,以及对大量数据的秒级收集,分类,分析和展示。因此,内存数据库(couchbase)和数据搜索引擎(elasticsearch)成为保证系统实时性的关键性中间键。
系统层面上,集成了包括Database, couchbase, elasticsearch, flume, kafka等一系列外部工具。
代码层面上通过试用不同的设计模式来帮助整套系统能够更好的兼容不同的数据,保证系统的稳定运行和数据的准确抓取和展示。
个巡的特点
异常日志报警当系统有异常日志时, 会实时同步到个巡的ES。个巡一旦监控到有异常日志时,就会马上发告警信息给相应人员。这样我们会实时收到系统异常的问题,为及时处理线上的问题提供了必要条件。
周期性的比较对于某些监控点,每天都应该有一个固定的趋势,如下图所示。我们通过前7天的数据更新这个趋势,当线上数据不符合这个趋势的时候,就发告警信息。
自监控个巡是用来监控线上系统的,而个巡也是线上系统的一部分,那么个巡怎么做到自己监控自己呢?我们使用自动修改阀值的方式做到自监控。当修改阀值后,个巡会发送告警邮件,然后10分钟后再把阀值改成原来的样子,然后我们会收到恢复正常的邮件,并且整个过程是自动。所以当我们收不到自告警的邮件时,个巡本身就有问题了。
开发总结相信很多项目都会遇到以上所提到的四种问题。实时上很多系统在开发的紧张过程中也难以从全局去审视和总结一些问题或经验,在这里我们仅提供其中一个视角去分析一个庞大的系统:当数据来源多元化的时候,开发人员务必保证在所有数据进入系统业务逻辑前的统一性,也就是常见的数据封装,这样才能保证在多变的需求环境下系统核心模块的稳定性;庞大的数据节点所带来的主要问题则为数据流的稳定性,因此在数据流传入和接受之间加入一层(也就是此系统的Producer-Consumer)来保证数据流的稳定性和可控性变得异常重要。复杂的业务逻辑是软件开发中最常见的问题,很多经典书籍都专门讨论过。但实际开发中,也别是开发周期较紧迫的时候,很难有一套具体且通行的解决方案,在个巡的开发中,我们也只能根据需求和业务逻辑来制订Strategy代码框架,实时性常常会因为数据量的增大而受到印象,在个巡的开发中我们采用的原则是数据分开存储,然后在根据不同的数据应用采用不同的数据库。
阅读(...) 评论()966,690 四月 独立访问用户
语言 & 开发
架构 & 设计
文化 & 方法
您目前处于:
CouchDB与Couchbase:区别何在,Membase又将如何?
CouchDB与Couchbase:区别何在,Membase又将如何?
日. 估计阅读时间:
不到一分钟
Author Contacted
相关厂商内容
相关赞助商
ArchSummit深圳-8日,深圳&华侨城洲际酒店,
告诉我们您的想法
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
赞助商链接
架构 & 设计
文化 & 方法
<及所有内容,版权所有 &#169;
C4Media Inc.
服务器由 提供, 我们最信赖的ISP伙伴。
北京创新网媒广告有限公司
京ICP备号-7
注意:如果要修改您的邮箱,我们将会发送确认邮件到您原来的邮箱。
使用现有的公司名称
修改公司名称为:
公司性质:
使用现有的公司性质
修改公司性质为:
使用现有的公司规模
修改公司规模为:
使用现在的国家
使用现在的省份
Subscribe to our newsletter?
Subscribe to our industry email notices?
我们发现您在使用ad blocker。
我们理解您使用ad blocker的初衷,但为了保证InfoQ能够继续以免费方式为您服务,我们需要您的支持。InfoQ绝不会在未经您许可的情况下将您的数据提供给第三方。我们仅将其用于向读者发送相关广告内容。请您将InfoQ添加至白名单,感谢您的理解与支持。使用 Couchbase 存储 Non-JSON 数据 - 技术翻译 - 开源中国社区
使用 Couchbase 存储 Non-JSON 数据
【已翻译100%】
英文原文:
推荐于 7个月前 (共 4 段, 翻译完成于 10-11)
参与翻译&(1人)&:
如果你使用作为存储JSON文档的文档数据库的话,我相信 它的大部分功能都能得以发挥。比如,你可以使用!然而,有些时候你需要使用Couchbase存储其它的数据。在这篇博客中,我将向你展示如何将XML和二进制数据存储到Couchbase中。我会使用.NET的SDK,但我相信其他的SDK也支持这些操作。
&翻译得不错哦!
存储JSON文档回顾
快速地回顾一下在Couchbase中存储JSON文档的知识。一旦你有了一个bucket,你就可以使用Insert/Upsert来创建/更新一个文档,然后使用Get将文档读取出来。使用.NET SDK,你可以按照所定义的类型自动处理序列化。
//创建文档
bucket.Insert&MyType&("JSON_"&+&guid,&new&MyType&{&Foo&=&"BarJSON"});
//读取文档并显示出来
var&jsonBackOut&=&bucket.Get&MyType&("JSON_"&+&guid).V
Console.WriteLine($"JSON&document:&{jsonBackOut.Foo}");
&翻译得不错哦!
存储XML需要多做一点工作。首先,我使用XmlSerializer将对象序列化为XML字符串。然后,我将该值Insert成为一个字符串。为了将其读取出来,我再次使用xmlseralizer将其从字符串转换成为一个类型。
var&xmlo&=&new&MyType&{Foo&=&"BarXML"};
var&xml&=&new&XmlSerializer(xmlo.GetType());
using&(var&textWriter&=&new&StringWriter())
&&&&xml.Serialize(textWriter,&xmlo);
&&&&bucket.Insert&string&("XML_"&+&guid,&textWriter.ToString());
//读取,&反序列化,
var&xmlBackOut&=&bucket.Get&string&("XML_"&+&guid).V
using&(var&reader&=&new&StringReader(xmlBackOut))
&&&&var&xmlObject&=&(MyType)xml.Deserialize(reader);
&&&&Console.WriteLine($"XML:&{xmlObject.Foo}");
存储一个字节数组序列化
接下来,我要将对象序列化为一个byte数组。不像JSON和XML,存储成一个字节数组意味着只能将该对象再次序列化成为.NET对象。
该过程类似于XML,除了Insert和Get定义的byte[]而不是string,并且我使用BinaryFormatter代替XmlSerializer。
var&formatter&=&new&BinaryFormatter();
using&(var&ms&=&new&MemoryStream())
&&&&formatter.Serialize(ms,&new&MyType&{&Foo&=&"BarDotNET"});
&&&&bucket.Insert&byte[]&("byte_"&+&guid,&ms.ToArray());
//将字节读取出来,反序列化,并显示对象
var&bytesBackOut&=&bucket.Get&byte[]&("byte_"&+&guid).V
using&(var&stream&=&new&MemoryStream(bytesBackOut))
&&&&var&bytesObject&=&(MyType)formatter.Deserialize(stream);
&&&&Console.WriteLine($".NET:&{bytesObject.Foo}");
&翻译得不错哦!
运行终端示例程序 () produces:
& & & & & & & & & & & & & & & & & & & & & & & &&
当你运行上面的示例代码后,你会看到Couchbase控制台的显示如下:
non-JSON文档会和JSON文档存在同一个bucket中。但正如你所看到的,Couchbase服务器并不知道如何解释它们。所以,你不能对这些文件执行大多数的N1QL操作。你不能像JSON文档那样索引它们的值。并且,在使用.NET字节数组的情况下,一个非.NET程序将根本无法解释他们。如果你能将数值存储到JSON文档中,我推荐你这样做。但是,Couchbase服务器为你提供了存储其它类型数值的灵活性。
&翻译得不错哦!
我们的翻译工作遵照 ,如果我们的工作有侵犯到您的权益,请及时联系我们
暂无网友评论Couchbase(1)
Couchbase学习笔记(2)——安装配置
下载地址:
对于64位的win7,应下载对应的64位windows版本的服务器端缓存,点击下载按钮,填入相关信息后下载~
安装步骤:
1. 进入欢迎安装的界面
2. 选择安装位置
3. 确认安装参数,最小需要内存为 4G,处理器最小为 4 核处理器
4. 安装进程
&5. 完成安装
1. 完成安装之后,直接就会进入 Web 管理界面进行配置。另外,在桌面上,安装程序默认就会生成一个快捷方式。也可以手动进行访问,因为是在本机安装的可以用localhost,也可以用IP或者hostname
2. 设置磁盘存储,服务器主机,集群配置
3. 示例数据
4. 默认的 bucket 配置类型,每个节点使用的内存,注意最下面的 Flush ,选中后,可以支持 Flush, 否则不支持
如果没有选中的话,在 .NET 客户端进行 Flush,会得到一个异常,远程服务器返回错误 400。
如果忘了怎么办呢?继续往后看......&
5. 是否希望收到升级的提示
&6. 配置管理员的口令
四. 监控页面
配置完成之后,进入监控页面,以后,在监控页面就可以看到缓存的使用情况了。
当然安装完之后也可以在服务中查看了。
五. 使用命令行
使用命令行允许 Flush&
安装程序比较方便,但是,你会发现,一旦安装完成,在管理界面上,没有重新配置 Flush 的选项,如果在安装的时候没有启用 Flush ,但是,在安装结束之后希望启用,怎么办呢?
Couchbase 提供了强大的命令行界面支持 couchbae-cli 来支持命令行的管理工作。这个命令位于&Couchbase 安装目录中的 \Couchbase\Server\bin 文件夹中。
对于我们启用 Flush 来说,是修改 bucket 的配置参数,需要使用 bucket-edit 命令,使用 --bucket 指定修改配置的 bucket,--enable-flush=1 表示启用,=0 显示就是禁用了。剩下的参数就是管理员的帐号和口令了。
&couchbase-cli&bucket-edit&--bucket=default&--enable-flush=&-c&.&&-u&Administrator&-p
如果成功的话,服务器会返回一个说明
SUCCESS:&bucket-edit
如果配置成功了,就可以在客户端调用 Flush 了,但是,如果服务器很忙,很长时间来不及响应话,也会抛出一个异常,但是不是没有启用 Flush 的 400 ,而是 503 了。
另外,生成的配置文件位于&C:\Couchbase\Server\var\lib\couchbase\config 文件夹中,文件名为 config.dat。这是一个二进制的文件,不能直接编辑,必须使用工具生成。
如果使用命令行 Flush 的话,可以使用 bucket-flush 命令。使用 --bucket 指定目标。
C:\Couchbase\Server\bin&couchbase-cli&bucket-flush&--bucket=default&-c&.:&--force&-u&Administrator&-p
返回的结果如下。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:154068次
积分:2602
积分:2602
排名:第12456名
原创:60篇
转载:314篇
(6)(9)(22)(14)(24)(18)(7)(8)(5)(18)(7)(15)(31)(9)(16)(14)(6)(37)(22)(40)(12)(2)(1)(3)(1)(1)(3)(2)(1)(3)(1)(1)(1)(3)(5)(2)(1)(1)(1)(3)(1)(1)(1)

我要回帖

更多关于 couchbase redis 的文章

 

随机推荐