自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

[mysql driver]query timeout实现

之前一直对jdbc的query timeout有疑惑,看了下mysql的实现,大概了解了。关于jdbc的各种超时时间关系见这个文章http://www.importnew.com/2466.html,这里简单来看一下mysql的query timeout实现,也是比较简单。query timeout就是在发起请求前,启动一个定时任务,触发之后抛出异常。核心代码再执行sql过程中pro...

2013-08-29 16:38:05 1657

[Jboss数据源二]连接获取

从连接的视角来看类图1.WrappedConnection直接实现了Connection接口,对外的包装类2.BaseWrapperManagedConnection,包装了底层的物理连接,实现了连接获取,销毁等方法,psCache也是这里实现3.BaseConnectionEventListener,和BaseWrapperManagedConnection互相引用,数据源内...

2013-08-27 16:26:05 366

原创 [Jboss数据源一]初始化

先来看看jboss数据源的整体类图。 1.入口类LocalTxDataSource,负责对外参数设置和初始化框架2.获取数据库连接的入口类WrapperDataSource,其实现了DataSource接口3.ManagedConnectionFactory接口用来获取真实连接和创建WrapperDataSource4.LocalManagedConnectionFacto...

2013-08-13 15:10:52 243

天气数据源

之前在做一个天气数据相关的东东,统计了一些天气的数据源一.中央气象局api http://m.weather.com.cn/data/101010100.html城市code http://gxz1989611.iteye.com/blog/1622625 2586个二.yahooapi http://developer.yahoo.com/weather/ ...

2013-05-06 11:04:53 905

[ZooKeeper]连接中断,watch恢复,心跳和客户端超时

前一篇文章分析了server端主动超时session的情况,接下来看一下client和server网络暂时中断的情况。1.和server主动关闭连接一样,client抛出EndOfStreamException异常,此时客户端状态还是CONNECTED2.SendThread处理异常,清理连接,将当前所有请求置为失败,错误码是CONNECTIONLOSS3.发送Disconnecte...

2013-04-08 23:32:37 1607

[ZooKeeper]Client Session失效

前面一篇文章提到zookeeper server端主动发现session超时并清理session信息,关闭连接,接下来看看client端如何试图恢复session的。关于client端代码分析见前文http://iwinit.iteye.com/blog/1754611 。由于session被清理,此时server端已经没有session信息了。而由于连接被关闭,client会抛出异常if ...

2013-04-08 13:37:03 2180

[ZooKeeper]分布式Session超时

