- 浏览: 455090 次
- 性别:
- 来自: 杭州
最新评论
-
goody9807:
goody9807 写道server.1和server.2启动 ...
深入浅出Zookeeper之五 Leader选举 -
goody9807:
server.1和server.2启动后,无法选出Leader ...
深入浅出Zookeeper之五 Leader选举 -
小黄牛:
分布式事务解决方案演示效果:http://www.iqiyi. ...
深入浅出Zookeeper之七分布式CREATE事务处理 -
chenghaitao111111:
兄弟syncedUpdateBrokersInfo这个代码和g ...
[metaq]Producer -
victory_gwb:
我看的3.4.6版本中takeSnapshot(); 这个方 ...
深入浅出Zookeeper之一Server启动
文章列表
之前一直对jdbc的query timeout有疑惑,看了下mysql的实现,大概了解了。
关于jdbc的各种超时时间关系见这个文章http://www.importnew.com/2466.html,这里简单来看一下mysql的query timeout实现,也是比较简单。query timeout就是在发起请求前,启 ...
从连接的视角来看类图
1.WrappedConnection直接实现了Connection接口,对外的包装类
2.BaseWrapperManagedConnection,包装了底层的物理连接,实现了连接获取,销毁等方法,psCache也是这里实现
3.BaseConnectionEventListener,和BaseWrapperManagedConnection互相引用,数据源内部实现并发控制的实体单元
4.InternalManagedConnectionPool,获取连接的并发控制地方,维护着connectionListener的列表和一个Semaphore信号量以实现最 ...
先来看看jboss数据源的整体类图。
1.入口类LocalTxDataSource,负责对外参数设置和初始化框架
2.获取数据库连接的入口类WrapperDataSource,其实现了DataSource接口
3.ManagedConnectionFactory接口用来获取真实连接和创建WrapperDataSource
4.LocalManagedConnectionFactory负责从driver获取连接,driver层面的参数都在这里维护
5.JBossManagedConnectionPool维护着连接池必须的参数,管理着连接池的状态
6.ManagedConnec ...
之前在做一个天气数据相关的东东,统计了一些天气的数据源
一.中央气象局
api http://m.weather.com.cn/data/101010100.html
城市code http://gxz1989611.iteye.com/blog/1622625 2586个
二.yahoo
api http://developer.yahoo.com/weather/
翻译的数据
风速和等级转换 http://baike.baidu.com/view/465076.htm
天气翻译 http://geovindu.blog.163.com/blo ...
前一篇文章分析了server端主动超时session的情况,接下来看一下client和server网络暂时中断的情况。
1.和server主动关闭连接一样,client抛出EndOfStreamException异常,此时客户端状态还是CONNECTED
2.SendThread处理异常,清理连接,将当前所有请求置为失败,错误码是CONNECTIONLOSS
3.发送Disconnected状态通知
4.选下一个server重连
5.连上之后发送ConnectRequest,sessionid和password是当前session的数据
6.server端处理,分leader和fo ...
前面一篇文章提到zookeeper server端主动发现session超时并清理session信息,关闭连接,接下来看看client端如何试图恢复session的。关于client端代码分析见前文http://iwinit.iteye.com/blog/1754611 。由于session被清理,此时server端已经没有session信息了。而由于连接被关闭,client会抛出异常
if (sockKey.isReadable()) {
//返回-1
int rc = sock.read(incomingBuffer);
if ( ...
前面分析知道session超时由leader负责,假设某个session长时间没心跳超时,SessionTrackImpl入口
if (set != null) {
for (SessionImpl s : set.sessions) {
setSessionClosing(s.sessionId);
expirer.expire(s);
}
}
session失效是一个 ...
前面几篇zookeeper的文章简单分析了执行流程,接下来打算从横向来分析一下zk的一些特性,先从session开始。这一篇http://iwinit.iteye.com/blog/1754611分析了单机情况下session建立,在集群环境下建立session不太一样,是一个proposal的过程,先假设集群由leader,followerA,followerB组成,我们的client去连followerA。follower和leader初始化之后,初始化的sessionTracker不一样,leader中是SessionTrackerImpl,follower中是LearnerSessi ...
Broker是metaq的核心组件,负责消息的物理存储,分区指定等。例子配置文件
[system]
#broker编号,集群唯一
brokerId=0
#这个broker指定的分区数
numPartitions=2
#nio port
serverPort=8123
#异步刷盘策略,为0表示同步刷盘
unflushThreshold=0
#同上,刷盘间隔
unflushInterval=10000
#单个消息文件的最大size
maxSegmentSize=1073741824
#单个请求最大传输size
maxTransferSize=1048576
#数据清 ...
今天在HBase群里碰到一个客户端死锁问题,堆栈如下
Java stack information for the threads listed above:
===================================================
"KVQueueService-Handler-2-EventThread":
at org.apache.hadoop.hbase.zookeeper.ZooKeeperNodeTracker.stop(ZooKeeperNodeTracker.java:98)
- wa ...
https://github.com/nathanmarz/storm/wiki/Guaranteeing-message-processing这篇文章介绍了storm如何处理消息事务,提到了用一个ack value代表一个tuple的生命周期。
其算法是“It is simply the xor of all tuple ids that have been created and/or acked in the tree.”
如果topology是
Spout->A->B
,那么计算过程应该是
(0^U(s))^(U(s)^U(A))^(U(A)^0)=0
U ...
Procuder相对consumer来说比较简单,根据topic从zk拿broker列表,注意这里只拿master类型的broker,slave型的broker和master拥有同样的broker id,主要为了HA用。roubd-robin取一个partition,发送消息。
1.MetaMessageSessionFactory初始化zookeeper连接,创建MessageProducer,默认SimpleMessageProducer
2.订阅topic,是一个异步操作
public void publishTopic(final String topic, fina ...
集群安装参考 https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster
example工程 https://github.com/nathanmarz/storm-starter
问题:
1.python2.5找不到,默认安装了2.7,源代码安装2.5解决
2.storm-starter工程编译找不到jar,twitter4j被墙,http://hi.baidu.com/88908775/item/e5d1f61cad8aaf443b176e28 解决
3.storm-starter编码报错,代码有问题,e ...
Metaq是一个类是kafka的消息系统,开源地址https://github.com/killme2008/Metamorphosis。
基于Pull的消息系统,consumer端保持了很多逻辑,比如当前拉取消息的offset,loadbalance等,使用zookeeper作为coordination。
简单类图
核心类ZKLoadRebalanceListener,负责集群感知,当有broker退出或consumer退出时,重新balance。
FetchManager是具体的worker线程,负责从处理FetchRequest,从某一个partition拉去数据,并回掉业务 ...
Get主要流程:
1.拼装Scanner
2.调用scanner的next方法取记录
3.返回result
scanner入口是RegionScanner,代表扫描一个region,其实现RegionScannerImpl有一个属性KeyValueHeap,这个KeyValueHeap又包装了多个StoreScanner。每个StoreScanner对应一个column family,而每个StoreScanner又对应一个MemStoreScanner和多个StoreFileScanner。MemStoreScanner代表对memstore进行scan,StoreFileS ...