- 博客(20)
- 资源 (11)
- 收藏
- 关注
原创 文章标题
kafka 缺点partition内部有序,不保证全局有序消息可能重复处理监控太弱不支持高级的消息队列特性:消息发送失败时重发,消息定时发送
2016-03-10 00:01:50 878
原创 关于kafka的疑惑
Kafka Confusion1.kafka(1) consumer与partition是一对多的关系consumer group里的一个consumer可以消费多个partition,但是一个partition只能被一个consumer消费,因为kafka的设计是不允许在一个partition上并发的。为了提高消费的并发,必须增加partition的数量。如果consumer比partition多
2015-12-25 19:42:05 8243 1
原创 sarama架构
1.client创建producer或consumer时,都会创建一个client与之关联,client负责获取metadata信息,并且client会启动一个backgroundMetadataUpdater,定期获取metadata。client维护一个broker表,client在创建时,就连接到kafka broker,并启动broker的responseReceiver,用于接收kafka
2015-12-25 19:39:51 5938 1
原创 Kafka设计要点
Kafka设计要点1.持久化(1) 利用OS的pagecache 不在进程中维护cache,而是直接写入磁盘,并定期刷新到磁盘。 使用进程cache的缺点:增加内存占用量;进程重启时要么重建cache(很耗时),要么以空cache运行(初始性能很差);加重编码负担,需要维护cache和磁盘上数据的一致性。(2) 顺序写磁盘 没有使用B-Tree,因为B-Tree的复杂度是O(logn),而在磁
2015-12-06 19:30:36 687
原创 memcached LRU队列状态转换
我们假设memcached开启了 lru_maintainer_thread线程,这时将使用HOT_LRU, WARM_LRU, COLD_LRU, NOEXP_LRU四种队列。1. 从内存池中新分配的item,将其放入HOT_LRU队列。2. HOT_LRU队列中数据量超过阀值,则转移到COLD_LRU队列。3. WARM_LRU队列中数据量超过阀值,则转移到COLD_LRU
2015-07-28 21:20:20 1455
原创 memcached 线程总结
1. hash表扩容线程 [ assoc_maintenance_thread ](1) 创建新的hash表(2) 将旧hash表数据迁移到新hash中2. automove线程 [ slab_maintenance_thread ](1) 检测是否需要进行rebalance(2) 通知rebalance线程执行3. rebalance线程 [ slab_rebalanc
2015-07-28 11:36:18 756
原创 现有的CEP产品介绍
CEP(Complex Event Processing,复杂事件处理)是近年来在互联网中不断升温一个词汇。在CEP的领域,国外已经有了很多研究成果和相当成熟的产品,而中国的这个市场才刚刚打开。流式数据处理是CEP的一个核心技术,流计算来自于一个信念:数据的价值随着时间的流逝而降低,所以事件出现后必须尽快地对它们进行处理,最好数据出现时便立刻对其进行处理,发生一个事件进行一次处理,而不是缓存成一批
2011-12-10 16:14:10 20066 3
原创 查找出现次数大于n/k的重复元素 --- 多重集算法
继续前一篇文章...相对于前一篇文章讲的算法来说,“多重集算法”比较容易理解。我们把原始数组看成一个多重集,每次从数组中删除k个不同的元素,直到不能再删了为止。那么最后数组中剩余的元素就是候选元素。例如 {1,2,3,3,4,4,3,5,3} ,这里n=9,k=3。我们要查找出现次数大于n/k=3的元素。下划线表示被删除的元素:{1,2,3,3,4,4,3,5,3} =>
2011-12-04 18:05:56 2073
原创 查找出现次数大于n/k的重复元素 ---非多重集算法
本文是对一篇英文论文的总结:Finding Repeated Elements。想看原文,请Google之。这个问题的简单形式是“查找出现次数大于n/2的重复元素”。我们先从简单问题开始,然后再做扩展。1.查找出现次数大于n/2的重复元素 《编程之美》中有同样的一道题《寻找发帖水王》,具体思路是每次删除两个不同的元素,最后剩下的就是要求的元素。这个结论的证明如下: 已知:n,m
2011-12-04 10:07:44 3620 1
原创 高性能复杂事件处理---模式匹配
原论文:High-PerformanceComplex Event Processing over Streams本篇论文的算法是基于SASE语言。对该语言不作详细介绍,这里只描述模式匹配的算法。1. 基于查询计划的方法1.1 基本查询计划SASE中的查询计划由6个操作符的某个子集组成:Ø 序列扫描(sequencescan)Ø 序列构造(sequenc
2011-11-23 23:01:59 4319
翻译 SASE+:一种使用克林闭包应用于事件流的敏捷语言
翻译自论文: 《SASE+: An Agile Language for Kleene Closure over Event Streams》 本文并不是原文的逐句翻译,而是提取了原文中的精华,并加入了本人的理解。【】里的内容是我作的注释。不当之处,欢迎指正。 SASE+是一种复杂事件处理语言,它支持克林闭包来处理事件流。克林闭包已经被很好地研究正则表达式匹配,应用于流处理的克林闭包
2011-10-28 17:08:16 5203 3
转载 MapReduce Hold不住?——浅谈流式计算系统
原文:http://www.programmer.com.cn/8606/本文系统地介绍和分析比较了业界主流的Yahoo! S4、StreamBase和Borealis三种流式计算系统,希望读者能从这些系统的设计中领悟到不同场景下流式计算所要解决的关键问题。背景非实时计算几乎都基于MapReduce计算框架,但MapReduce并不是万能的。对于搜索应用环境中的某些现实问题
2011-10-27 21:18:29 3495
原创 C++ hash_map 与 Java HashMap 的区别
与Java中的HashMap比起来, C++ STL 中hash_map的实现并不是很完美。原因在于一些小的细节:1. Hash表的增长方式: hash_map: 当元素数量element_NUM超过桶的数量bucket_NUM 时,确定一个新的桶数量N。N是质数,它是从一个质数表中选择出来的,它必须大于等于元素数量element_NUM。质数表中的质数是从小到大排列的,基本上后一
2011-10-26 17:27:37 7854
原创 Esper 中的模式匹配 (Pattern Match) ----事件模式概述
事件模式概述对于一个模式,当一个或多个事件满足了该模式的定义时,就会触发模式匹配。模式表达式由“模式原子”和"模式算子"组成。1.模式原子是构建模式的基本单元。2.模式算子控制表达式的生命周期,将模式原子组合到一起。模式原子包括三种:1) 过滤表达式:指定要查找的事件。2)基于时间的事件观察者:指定时间间隔或者时刻。3)自定义的插件观察者:用来观察应用中指定的事
2011-10-25 19:52:40 3095
转载 Esper-技术简介
1.1介绍CEP和事件流分析Esper引擎是为了满足对事件进行分析并做出反应等这些应用需求而产生的。这些应用要求事实或接近事实处理 事件(或消息)。有时候是为了应对复杂事件处理(CEP)和事件流分析的。关键要考虑这些类型应用的(高)吞吐量、(低)响应时间和需求逻辑的复杂程度 (复杂计算)。esper可以用在股票系统、风险监控系统等等要求实时性比较高的系统中。1.2 CEP和关系数据库关
2011-10-20 22:48:41 3227
转载 输入输出文件的缓冲区
#include #include int main(void){ int i = 0; while(1) { printf("sleeping %d", i++); //(1) fflush(stdout); sl
2008-10-22 23:43:00 1190
转载 取石子游戏
“抢30”是我国民间的一个两人游戏,具有很强的对抗性和娱乐性。抢30游戏通常有两种玩法。(1)两人从1开始轮流报数,每人每次可报一个数或两个连续的数,谁先报到30,谁就为胜方。(2)两人从1开始轮流报数,每人每次可报一个数或两个连续的数,同时把两个人报出的所有数累加,谁先使这个累加数最先达到30,谁就为胜方。解决最个问题的一般策略是用倒推法。以(1)为例,要抢到30,必须抢到27;
2008-08-25 22:41:00 3044
原创 约瑟夫问题
假设当前剩下i个人(i0 , 1 , 2 , 3 ... m , m + 1 ... i-1, i-m , i-m+1 , i-m+2 , i-m+3 ... 0 , 1 .... i-1-m (转换之后)如果第二行中剩下的人是s
2008-08-24 23:42:00 1025
转载 Floyd算法
(参考NKOJ1039 Arbitrage)定义Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法。核心思路通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。从图的带权邻接矩阵A=[a(i,j)]n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1);又用同样地公式由D(
2008-08-21 19:22:00 876
原创 NKOJ 1236 a^b
1.求n个数相乘的结果模上9的结果. (k1*k2*...*kn)%9=(k1%9)*(k2%9)*...*(kn%9)2.一个数的各位数字分别是a1,a2...an ,则 (a1a2...an)%9=(a1+a2+...+an)%9 证明: 令s=a1a2...an=a1*10^(n-1)+a2*10^(n-1)+...+an =a1*(999..
2008-08-21 18:41:00 782
利用Java的HashMap 改造C++ 的hash_map
2011-10-26
Linux Kernel核心中文手册
2010-03-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人