- 博客(202)
- 收藏
- 关注
转载 kafka监控工具
在之前的博客中,介绍了Kafka Web Console这 个监控工具,在生产环境中使用,运行一段时间后,发现该工具会和Kafka生产者、消费者、ZooKeeper建立大量连接,从而导致网络阻塞。并且这个 Bug也在其他使用者中出现过,看来使用开源工具要慎重!该Bug暂未得到修复,不得已,只能研究下其他同类的Kafka监控软件。通过研究,发现主流的三种kafka监控程序分别为:Ka
2017-03-10 11:18:53
919
转载 kafka 版本迭代递进
3.新的ConsumerKafka 0.8.2, Producer被重新设计, Kafka 0.9则重新设计了Consumer接口。它不再区分high-level consumer API和low-level consumer API,而是提供了一个统一的consumer API。1).Kafka可以自行维护Offset、消费者的Position。也可以开发者自己来维护Offset
2017-03-10 10:50:52
1179
转载 常用MessageQueue及特点
常用Message Queue及特点对比RabbitMQRabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正因如此,它非常重量级,更适合于企业级的开发。同时实现了Broker构架,这意味着消息在发送给客户端时先在中心队列排队。对路由,负载均衡或者数据持久化都有很好的支持。RedisRedis是一个
2017-03-10 10:50:08
966
原创 Kafka的一些流程
topic创建1. controller 在 ZooKeeper 的 /brokers/topics 节点上注册 watcher,当 topic 被创建,则 controller 会通过 watch 得到该 topic 的 partition/replica 分配。2. controller从 /brokers/ids 读取当前所有可用的 broker 列表,对
2017-03-10 10:40:31
842
转载 Kafka内部网络框架
Broker的内部处理流水线化,分为多个阶段来进行(SEDA),以提高吞吐量和性能,尽量避免Thead盲等待,以下为过程说明。Accept Thread负责与客户端建立连接链路,然后把Socket轮转交给Process ThreadProcess Thread负责接收请求和响应数据,Process Thread每次基于Selector事件循环,首先从Response Queue读取
2017-03-10 10:38:22
496
原创 Kafka工具的使用
获取某个topic中的某个group的消费情况可以通过以下方式获得/bin/bash kafka-consumer-offset-checker.sh --zookeeper 10.189.122.207:2181,10.189.122.208:2181,10.189.122.213:2181 --topic test_8 --group aGroup Top
2017-03-10 10:35:37
1034
原创 Kafka API8 producer
import java.util.Properties;import org.apache.log4j.Logger;import com.jd.Seckill.UdpRecv.Utils.Config;import kafka.javaapi.producer.Producer;import kafka.producer.KeyedMessage;import kafka.producer.Pr
2017-03-10 10:27:04
367
原创 Kafka high level API8 Consumer
import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Properties;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concu
2017-03-10 10:24:16
600
原创 Kafka low level API8 Consumer
import java.nio.ByteBuffer;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map; import org.apache.log4j.Logger; import com.jd.S
2017-03-10 10:23:14
719
原创 zookeeper集群安装与配置
# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request
2017-03-09 19:49:59
301
原创 kafka集群配置与安装
# Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreements. See the NOTICE file distributed with# this work for additional information regarding copyright ow
2017-03-09 19:48:36
604
原创 kakfa在zookeeper中的节点结构
topic注册信息 /brokers/topics/[topic] : 存储某个topic的partitions所有分配信息Schema:{ "version": "版本编号目前固定为数字1", "partitions": { "partitionId编号": [ 同步副本组brokerId列表
2017-03-09 19:46:48
994
原创 kafka rebalance机制
Kafka保证同一consumer group中只有一个consumer会消费某条消息,实际上,Kafka保证的是稳定状态下每一个consumer实例只会消费某一个或多个特定的数据,而某个partition的数据只会被某一个特定的consumer实例所消费。这样设计的劣势是无法让同一个consumer group里的consumer均匀消费数据,优势是每个consumer不用都跟大量的broker
2017-03-09 19:42:14
17572
原创 kafka容灾机制
Kafka的消息安全性与容灾机制主要是通过副本replication的设置和leader/follower的的机制实现的。Replication机制broker 容灾机制Leader Election机制controller failoverReplication机制Kafka从0.8开始提供partition级别的r
2017-03-09 19:40:06
11539
原创 kafka持久化原理
Topic在逻辑上可以被认为是一个queue。每条消费都必须指定它的topic,可以简单理解为必须指明把这条消息放进哪个queue里。为了使得Kafka的吞吐率可以水平扩展,物理上把topic分成一个或多个partition,每个partition在物理上对应一个文件夹,该文件夹下存储这个partition的所有消息和索引文件。 每个日志文件都是“log entries”序列,
2017-03-09 19:34:58
18204
原创 kafka消息与同步机制
如上图所示:Producer根据指定的partition方法(默认round-robin、hash等),将消息发布到指定topic的partition里面;kafka集群接收到Producer发过来的消息后,将其持久化到硬盘,并保留消息指定时长(可配置),而不关注消息是否被消费;Consumer从kafka集群pull数据,并控制获取消息的offset。下面讨论以下Kafka如何确保消息在pr
2017-03-09 19:31:53
14542
原创 kafka拓扑结构
如上图所示,一个典型的Kafka集群中包含若干Producer(可以是web前端产生的Page View,或者是服务器日志,系统CPU、Memory等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干Consumer Group,以及一个Zookeeper集群。Kafka通过Zookeeper管理集群配置,选举leader,以及在Consumer G
2017-03-09 19:28:32
1707
原创 kafka 名词概念
ProducerConsumerBrokerTopicPartitionConsumer Group分布式Broker Kafka集群包含一个或多个服务器,这种服务器被称为brokerTopic 每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic(物理上不同Topic的消息分开存储[表现于日志落地],逻辑上一
2017-03-09 19:24:31
1827
1
原创 kafka简介
Kafka是由LinkedIn开发的一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序
2017-03-09 19:20:47
392
原创 kafka设计背景与初衷
Kafka是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。现在它已被多家公司作为多种类型的数据管道和消息系统使用。活动流数据是几乎所有站点在对其网站使用情况做报表时都要用到的数据中最常规的部分。活动数据包括页面访问量(Page View)、被查看内容方面的信息以及搜索情况等内容。
2017-03-09 19:20:00
1990
原创 kafka之学习框架
结合官方文档,网上资料,并结合自己的实践, kafka的学习从以下方面进行总结kafka设计背景与初衷kafka简介kafka架构Terminology概念Kafka拓扑结构kafka消息机制与同步kafka持久化原理kafka容灾机制kafka rebalance机制kafka中zookeeper的作用及节点结构kafka的应用kafka安装zoo
2017-03-09 19:18:45
984
转载 蓄水池抽样——《编程珠玑》读书笔记
问题:如何随机从n个对象中选择一个对象,这n个对象是按序排列的,但是在此之前你是不知道n的值的。 思路:如果我们知道n的值,那么问题就可以简单的用一个大随机数rand()%n得到一个确切的随机位置,那么该位置的对象就是所求的对象,选中的概率是1/n。 但现在我们并不知道n的值,这个问题便抽象为蓄水池抽样问题,即从一个包含n个对象的列表S中随机选取k个对象
2014-10-31 14:21:16
658
转载 c++虚函数深度解析
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在这
2014-10-21 14:29:00
733
转载 Manacher算法--O(n)回文子串算法
这里,我介绍一下O(n)回文串处理的一种方法。Manacher算法. 首先:大家都知道什么叫回文串吧,这个算法要解决的就是一个字符串中最长的回文子串有多长。这个算法可以在O(n)的时间复杂度内既线性时间复杂度的情况下,求出以每个字符为中心的最长回文有多长, 这个算法有一个很巧妙的地方,它把奇数的回文串和偶数的回文串统一起来考虑了。这一点一直是在做回文串问题中时比较烦的地方。这个
2014-10-15 15:06:58
641
转载 深入理解read(byte[] b)与readFully(byte[] b)
要搞清楚read(byte[] b)和readFully(byte[] b)的区别,可以从以下方面着手分析:1.代码的具体实现2.方法何时返回3.字节是以什么方式在网络上传输的1.read(byte[] b)调用read(byte[] b,0,b.length),其中的部分关键代码如下 Java代码 int c =
2014-10-13 22:21:32
992
转载 Java Socket编程
对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket。服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信。这样就有两个Socket了,客户端和服务端
2014-10-13 13:01:06
563
转载 常见模式识别算法
机器学习10大经典算法1、C4.5C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法. C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进: 1)用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足; 2)在树构造过程中进行剪枝; 3)能够完成对连续属性的离散化处理;
2014-09-26 18:51:21
8284
1
转载 2014年计算机求职准备
转自:http://blog.csdn.net/walkinginthewind/article/details/13000431找工作是一个长期准备的过程,突击是没什么效果的。准备时间越长,准备就越充分,就越容易拿到好的offer。我基本上从研究生一入学就一直在准备找工作的东西,看书、研究研究笔试面试题、在线编程训练、参加实习招聘等等。当然,其实主要还是研二开始准备的,也算不上多认真
2014-09-25 17:07:54
539
原创 KMP算法
// 0919.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include using namespace std;void getnext(char* dnt,int* next,int num)//dnt对应的next向右移一位{ if ((dnt==NULL)||(next==NULL)||(num<1)) return; int i=0
2014-09-25 16:42:56
589
原创 快速寻找满足条件的两个数
快速寻找满足条件的两个数扩展问题:1. 输入两个整数 n和 m,从数列1,2,3.......n中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来。2. 从一列数中筛除尽可能少的数使得从左往右看,这些数是从小到大再从大到小的(网易)。3. 以上可参见http://blog.csdn.net/wxl3105/article/de
2014-09-21 22:33:07
624
转载 内存池技术介绍
看到一篇关于内存池技术的介绍文章,受益匪浅,转贴至此。 原贴地址:http://www.ibm.com/developerworks/cn/linux/l-cn-ppp/index6.html 6.1 自定义内存池性能优化的原理 如前所述,读者已经了解到"堆"和"栈"的区别。而在编程实践中,不可避免地要大量用到堆上的内存。例如在程序中维护一个链表的数据结构时,每次新增或
2014-09-20 18:14:18
664
转载 操作系统、计算机网络、设计模式
基础篇:操作系统、计算机网络、设计模式一:操作系统1. 进程的有哪几种状态,状态转换图,及导致转换的事件。2. 进程与线程的区别。3. 进程通信的几种方式。4. 线程同步几种方式。(一定要会写生产者、消费者问题,完全消化理解)5. 线程的实现方式. (也就是用户线程与内核线程的区别)6. 用户态和核心态的区别。7. 用户栈和内核栈的区
2014-09-17 15:53:40
1096
转载 第二章 啊哈!算法(变位词)
给定一个英语字典,找出其中的所有变位词集合。例如,“pots”、“stop”和“tops”互为变位词,因为每一个单词都可以通过改变其他单词中字母的顺序来得到。“解决这个问题的许多方法都出奇地低效和复杂。任何一种考虑单词中所有字母的排列的方法都注定了要失败。而比较所有单词对的任何方法在我的机器上运行至少要花费一整夜的时间。”我们获得的”啊哈!灵机一动“就是标识字典中的每一个词,使得在
2014-09-09 21:58:54
1413
转载 《编程珠玑》第二章 “杂技算法” 和 “翻转算法” C语言实现
题目:将一个n元一维数组a[n]左移i个位置。例如,当n=8,i=3时,数组abcdefgh旋转为defghabc。请设计一个算法完成这个任务。杂技算法分析:将a[0]存储在一个临时变量中,然后将a[i]替换a[0],a[2i]替换a[i]….当一个循环结束的时候,若替换次数小于n,则从a[1]开始替换…,需要经过gcd(n,i)(n和i的最大公约数)次循环后,才能把每
2014-09-09 21:57:55
817
原创 try,catch,throw异常捕捉
try,catch,throw: try包含你要防护的代码,称为防护块. 防护块如果出现异常,会自动生成异常对象并抛出. catch捕捉特定的异常,并在其中进行适当处理. throw可以直接抛出/产生异常,导致控制流程转到catch块. 重要观点: C
2014-09-05 22:56:51
2839
转载 C++中的单例模式
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做
2014-09-05 22:55:16
488
转载 探索hash_set
本文将着重探索hash_set比set快速高效的原因,阅读本文前,推荐先阅读本文的姊妹篇《STL系列之六 set与hash_set》一.hash_set之基石——哈希表 hash_set的底层数据结构是哈希表,因此要深入了解hash_set,必须先分析哈希表。哈希表是根据关键码值(Key-Value)而直接进行访问的数据结构,它用哈希函数处理数据得到关键码值,关键码值对应表中
2014-07-22 10:26:34
658
转载 Python 常用数据结构
1 List1.1 List 的使用List 相关函数:append,extend,insert,remove,pop,index,count,sort,reverse>>> a[3, 1, 2]>>> b[4, 7, 6, 10]>>> a.append(5)>>> a[3, 1, 2, 5]>>> a.extend(b)>>> a[3, 1, 2
2014-07-21 18:52:34
643
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人