- 博客(17)
- 收藏
- 关注
原创 Jersey的绑定机制
一:简介 因为项目需要,最近研究了下restful风格的编程方式,这里也Jersey为例。Jersey是一个restful框架,其提供了面向切面的Providers功能,一般情况下我们可以手动注册到Application中,但是它支持更加灵活的方式,这就是jersey提供的绑定机制。二:客户端封装 Jersey Client的每次创建连接都必须耗资源,我们可以用连接池模式...
2017-01-09 18:03:54
555
原创 kafka的文件格式和副本的Leader选举
一、kafka的文件存储 在kafka中,一个topic可以有多个分区,分区在物理上是单独存放的,为了数据安全,一个分区可以有多个副本,而每个分区都有单独的leader来负责读写请求。我们可以通过命令 bin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 2 --partitions 3 ...
2017-01-09 16:39:01
695
2
使用storm trident消费kafka消息
一、前言 storm通过保证数据至少被处理一次来保证数据的完整性,由于元祖可以重发,对于一些需要数据精确的场景,可以考虑用storm trident实现。 传统的事物型拓扑中存在几种bolt: 1.1 BasicBolt 这是最基本的Bolt,BasicBolt每次只能处理一个tuple,而且必须等前一个tuple成功处理后下一个tuple才能继续处理,显然效率不高。 1.2 ...
2017-01-05 08:10:20
315
了解kafka
一:kafka简介 Kafka 是一个分布式的,可划分的,多订阅者,冗余备份的持久性的日志服务,可以简单理解为一个消息中间件。二:kafka的特点 1:分布式 kafka的producer,consumer,broker都是分布式的,可水平扩展,无需停机。 2:持久化 kafka将日志持久化到磁盘,通过将消息持久化到磁盘(磁盘线性读写)以及它的replication机制,保...
2017-01-04 13:00:27
197
原创 kafka的高可用和一致性探究
一、kafka基础 本篇文章讨论的kafka版本是目前最新版 0.10.1.0。1.1 kafka种的KafkaController 所有broker会通过ZooKeeper选举出一个作为KafkaController,来负责:监控所有broker的存活,以及向他们发送相关的执行命令。分区的状态维护:负责分区的新增、下线等,分区副本的leader选举...
2016-12-29 16:45:48
275
storm trident实战 filter,function的使用
一、Storm trident filter filter通过返回true和false。来判断是否对信息过滤。 1.1 代码 public static void main(String[] args) throws InterruptedException, AlreadyAliveException, InvalidTopologyException,...
2016-12-26 10:17:05
200
原创 storm trident实战 trident state
一、认识storm trident trident可以理解为storm批处理的高级抽象,提供了分组、分区、聚合、函数等操作,提供一致性和恰好一次处理的语义。 1)元祖被作为batch处理 2)每个batch的元祖都被指定唯一的一个事物id,如果因为处理失败导致batch重发,也和保证和重发前一样的事物id 3)数据更新操作严格有序,比如batch1必须在batch2之前...
2016-12-25 10:56:49
247
zookeeper事件监听实战
一:事件监听 原生zookeeper的事件监听采用Watcher实现,不过Watcher监听是一次性的,如果需要继续监听该事件,必须重新注册。Curator中采用cache来封装了对事件的监听,包括监听节点,监听子节点等,下面分别做介绍1.1 NodeCache NodeCache主要用来监听节点本身的变化,当节点的状态发生变更后,回调NodeCachaListener p...
2016-12-23 08:36:05
838
zookeeper权限控制实战
一:Zookeeper权限控制 在zk集群中,不同的应用之间一般不会存在共享数据,为了避免某一个数据被不同的进程修改,这就需要进行相应的权限控制。二:ACL介绍 Zookeeper使用ACL机制来实现权限的控制,ACL机制主要分为3个方面,权限模式,权限ID和权限 2.1 权限模式 1)IP ip模式是指权限针对这个ip而设置的,比如"ip:1...
2016-12-23 08:28:12
610
原创 redis学习总结
一:redis过期键删除策越 1:惰性删除:每次get的时候才判断key是否过期,如果过期才会执行删除,这样会导致大量的过期key占用内存。 2:定期删除:通过设置删除频率和时长(需要根据实际情况,可以压数据,看某个时间范围内过期的key有多少,占用多少内存,大概需要多久才能删除完),在某个时候执行删除操作,并只执行设置的时长时间,这样既降低了CPU消耗时间(不会长时间占用cpu去执行...
2016-12-23 08:12:03
85
原创 storm trident实战 分组聚合
一、前言 groupBy分组操作,根据指定属性进行分组,如果后面是aggregate()的话,先根据partitionBy分区,在每个partition上分组,分完组后,在每个分组上进行聚合。二、实战 main:public static void main(String[] args) throws Exception { /** * 多设置几...
2016-12-23 08:04:46
421
原创 storm 如何编写可靠的spout和bolt
一、前言 对于不使用trident的人来说,使用基本的storm spout,bolt操作,需要理解storm的ack机制,保证消息的完整性,Storm 提供了三种不同层次的消息保证机制,分别是 At Most Once、At Least Once 以及 Exactly Once。消息保证机制依赖于消息是否被完全处理。 怎样才认为消息被完全处理?每个从 Spout发出的 Tup...
2016-12-23 08:02:22
566
storm trident实战 分区聚合
一、前言 先有batch,因为trident内部是基于batch来实现的,然后有partition,分区后再分配并发度,然后才能进行并发处理。并发度的分配是利用parallelismHint来实现。二、实战 main方法public static void main(String[] args) throws AlreadyAliveException, ...
2016-12-22 18:43:31
308
storm重定向实战
一、 重定向 重定向定义了我们的tuple如何被route到下一个处理层,当然不同的层之间可能会有不同的并行度。storm提供了如下的重定向操作: shuffle:通过随机分配算法来均衡tuple到各个分区 broadcast:每个tuple都被广播到所有的分区,这种方式在drcp时非常有用,比如在每个分区上做stateQuery partitionBy:根据...
2016-12-22 18:12:29
120
原创 基于数组的有界阻塞队列ArrayBlockingQueue源码分析
一:功能介绍 基于数组的有界阻塞队列,基于FIFO的存储模式,支持公平非公平锁。二:源码分析 //数组 final Object[] items; //出队索引 int takeIndex; //入队索引 int putIndex; //队列大小 int count; //可重入锁 ...
2016-12-22 17:46:51
183
原创 基于单向链表有界阻塞队列LinkedBlockingQueue源码分析
一:功能介绍 基于单项链表,FIFO的有界阻塞队列,内部采用可重入锁ReentrantLock实现,一个take锁,一个put锁,相应的等待条件也为二个。二:源码分析package java.util.concurrent;import java.util.concurrent.atomic.AtomicInteger;import java.util.concur...
2016-12-22 17:42:22
142
原创 zookeeper事件监控源码解析
一:zk的客户端注册Watcher源码剖析 zookeeper有很多中方式都可以传入一个watcher对象,比如exist,getData等,下面我们以getData的源码来剖析zk的client和server端是如何处理实现整个watcher机制的。 原生的zookeeper API在获得节点数据的时候,可以通过getData方法获取,并且可以传入一个watcher对象,表示对当...
2016-12-21 16:50:33
218
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人