博客园 - 花考拉uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=1204962016-08-22T13:44:25Z花考拉https://www.cnblogs.com/colorfulkoala/feed.cnblogs.comhttps://www.cnblogs.com/colorfulkoala/p/5783556.htmlRedis百亿级Key存储方案 - 花考拉1 需求背景 该应用场景为DMP缓存存储需求,DMP需要管理非常多的第三方id数据,其中包括各媒体cookie与自身cookie(以下统称supperid)的mapping关系,还包括了supperid的人口标签、移动端id(主要是idfa和imei)的人口标签,以及一些黑名单id、ip等数据。 在2016-08-18T05:03:00Z2016-08-18T05:03:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】1 需求背景 该应用场景为DMP缓存存储需求,DMP需要管理非常多的第三方id数据,其中包括各媒体cookie与自身cookie(以下统称supperid)的mapping关系,还包括了supperid的人口标签、移动端id(主要是idfa和imei)的人口标签,以及一些黑名单id、ip等数据。 在 <a href="https://www.cnblogs.com/colorfulkoala/p/5783556.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/5029189.html【基础】系统各种资源调用延迟一览 - 花考拉我们对于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...2015-12-08T07:08:00Z2015-12-08T07:08:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】我们对于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... <a href="https://www.cnblogs.com/colorfulkoala/p/5029189.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/5020323.html【监控】一些关于应用级别监控的总结 - 花考拉1. 采集多样化的必要性,通俗的说就是把软硬件的指标放在一起去比较。 有时候我们关注应用的运行状态不仅仅要采集应用的各项指标,有时候还需要了解同一时间该应用运行环境(容器、虚拟机、硬件)的关键指标。然而应用层与其运行环境本身异构,所以采集工具并不相同。比如,我们用openTSDB去监控我的一个we...2015-12-04T12:09:00Z2015-12-04T12:09:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】1. 采集多样化的必要性,通俗的说就是把软硬件的指标放在一起去比较。 有时候我们关注应用的运行状态不仅仅要采集应用的各项指标,有时候还需要了解同一时间该应用运行环境(容器、虚拟机、硬件)的关键指标。然而应用层与其运行环境本身异构,所以采集工具并不相同。比如,我们用openTSDB去监控我的一个we... <a href="https://www.cnblogs.com/colorfulkoala/p/5020323.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/4369878.html【监控】WebServer入库与缓存更新代码优化小计 - 花考拉问题描述: 通过WebServer将监控数据入库到Hbase,在入库之前需要将指标与ip的列表更新到缓存中,以便前台页面随时选择查看。前两天上了一些新用户导致负载增加,逐渐发现某些用户的监控场景出现丢数据的情况,估计Tps要在1w以上。丢数据会导致前段曲线毛刺增加,体验极差,所以优化WebServ...2015-03-26T11:57:00Z2015-03-26T11:57:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】问题描述: 通过WebServer将监控数据入库到Hbase,在入库之前需要将指标与ip的列表更新到缓存中,以便前台页面随时选择查看。前两天上了一些新用户导致负载增加,逐渐发现某些用户的监控场景出现丢数据的情况,估计Tps要在1w以上。丢数据会导致前段曲线毛刺增加,体验极差,所以优化WebServ... <a href="https://www.cnblogs.com/colorfulkoala/p/4369878.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/4333103.html【监控】天机镜——优土大数据平台应用级别监控利器 - 花考拉上古十大神器之一天机镜:天机镜又名昆仑镜。昆仑山西王母所有,能洞察天机,知晓古今!1. 动机 在业务系统开发的前期,我们往往只专注到业务逻辑,而忽略了对系统本身的监控。 对硬件资源的监控运维同学提供的ganglia以及ZENOSS 能很好的满足我们的需求,监控机器的磁盘、cpu负载,内存,load...2015-03-12T13:21:00Z2015-03-12T13:21:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】上古十大神器之一天机镜:天机镜又名昆仑镜。昆仑山西王母所有,能洞察天机,知晓古今!1. 动机 在业务系统开发的前期,我们往往只专注到业务逻辑,而忽略了对系统本身的监控。 对硬件资源的监控运维同学提供的ganglia以及ZENOSS 能很好的满足我们的需求,监控机器的磁盘、cpu负载,内存,load... <a href="https://www.cnblogs.com/colorfulkoala/p/4333103.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/4260568.html【监控】数据平台运营实战之如何打造应用级别的监控系统 - 花考拉本文介绍了如何设计监控系统的客户端包、后端服务以及存储的解决方案。 传统IT公司可能最核心的应用就是Web服务器和各种Web应用。得益于开源系统以及大数据理念的盛行,大大小小的公司逐渐形成了数据采集、存储、计算一体化的相似而又不同的架构。而在这些架构之上,我们可以丰富自己主营业务或者产品线的各...2015-01-29T12:05:00Z2015-01-29T12:05:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】本文介绍了如何设计监控系统的客户端包、后端服务以及存储的解决方案。 传统IT公司可能最核心的应用就是Web服务器和各种Web应用。得益于开源系统以及大数据理念的盛行,大大小小的公司逐渐形成了数据采集、存储、计算一体化的相似而又不同的架构。而在这些架构之上,我们可以丰富自己主营业务或者产品线的各... <a href="https://www.cnblogs.com/colorfulkoala/p/4260568.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/3509323.html【分布式协调器】Paxos的工程实现-Cocklebur状态转移 - 花考拉集群中的主机经过选举过程由Looking状态变为了Leadering或Following状态。而这些状态之间转移的条件是什么呢?先来个直观的,上状态图。图4.1Cocklebur选举过程中的状态图 接下来我们对上面的状态图进行逐个分析,并且做出简要的解释说明。如果你对一些概念有所遗忘,请查阅“...2014-01-07T09:45:00Z2014-01-07T09:45:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】集群中的主机经过选举过程由Looking状态变为了Leadering或Following状态。而这些状态之间转移的条件是什么呢?先来个直观的,上状态图。图4.1Cocklebur选举过程中的状态图 接下来我们对上面的状态图进行逐个分析,并且做出简要的解释说明。如果你对一些概念有所遗忘,请查阅“... <a href="https://www.cnblogs.com/colorfulkoala/p/3509323.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/3507670.html【分布式协调器】Paxos的工程实现-cocklebur选举 - 花考拉其实整个项目中一个最主要的看点就是选举算法,而这部分也是逻辑最复杂最难理解的部分。不同的实现在不同的场景下的策略也不尽相同,而且场景非常之多。接下来我们一起来看一下Cocklebur的实现思路。 一个问题摆在我们面前:集群启动后,如何选举出一个主节点,其余都是从节点?实际上用状态描述去理解这个...2014-01-06T09:46:00Z2014-01-06T09:46:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】其实整个项目中一个最主要的看点就是选举算法,而这部分也是逻辑最复杂最难理解的部分。不同的实现在不同的场景下的策略也不尽相同,而且场景非常之多。接下来我们一起来看一下Cocklebur的实现思路。 一个问题摆在我们面前:集群启动后,如何选举出一个主节点,其余都是从节点?实际上用状态描述去理解这个... <a href="https://www.cnblogs.com/colorfulkoala/p/3507670.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/3502199.html【分布式协调器】Paxos的工程实现-cocklebur简介(二) - 花考拉Cocklebur集群的工作原理 在集群正常工作时,整个集群只会有一个Leader,其他都是Follower。Client可以注册到某个Follower,当然也可以注册到Leader,为了减轻Leader压力,一般要选择注册到Follower。读操作直接向Follower请求数据,而写数据则直接向...2014-01-02T09:09:00Z2014-01-02T09:09:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】Cocklebur集群的工作原理 在集群正常工作时,整个集群只会有一个Leader,其他都是Follower。Client可以注册到某个Follower,当然也可以注册到Leader,为了减轻Leader压力,一般要选择注册到Follower。读操作直接向Follower请求数据,而写数据则直接向... <a href="https://www.cnblogs.com/colorfulkoala/p/3502199.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/3500016.html【分布式协调器】Paxos的工程实现-cocklebur简介(一) - 花考拉初识分布式协调器 分布式协调器的“协调”二字让人摸不到头脑,怎么就协调了,用的着协调吗?实际上这个东西在之前就是为了提供分布式锁服务而设计的,伟大的google公司发明了chubby,雅虎随后也推出了chubby的开源实现zookeeper。由于其高可用高容错的特性逐渐的衍生出了非常丰富的功能。目...2013-12-31T11:48:00Z2013-12-31T11:48:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】初识分布式协调器 分布式协调器的“协调”二字让人摸不到头脑,怎么就协调了,用的着协调吗?实际上这个东西在之前就是为了提供分布式锁服务而设计的,伟大的google公司发明了chubby,雅虎随后也推出了chubby的开源实现zookeeper。由于其高可用高容错的特性逐渐的衍生出了非常丰富的功能。目... <a href="https://www.cnblogs.com/colorfulkoala/p/3500016.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/3487988.html【语言基础】c++ 基本数据类型与字节数组(string,char [] )之间的转化方法 - 花考拉有时候我们需要将基本数据类型转化为字节,以便写入文件,然后必要时还需要将这些字节读出来。有人说,为啥不把数字直接存进文件呢?比如:100,000,000,我们直接存数字明文到文件那就是9个字符(char,9*8bit=9Byte),如果存int就是4Byte,差了一倍多,所以这样存不划算。有三种方法...2013-12-23T11:31:00Z2013-12-23T11:31:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】有时候我们需要将基本数据类型转化为字节,以便写入文件,然后必要时还需要将这些字节读出来。有人说,为啥不把数字直接存进文件呢?比如:100,000,000,我们直接存数字明文到文件那就是9个字符(char,9*8bit=9Byte),如果存int就是4Byte,差了一倍多,所以这样存不划算。有三种方法... <a href="https://www.cnblogs.com/colorfulkoala/p/3487988.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/3487948.html【基础】利用thrift实现一个非阻塞带有回调机制的客户端 - 花考拉假设读者对thrift有一定了解。 客户端有时需要非阻塞的去发送请求,给定服务端一个请求,要求其返回一个计算结果。但是客户端不想等待服务端处理完,而是想发送完这个指令后自己去做其他事情,当结果返回时自动的去处理。 比如举个形象点的例子:饭店的Boss让小弟A把本周店里的欠条收集起来放到自己桌子上...2013-12-23T10:54:00Z2013-12-23T10:54:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】假设读者对thrift有一定了解。 客户端有时需要非阻塞的去发送请求,给定服务端一个请求,要求其返回一个计算结果。但是客户端不想等待服务端处理完,而是想发送完这个指令后自己去做其他事情,当结果返回时自动的去处理。 比如举个形象点的例子:饭店的Boss让小弟A把本周店里的欠条收集起来放到自己桌子上... <a href="https://www.cnblogs.com/colorfulkoala/p/3487948.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/3485582.html【分布式协调】之理解paxos - 花考拉感叹一下 不得不说近几年国内软件行业发生了巨大的变化,之前几乎所有应用都围绕桌面展开,而近几年很多让人神魂颠倒的关键词一个接一个的映入眼帘:web2.0、移动应用、云计算、大数据。互联网的浪潮一波接着一波,我们这代人也鉴证了在一次次的革命中科技企业的兴衰成败。貌似说的有些远了,其实我只是想说,互联...2013-12-21T14:49:00Z2013-12-21T14:49:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】感叹一下 不得不说近几年国内软件行业发生了巨大的变化,之前几乎所有应用都围绕桌面展开,而近几年很多让人神魂颠倒的关键词一个接一个的映入眼帘:web2.0、移动应用、云计算、大数据。互联网的浪潮一波接着一波,我们这代人也鉴证了在一次次的革命中科技企业的兴衰成败。貌似说的有些远了,其实我只是想说,互联... <a href="https://www.cnblogs.com/colorfulkoala/p/3485582.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/3449351.html【坑】一个线程参数引发的血案 - 花考拉void function1(){ ThreadArg pArg;//他是个结构体指针 pArg->s_1 = 1; pArg->s_2 = this;//关键就是这个,我是想把当前实例的指针让线程去做一些操作。 int ret =pthread_create( &m_id, NULL, f...2013-11-29T04:54:00Z2013-11-29T04:54:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】void function1(){ ThreadArg pArg;//他是个结构体指针 pArg->s_1 = 1; pArg->s_2 = this;//关键就是这个,我是想把当前实例的指针让线程去做一些操作。 int ret =pthread_create( &m_id, NULL, f... <a href="https://www.cnblogs.com/colorfulkoala/p/3449351.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/3371280.html【语言基础】c++ 备忘录 - 花考拉1.C++整数类型范围可以参照头文件limits.h定义的宏#defineINT_MAX2147483647(32bit,最大10位十进制)#defineUINT_MAX4294967295U(32bit,最大10位十进制)#defineLLONG_MAX9223372036854775807LL(...2013-10-15T15:25:00Z2013-10-15T15:25:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】1.C++整数类型范围可以参照头文件limits.h定义的宏#defineINT_MAX2147483647(32bit,最大10位十进制)#defineUINT_MAX4294967295U(32bit,最大10位十进制)#defineLLONG_MAX9223372036854775807LL(... <a href="https://www.cnblogs.com/colorfulkoala/p/3371280.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/3145804.htmlHBase入库调优 - 花考拉本文章只针对“微型集群处理大数据”的场景。场景描述:硬件:5个节点,每个节点可用硬盘1块(700G、500G等)、8核cpu,实验室环境(有时候还要跑其他程序跟你抢占资源),16G内存。软件:hadoop-0.20.2-cdh3u2,hbase-0.90.4-cdh3u2。业务:sina微博12亿转发微博,700w用户信息。bzip压缩后共150G。要求就是将这些数据入库并且恢复关注和粉丝列表,建立userId与昵称映射,找出Message的转发关系等等。上述业务实际上比描述的复杂,后续需要做各种分析,再次略去,只说明一下跟入库效率相关的影响因素:1.批量导入数据,需要入库一定要均衡2.恢复关2013-06-20T05:13:00Z2013-06-20T05:13:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】本文章只针对“微型集群处理大数据”的场景。场景描述:硬件:5个节点,每个节点可用硬盘1块(700G、500G等)、8核cpu,实验室环境(有时候还要跑其他程序跟你抢占资源),16G内存。软件:hadoop-0.20.2-cdh3u2,hbase-0.90.4-cdh3u2。业务:sina微博12亿转发微博,700w用户信息。bzip压缩后共150G。要求就是将这些数据入库并且恢复关注和粉丝列表,建立userId与昵称映射,找出Message的转发关系等等。上述业务实际上比描述的复杂,后续需要做各种分析,再次略去,只说明一下跟入库效率相关的影响因素:1.批量导入数据,需要入库一定要均衡2.恢复关 <a href="https://www.cnblogs.com/colorfulkoala/p/3145804.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/p/3145686.html三个已经排好序的数组,找到他们之间的共同元素 - 花考拉已经排好序了,所以我们可以借此同时对三个数组进行搜索来找到共同元素下面是java实现代码:import java.util.HashSet;import java.util.Set;public class threeListComm { /** * 3 soted array, find common elements */ static int [] a = {1,3,4,5,6,7,9}; static int [] b = {1,5,8,9,11}; static int [] c = {2,3,5,6}; static Set<Integer> s = new HashS2013-06-20T03:36:00Z2013-06-20T03:36:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】已经排好序了,所以我们可以借此同时对三个数组进行搜索来找到共同元素下面是java实现代码:import java.util.HashSet;import java.util.Set;public class threeListComm { /** * 3 soted array, find common elements */ static int [] a = {1,3,4,5,6,7,9}; static int [] b = {1,5,8,9,11}; static int [] c = {2,3,5,6}; static Set<Integer> s = new HashS <a href="https://www.cnblogs.com/colorfulkoala/p/3145686.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/archive/2013/05/23/3095302.html【玩具】ANU Matlab Game Simulation - 花考拉这段代码模拟了警察抓小偷,密室之中,小偷想偷到珠宝,自己有个探测器,警察也有探测器,不过是探测小偷用的,警察之间可以相互传递消息。下面是程序的输入文件parameter.txt# Size of side of square room (even integer), in m2# Radius of entry circle, in m 0.6# Position of treasure (x and y coords), in m 0.5 0.5# Range of anti-cloaking device, in cm 150# Position of the escape route (2013-05-23T09:56:00Z2013-05-23T09:56:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】这段代码模拟了警察抓小偷,密室之中,小偷想偷到珠宝,自己有个探测器,警察也有探测器,不过是探测小偷用的,警察之间可以相互传递消息。下面是程序的输入文件parameter.txt# Size of side of square room (even integer), in m2# Radius of entry circle, in m 0.6# Position of treasure (x and y coords), in m 0.5 0.5# Range of anti-cloaking device, in cm 150# Position of the escape route ( <a href="https://www.cnblogs.com/colorfulkoala/archive/2013/05/23/3095302.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/archive/2013/05/23/3095281.html【玩具】ANU Matlab Toy-Robot Movement Simulation - 花考拉给朋友做的,当是放松了。。。本人真心不会matlab,下面的代码不代表个人水平,纯属堆砌。这个程序模拟了一些机器人在一个方形空间中的移动轨迹。clc;clear all;close all;%--------------------Input parameters------------------%R=input('Number of Robots: ');%L=input('Length of the Room (m): ');%N=input('Number of Steps: ');%S=input('Maximum Size o2013-05-23T09:48:00Z2013-05-23T09:48:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】给朋友做的,当是放松了。。。本人真心不会matlab,下面的代码不代表个人水平,纯属堆砌。这个程序模拟了一些机器人在一个方形空间中的移动轨迹。clc;clear all;close all;%--------------------Input parameters------------------%R=input('Number of Robots: ');%L=input('Length of the Room (m): ');%N=input('Number of Steps: ');%S=input('Maximum Size o <a href="https://www.cnblogs.com/colorfulkoala/archive/2013/05/23/3095281.html" target="_blank">阅读全文</a>https://www.cnblogs.com/colorfulkoala/archive/2013/05/14/3077390.html一种HBase的表region切分和rowkey设计方案 - 花考拉场景HBase的region随着大小的不断变大会触发一个阈值,默认为256M,一旦触发那么他就会自动的分裂开来,随着region变多hbase管理起来也越发困难,性能也会明显下降。当然更多的region使得高并发成为可能。一种较好的实践方案就是一方面预切分HBase的region,确定region的个数,保证并发性能,另一方面设置较高的region size分裂阈值,保证region数量不变。方案预切分方法:./bin/hbase org.apache.hadoop.hbase.util.RegionSplitter -c 500 test -f t1:t2:t3上面的命令行工具给以为你切分一2013-05-14T02:53:00Z2013-05-14T02:53:00Z花考拉https://www.cnblogs.com/colorfulkoala/【摘要】场景HBase的region随着大小的不断变大会触发一个阈值,默认为256M,一旦触发那么他就会自动的分裂开来,随着region变多hbase管理起来也越发困难,性能也会明显下降。当然更多的region使得高并发成为可能。一种较好的实践方案就是一方面预切分HBase的region,确定region的个数,保证并发性能,另一方面设置较高的region size分裂阈值,保证region数量不变。方案预切分方法:./bin/hbase org.apache.hadoop.hbase.util.RegionSplitter -c 500 test -f t1:t2:t3上面的命令行工具给以为你切分一 <a href="https://www.cnblogs.com/colorfulkoala/archive/2013/05/14/3077390.html" target="_blank">阅读全文</a>