前面分析知道session超时由leader负责,假设某个session长时间没心跳超时,SessionTrackImpl入口 if (set != null) { for (SessionImpl s : set.sessions) { setSessionClosing(s.sessionId);...

2013-04-07 20:04:00 1029

原创 [ZooKeeper]分布式Session创建

前面几篇zookeeper的文章简单分析了执行流程,接下来打算从横向来分析一下zk的一些特性,先从session开始。这一篇http://iwinit.iteye.com/blog/1754611分析了单机情况下session建立,在集群环境下建立session不太一样,是一个proposal的过程,先假设集群由leader,followerA,followerB组成,我们的client去连f...

2013-04-07 18:11:51 131

[metaq]Broker

Broker是metaq的核心组件,负责消息的物理存储,分区指定等。例子配置文件[system]#broker编号,集群唯一brokerId=0#这个broker指定的分区数numPartitions=2#nio portserverPort=8123#异步刷盘策略,为0表示同步刷盘unflushThreshold=0#同上,刷盘间隔unflushIn...

2013-03-26 17:38:17 304

[HBase]abort引发的死锁

今天在HBase群里碰到一个客户端死锁问题,堆栈如下Java stack information for the threads listed above:==================================================="KVQueueService-Handler-2-EventThread": at org.apache.h...

2013-03-26 14:10:09 741

[storm]消息事务算法的一个理解

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 ...

2013-03-25 20:28:14 105

[metaq]Producer

Procuder相对consumer来说比较简单,根据topic从zk拿broker列表,注意这里只拿master类型的broker,slave型的broker和master拥有同样的broker id,主要为了HA用。roubd-robin取一个partition,发送消息。 1.MetaMessageSessionFactory初始化zookeeper连接,创建MessageProd...

2013-03-25 20:10:30 201

[storm]环境安装问题

集群安装参考 https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-clusterexample工程 https://github.com/nathanmarz/storm-starter问题:1.python2.5找不到,默认安装了2.7,源代码安装2.5解决2.storm-starter工程编译找不到jar,t...

2013-03-22 18:48:38 104

[metaq]Consumer

Metaq是一个类是kafka的消息系统,开源地址https://github.com/killme2008/Metamorphosis。基于Pull的消息系统,consumer端保持了很多逻辑,比如当前拉取消息的offset,loadbalance等,使用zookeeper作为coordination。简单类图核心类ZKLoadRebalanceListener,负责集群感知,...

2013-03-22 16:01:18 310

原创 [HBase]Get

Get主要流程:1.拼装Scanner2.调用scanner的next方法取记录3.返回result scanner入口是RegionScanner,代表扫描一个region,其实现RegionScannerImpl有一个属性KeyValueHeap,这个KeyValueHeap又包装了多个StoreScanner。每个StoreScanner对应一个column fami...

2013-03-19 15:42:37 170

原创 [HBase]KeyValue and HFile create

HBase put数据时会先将数据写入内存,其内存结构是一个ConcurrentSkipListMap,其Comparator是KVComparator。keyvalue对象结构KVComparator的KeyValue对象比较过程1.使用KeyComparator比较rowkey,结果是rowkey字节序从小到大2.如果rowkey一样,则按column family比较...

2013-03-13 14:00:12 128

原创 [HBase]记一个state异常

昨天联调的时候发现一个问题,请求发送后,页面上一直不返回数据,好像一直在waiting。用stack看了下,第一个线程在等待hbase RPC请求返回数据"http-bio-8080-exec-5" daemon prio=10 tid=0x00002aaab3661000 nid=0x2bb6 in Object.wait() [0x0000000045258000] java....

2013-03-13 11:31:39 184

[HBase]Flush

Flush过程,对应MemStoreFlusher1.是否需要做global flush,有则取当前rs最大的region进行flush if (isAboveLowWaterMark()) { .... //获取memstore最大的region进行flush if (!flushOneForGlobalPressure()) ...

2013-03-11 11:24:52 123

原创 [HBase]Write Path

HBase的批量put操作主要步骤1.同个region的put视为同一批操作2.对批量操作按rowkey进行字节排序Collections.sort(actionsForRegion); 3.检查region server的全局内存是否超过阀值,如超过则唤醒flush线程进行flush操作 public void reclaimMemStoreMemory() { ...

2013-03-06 17:40:28 116

原创 [HBase]Region assignment

 接上文,我们创建表t1,列族c1,hbase.root目录为/new。当创建空表时,系统会自动生成一个空region,我们以这个region分配过程看下Region是如何在HMaster和Region server(以下简称rs)中创建的。大致过程如下:1.HMaster指定分配计划,一个region只会分配给一个rs,多个rs均匀分配2.多个rs并发执行assiagnment操...

2013-02-28 17:05:57 316

原创 [HBase]Table create

让我们从创建表开始探索hbase内部机制。假设hbase.root目录为/new,测试表名为t1。client使用HBaseAdmin的createTable接口,过程如下1. 建立HMasterRPC连接,并调用之,由于hmaster端创建table是异步的,所以这里是一个异步操作。如果不指定split规则,默认会创建一个空region。 getMaster().createTa...

2013-02-27 18:35:15 158

[HBase]RPC框架之client实现

HBase RPC的client主要工作: 1.JDK动态代理获取代理类2.调用对应服务方法,逻辑包装在Invoker里,新建连接,发送数据包,等待server端响应,默认超时60s3.超时使用wait+loop检查实现其类图如下 0.94实现如下HBaseRPC getProxy入口  public static VersionedProtocol ...

2013-02-26 15:36:01 469

[HBase]RPC框架之 region server实现

HBase的RPC沿用了hadoop的RPC部分代码。HMaster,RegionServer和client都是通过RPC交换数据的。其实大抵相似。RegionServer端RPC部分类图如下:  HBaseServer核心类,实现了Reactor模型,主线程Listener负责accept外部连接,子线程Reader负责连接的具体读写操作,将数据反序列化成Call对象,通过Queue...

2013-02-25 20:13:42 505

原创 [HBase]Region location

HBase的table是该region切分的,client操作一个row的时候,如何知道这个row对应的region是在哪台Region server上呢?这里有个region location过程。主要涉及到2张系统表,-ROOT-,.META.。其结构见图 在zookeeper的/hbase/root-region-server节点中存着-ROOT-表所在的Region Serve...

2013-02-21 18:03:00 367

深入浅出Zookeeper之七分布式CREATE事务处理

前面几篇文章讲了follower和leader之间如何选举和初始化的,这一篇将以之前描述过的CREATE请求作为例子来描述在集群环境下是如何处理事务的。关于client和zookeeper server的描述前几篇文章已经涉及了。这里不就不再赘述了。假设client和某一个follower建立了连接,并发送了CREATE请求。在follower端,IO线程拿到请求开始执行处理链,Follo...

2013-01-28 23:51:32 252

深入浅出Zookeeper之六 Leader/Follower初始化

前一篇介绍了Leader选举,这一篇介绍选举成功之后Leader和Follower之间的初始化。先看Leader端操作 case LEADING: LOG.info("LEADING"); try { //初始化Leader对象 setLead...

2013-01-25 00:00:07 710

原创 深入浅出Zookeeper之五 Leader选举

前面几篇文章简单介绍了zookeeper的单机server client处理。接下来几篇文章会介绍分布式部署下zookeeper的实现原理。我们假设有3台server的集群,zoo.cfg配置如下tickTime=2000dataDir=/home/admin/zk-dataclientPort=2181#Learner初始化连接到Leader的超时时间initLimit=...

2013-01-22 11:23:30 630

深入浅出Zookeeper之四Create请求和处理

客户端接口 public String create(final String path, byte data[], List<ACL> acl, CreateMode createMode) throws KeeperException, InterruptedException { final Stri...

2013-01-04 21:49:47 487

深入浅出Zookeeper之三Exists请求和处理

 前一篇介绍了zookeeper的client和server之间session是如何建立的。在DataMonitor的例子中,DataMonitor通过exists异步接口和server端交互,本文将介绍exists操作是如何完成。dataMonitor开始exist操作  public void exists(final String path, Watcher watcher...

2012-12-27 22:00:37 2224

原创 深入浅出Zookeeper之二Session建立

上一篇,小编给大家介绍了zookeeper server端的启动。这一篇将来说一下client和server端是如何建立session的。通过官网的DataMonitor例子来说明。通过Session建立这个例子,可以大概知道client端和server端是如何处理请求的,之间是如何通信的。官网Datamonitor的代码:Executor public class Executo...

2012-12-26 20:30:14 300

原创 使用Btrace查看某个线程池活跃线程大小

某一天想查看某个应用里的hsf活跃线程数(工作线程)。第一个想到的jstack,根据jstack打出的日志分析。典型日志:"HSFBizProcessor-thread-6"prio=10 tid=0x00002aaabdffd800 nid=0x201f runnable [0x000000004768e000] java.lang.Thread.State: RUN...

2012-12-26 00:31:18 378

深入浅出Zookeeper之一Server启动

 大名鼎鼎的Zookeeper是解决分布式问题的神器。小编最近简单阅读了代码,分享一下。有不对之处,还请大家指出。整篇文章将分多个系列完成,因为涉及点比较多,很难在一片文章内搞定。关于zookeeper的使用场景,大家参考http://rdc.taobao.com/team/jm/archives/1232。api使用参考官网手http://zookeeper.apache.org/doc...

2012-12-26 00:26:12 283

Bash style的MapReduce之使用expect自动分析gc日志

最近小弟要分析一些gc数据,同时要分析几台机器的gc日志,主要统计每天数据:minor gc次数,最大运行时间,最小运行时间,平均运行时间,minor gc引起的总的stop world时间,major gc次数,major gc引起的总的stop world时间。 原始数据:2012-10-25T13:00:22.244+0800:234273.762: [GC 23427...

2012-12-24 15:52:29 122

某个流控工具分析

     处理流程:1.       在web容器启动时,通过SphFilter启动降级线程,初始化整个Sph框架。Web.xml配置:<filter> <filter-name>SphFilter</filter-name> <display-name>SphFilter</display-n...

2012-12-24 15:40:56 238

某个计数器应用采集端分析

在我们应用经常需要统计一些计数,比如调用次数等。典型代码如下: Keys keys = newKeys("XXX","doSomething"); MonitorLog.addStat(keys, System.currentTimeMillis()-begin, 1L);    在监控系统的页面上就能看到准实时的数据。  这是一个典型的计...

2012-12-24 15:39:58 90

Hadoop小试牛刀之dump数据

 各位好,最近小弟接到一个需求,需要dump数据从云梯(淘宝的hadoop环境)到TAIR(淘宝的缓存系统)。原先的大概设计:先从云梯原始表分析出部分数据,再用Datax(数据同步工具)将这些数据导入mysql单表,再起一个单机多线程任务跑(这里需要8个多小时)。我的一个简单想法,既然数据在云梯上,为什么不直接在云梯上直接跑MapReduce任务呢?然后我就开始这么干了。。。...

2012-12-24 15:37:18 478

HotSpot的Young区诊断和优化

在双11之前,做了一些UMP GC优化的事情,和大家分享下问题查找和优化的思路。一.   一些GC基础知识1.      大部分jvm都有分代的概念,堆被分成2个部分,一个Young区,一个old区2.      -Xmx设置堆的最大值,-Xmn设置young区的大小,减一下就是old区的大小3.      Young区又分为Eden,survivor(s0,s1,大小通过Su...

2012-12-24 15:22:17 341

服务框架HSF分析之三Consumer启动和处理

 前两篇文章为大家带来了HSF容器启动和Porvider的分享。这篇来分析下consumer端的运行机制。一. Consumer的启动1.     服务代理在HSFSpringConsumer的启动中会返回一个HSFServiceProxy的jdk动态代理,后续调用其实都是通过这个代理类来实现的。InvocationHandler handler = newHSFServ...

2012-12-10 17:21:03 1815

服务框架HSF分析之二Provider启动和处理

 上篇文章,简单介绍了HSF框架的初始化。这一篇,小编将为大家带来HSF provider的启动和服务细节。主要关注点:Server的启动,服务的注册,调用处理主流程(IO线程,业务线程)。一.  Server的启动在某一个HSFSpringProviderBean初始化时,启动HSF Server。在HSF默认协议使用TBRemoting作为RPC框架,TBRemotingRPCPr...

2012-12-10 17:11:31 2250

服务框架HSF分析之一容器启动

 大家平时都在用这个服务框架。简单阅读了下代码,了解其原理可以方便解决一些常见hsf的问题。限于篇幅,整个分析将分几个系列发布。第一篇将简单介绍Hsf的启动和各组件之间关系。 一.  Hsf总体架构   这个图很经典,想必大家都了解,Consumer,Provider,中间通过ConfigServer联接。那么其内部是如何实现的呢?请看下文。二.  容器启动,...

2012-12-10 17:03:16 476

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除