摘要:1 需求背景 该应用场景为DMP缓存存储需求,DMP需要管理非常多的第三方id数据,其中包括各媒体cookie与自身cookie(以下统称supperid)的mapping关系,还包括了supperid的人口标签、移动端id(主要是idfa和imei)的人口标签,以及一些黑名单id、ip等数据。 在 阅读全文
posted @ 2016-08-18 13:03 花考拉 阅读 (40630) 评论 (27) 编辑
摘要:我们对于IO的理解必须是建立在对各种硬件资源调用延迟的认识基础上的,不同的延迟和使用场景造就了不同的架构。时间单位:1分(m)=60秒(s)1毫秒(ms)=10^(-3)秒(s)1微秒(μs)=10^(-6)秒(s)1纳秒(ns)=10^(-9)秒(s)1皮秒(ps)=10^(-12)秒(s)1个C... 阅读全文
posted @ 2015-12-08 15:08 花考拉 阅读 (460) 评论 (0) 编辑
摘要:1. 采集多样化的必要性,通俗的说就是把软硬件的指标放在一起去比较。 有时候我们关注应用的运行状态不仅仅要采集应用的各项指标,有时候还需要了解同一时间该应用运行环境(容器、虚拟机、硬件)的关键指标。然而应用层与其运行环境本身异构,所以采集工具并不相同。比如,我们用openTSDB去监控我的一个we... 阅读全文
posted @ 2015-12-04 20:09 花考拉 阅读 (993) 评论 (0) 编辑
摘要:问题描述: 通过WebServer将监控数据入库到Hbase,在入库之前需要将指标与ip的列表更新到缓存中,以便前台页面随时选择查看。前两天上了一些新用户导致负载增加,逐渐发现某些用户的监控场景出现丢数据的情况,估计Tps要在1w以上。丢数据会导致前段曲线毛刺增加,体验极差,所以优化WebServ... 阅读全文
posted @ 2015-03-26 19:57 花考拉 阅读 (225) 评论 (0) 编辑
摘要:上古十大神器之一天机镜:天机镜又名昆仑镜。昆仑山西王母所有,能洞察天机,知晓古今!1. 动机 在业务系统开发的前期,我们往往只专注到业务逻辑,而忽略了对系统本身的监控。 对硬件资源的监控运维同学提供的ganglia以及ZENOSS 能很好的满足我们的需求,监控机器的磁盘、cpu负载,内存,load... 阅读全文
posted @ 2015-03-12 21:21 花考拉 阅读 (1561) 评论 (4) 编辑
摘要:本文介绍了如何设计监控系统的客户端包、后端服务以及存储的解决方案。 传统IT公司可能最核心的应用就是Web服务器和各种Web应用。得益于开源系统以及大数据理念的盛行,大大小小的公司逐渐形成了数据采集、存储、计算一体化的相似而又不同的架构。而在这些架构之上,我们可以丰富自己主营业务或者产品线的各... 阅读全文
posted @ 2015-01-29 20:05 花考拉 阅读 (2468) 评论 (0) 编辑
摘要:集群中的主机经过选举过程由Looking状态变为了Leadering或Following状态。而这些状态之间转移的条件是什么呢?先来个直观的,上状态图。图4.1Cocklebur选举过程中的状态图 接下来我们对上面的状态图进行逐个分析,并且做出简要的解释说明。如果你对一些概念有所遗忘,请查阅“... 阅读全文
posted @ 2014-01-07 17:45 花考拉 阅读 (876) 评论 (0) 编辑
摘要:其实整个项目中一个最主要的看点就是选举算法,而这部分也是逻辑最复杂最难理解的部分。不同的实现在不同的场景下的策略也不尽相同,而且场景非常之多。接下来我们一起来看一下Cocklebur的实现思路。 一个问题摆在我们面前:集群启动后,如何选举出一个主节点,其余都是从节点?实际上用状态描述去理解这个... 阅读全文
posted @ 2014-01-06 17:46 花考拉 阅读 (892) 评论 (6) 编辑
摘要:Cocklebur集群的工作原理 在集群正常工作时,整个集群只会有一个Leader,其他都是Follower。Client可以注册到某个Follower,当然也可以注册到Leader,为了减轻Leader压力,一般要选择注册到Follower。读操作直接向Follower请求数据,而写数据则直接向... 阅读全文
posted @ 2014-01-02 17:09 花考拉 阅读 (680) 评论 (0) 编辑
摘要:初识分布式协调器 分布式协调器的“协调”二字让人摸不到头脑,怎么就协调了,用的着协调吗?实际上这个东西在之前就是为了提供分布式锁服务而设计的,伟大的google公司发明了chubby,雅虎随后也推出了chubby的开源实现zookeeper。由于其高可用高容错的特性逐渐的衍生出了非常丰富的功能。目... 阅读全文
posted @ 2013-12-31 19:48 花考拉 阅读 (852) 评论 (3) 编辑
摘要:有时候我们需要将基本数据类型转化为字节,以便写入文件,然后必要时还需要将这些字节读出来。有人说,为啥不把数字直接存进文件呢?比如:100,000,000,我们直接存数字明文到文件那就是9个字符(char,9*8bit=9Byte),如果存int就是4Byte,差了一倍多,所以这样存不划算。有三种方法... 阅读全文
posted @ 2013-12-23 19:31 花考拉 阅读 (3992) 评论 (0) 编辑
摘要:假设读者对thrift有一定了解。 客户端有时需要非阻塞的去发送请求,给定服务端一个请求,要求其返回一个计算结果。但是客户端不想等待服务端处理完,而是想发送完这个指令后自己去做其他事情,当结果返回时自动的去处理。 比如举个形象点的例子:饭店的Boss让小弟A把本周店里的欠条收集起来放到自己桌子上... 阅读全文
posted @ 2013-12-23 18:54 花考拉 阅读 (4163) 评论 (0) 编辑
摘要:感叹一下 不得不说近几年国内软件行业发生了巨大的变化,之前几乎所有应用都围绕桌面展开,而近几年很多让人神魂颠倒的关键词一个接一个的映入眼帘:web2.0、移动应用、云计算、大数据。互联网的浪潮一波接着一波,我们这代人也鉴证了在一次次的革命中科技企业的兴衰成败。貌似说的有些远了,其实我只是想说,互联... 阅读全文
posted @ 2013-12-21 22:49 花考拉 阅读 (928) 评论 (0) 编辑
摘要:void function1(){ ThreadArg pArg;//他是个结构体指针 pArg->s_1 = 1; pArg->s_2 = this;//关键就是这个,我是想把当前实例的指针让线程去做一些操作。 int ret =pthread_create( &m_id, NULL, f... 阅读全文
posted @ 2013-11-29 12:54 花考拉 阅读 (120) 评论 (0) 编辑
摘要:1.C++整数类型范围可以参照头文件limits.h定义的宏#defineINT_MAX2147483647(32bit,最大10位十进制)#defineUINT_MAX4294967295U(32bit,最大10位十进制)#defineLLONG_MAX9223372036854775807LL(... 阅读全文
posted @ 2013-10-15 23:25 花考拉 阅读 (181) 评论 (0) 编辑