自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据库链接长时间无数据交互,发生线程阻塞情况

 背景: 在执行双机房部署的时候,因为应用长时间未访问数据库,导致后面访问的数据库的线程都被挂起。 现象分析:Java代码 "Thread-74" daemon prio=10 tid=0x00007f1840044000 nid=0x387b runnable [0x00007f18bdb27000]     java.lang.Thread.Sta...

2017-12-13 13:54:43 2608

原创 数据迁移方案及优化

 1.迁移的流程 数据通过Ogg抽取Oracle增量数据到苏州flume集群在flume集群对数据脱敏同步数据到kafka集群在滨江数据拉取数据到hbase集群 优化(1)可扩展性保证没有单点性能问题,每个流程都是可扩展的。苏州flume集群,滨江kafka集群,滨江flume集群都是可以横行扩展的 (2)性能保证数据能够更快的迁移到苏州集群,原...

2016-05-17 18:59:46 837

原创 ElasticSearch 性能优化

GeTrace系统的所有搜索都是用ElasticSearch来做的,在使用ElasticSearch的过程中碰到了一些问题,这里记录一下。 一 . 在查找调用链的时候。整体数据量大(每天60G * 7 = 420G),但是结果集比较少(只有几百行)的时候,查询时间经常会超过1分钟,慢的甚至需要5,6分钟.优化1:经过深入测试发现,是因为batchSize设置过大(一开始设置为Int...

2016-01-29 13:22:28 237

原创 Neo4j批量插入性能优化

 一. 原生的远程操作接口Neo4j原生的直接可用的插入方式有以下几种:1.    Rest api执行Cypher语句 public boolean flush() { if (sqlCache.size() != 0) { long start = System.currentTimeMillis(); ...

2016-01-29 12:36:42 3681 1

原创 Least Activity LoadBalance配置

背景: 前段时间,发生了某个服务节点发生问题,被阻塞时,影响了整套系统的运行。期望在运行的时候,当某个节点发生问题的时候,上级服务可以调用另一个可以节点,不会影响整套系统。 分析:主要是不可用节点阻塞达30秒以上,我们使用的是random loadbalance的负载均衡策略。上级应用不断的调用不可用节点,导致被阻塞的调用越来越多,一直到报线程用完错误。 猜想可解决的...

2015-11-14 23:05:37 275

原创 Dubbo不能优雅停机,导致停止服务的时候,业务掉单

Dubbo 优雅停机修改方案 1.      服务端不能优雅停机的原因: NettyServer在构造函数中会调用ChannelHandlers.wrap(handler, ExecutorUtil.setThreadName(url, SERVER_THREAD_POOL_NAME))方法将handler进行包装,包装成MultiMessageHandler的一个对象。在...

2015-11-03 12:57:20 1175

原创 数据库链接长时间无数据交互,发生线程阻塞情况

背景: 在执行双机房部署的时候,因为应用长时间未访问数据库,导致后面访问的数据库的线程都被挂起。 现象分析:"Thread-74" daemon prio=10 tid=0x00007f1840044000 nid=0x387b runnable [0x00007f18bdb27000] java.lang.Thread.State: RUNNABLE ...

2015-11-03 12:06:21 1196

原创 Zookeeper故障总结

背景:10月29号,系统切换的时候,发生了master信息的变更,有个监听master信息的系统未收到zookeeper的通知。 分析:原代码如下所示, 监听系统中用以下代码来监听path中数据的变更。当数据发生变更的时候,会回调process方法,然后处理相应的业务。(我们使用的是curator的jar包) client = CuratorFrameworkFactory...

2015-11-01 19:55:54 1083

原创 Kafka的producer

producer示例代码 Producer producer = new kafka.javaapi.producer.Producer<Integer, String>(new ProducerConfig(props));String messageStr = new String("Message_" + messageNo);producer.send(ne...

2015-06-15 13:35:13 105

原创 Kafka的consumer

Consumer的使用示例代码//创建soncumer connector ConsumerConnector consumer = kafka.consumer.Consumer.createJavaConsumerConnector( createConsumerConfig()); Map<String, Integer> t...

2015-06-14 17:37:23 393

原创 Kafka启动的流程

调用KafkaServer的startup方法启动kafka /** * Start up API for bringing up a single instance of the Kafka server. * Instantiates the LogManager, the SocketServer and the request handlers - KafkaReq...

2015-06-14 17:30:13 777

原创 Netty ByteBuf的使用

Netty的ByteBuf主要用于网络传输,有读写两个index。 *      +-------------------+------------------+------------------+ *      | discardable bytes |  readable bytes  |  writable bytes  | *      |                 ...

2015-04-06 17:33:57 457

原创 ByteBuffer深入学习

背景 最近在研究netty的源代码,发现netty的内存管理都是用jdk的ByteBuffer。为了更深入的了解bytebuffer,因此有了这篇文章 ByteBuffer的基本组成ByteBuffer 的基本函数http://kakajw.iteye.com/blog/1797073ByteBuffer分为两类DirectBuffer和HeapBuffer。Direc...

2015-04-04 20:13:45 280

原创 Spring事务配置

Spring事务配置的五种方式: http://blog.csdn.net/hjm4702192/article/details/17277669源代码分析:TransactionManager中定义了getTransaction,commit,rollback方法。用于在事务失败或成功的时候提交或者回滚TransactonTemplate的exectue方法:当调用execut...

2014-09-09 09:19:08 65

原创 concurrent- ConcurrentLinkedQueue

ConcurrentLinkedQueue使用了Unsafe的cas机制保证了线程的安全,用peek方法为例 public class ConcurrentLinkedQueue<E> extends AbstractQueue<E> implements Queue<E>, java.io.Serializable { pr...

2014-08-16 19:28:29 103

原创 Java内容的复习-Performance 调优

1. CPU2. Memory3. Disk4. IO5. JVMhttp://blog.chinaunix.net/uid-24020646-id-1992032.html

2014-08-16 19:27:22 111

原创 面试总结

面试总结

2014-08-16 19:26:35 83

原创 Java内容的复习-大数据

SparkSpark streaming和storm的区别是(两者都是分布式流处理框架)http://www.jdon.com/46591 :1.Spark支持保持状态2.Spark有数据平滑窗口(sliding window),而后者需要自己去维护这个窗口3.Spark是需要到一个duration才开始处理数据,storm是实时处理数据,有数据就处理。Storm只有秒内的延迟...

2014-08-16 19:20:28 116

原创 Java内容的复习-Spring和hibernate

Springhttp://www.cnblogs.com/linjiqin/p/3573151.htmlhttp://wenku.baidu.com/link?url=TstWbtOELC5Y0fNfmYJr4T3Dghz0IIcXehCiWxE9NvfVlIs6UT5q6eqCczzcKIMz2pFk2GiL4obU_nOdHAtrm4jQAKUKmR3m9XhE82Z6Ipeh...

2014-08-16 19:17:20 91

原创 Java内容的复习-OI项目面试

OIOI是一个告警系统。用flume收集OC client上传的数据,然后传到spark,spark再对数据进行分析,生成一些metrics键值对,然后发到graphite做显示,seyren定期去graphite查询metrics键值对,当某个metrics超过伐值的时候报警给分析人员,分析人员再对相应的日志进行分析,找出异常的原因。 拓扑框架:Performance调优环境...

2014-08-12 21:48:58 230

原创 Java内容的复习-lock和condition的使用

以前遇到一个面试题,一些农民往桶里放苹果,一些农民往桶里面拿苹果,当桶达到1000个苹果的时候不能再放了,当桶的个数少于5个的时候不能再拿了。这个例子用lock和condition可以很好的解决。condition有await方法和signal方法,当调用await方法的时候,会释放当前的锁,然后将当前线程放到condition的等待队列中。当调用signal方法时,会调用将condition...

2014-08-10 15:23:36 123

原创 Java内容的复习-TCP/IP协议笔记

网络分层:应用层      telnet ftp http   传输层      TCP和UDP   网络层      IP ICMP IGMP数据链路层  设备驱动程序和接口卡  1.链路层链路层主要有三个目的:(1)为I P模块发送和 接收I P数据报;(2 )为A R P模块发送A R P请求和接收A R P应答;(3 )为R A R P 发送R A R P请 ...

2014-08-08 00:21:42 137

原创 Java内容的复习-数据库

为了将Oracle迁移到MySQL,过程中需要做增量数据的记录。因此想了几种方案:1. 如果表后面有modifydate这个字段的话,就可以按照这个字段来迁移表,将在dump时间之后修改的数据做迁移2.在需要做增量迁移的表上建trigger,将insert,update,delete的操作记录下来。3.用oracle自带的audit trail功能来做(不适合,表格式不对,多表关联...

2014-08-03 12:44:18 77

原创 Java内容的复习-网络IO

系统I/O 可分为阻塞型(BIO), 非阻塞同步型(NIO)以及非阻塞异步型(AIO). 阻塞型I/O(BIO)意味着控制权只到调用操作结束了才会回到调用者手里. 结果调用者被阻塞了, 这段时间了做不了任何其它事情. 更郁闷的是,在等待IO结果的时间里,调用者所在线程此时无法腾出手来去响应其它的请求,这真是太浪费资源了。拿read()操作来说吧, 调用此函数的代码会一直僵在此处直至它所...

2014-08-03 12:41:26 89

原创 Java内容的复习-数据结构

HashMap 非线程安全  http://frankfan915.iteye.com/admin/blogs/1151971 HashSet 非线程安全,可以存放不相同的数值,用HashMap来存储数据,当调用Put(A)时,其实是调用了HashMap的put(A,CONSTANT)方法。http://frankfan915.iteye.com/admin/blogs/115...

2014-08-03 12:39:40 141

原创 Java内容的复习-其它知识

ClassLoader JVM自带的类加载器可以分为三类:Boot Start ClassLoader,Ext ClassLoader, App ClassLoader. Java类的加载是通过父类依赖来加载的,如果App ClassLoader加载返回 null,则调用Ext ClassLoader加载类,如果Ext不能加载,则调用Boot Start加载。我们可以自定义ClassLoade...

2014-08-03 12:29:23 69

原创 Java内容的复习-线程同步

        Unsafe有点类似于反射, 但Unsafe速度快于反射,通过Unsafe可以拿到某个成员变量相对于类的偏移量,然后再按照偏移量拿到某个对象的这个成员变量的值 。很多锁的同步底层都是用Unsafe做的。如Unsafe的CAShttp://frankfan915.iteye.com/admin/blogs/1153726         ReentrantLock...

2014-08-03 12:26:41 72

原创 项目整理-一般Java项目

Policy Analysis项目的框架:Mysql和Derby做数据的存储,FreeMarker做web页面表单的验证,Guava缓存器做policy的缓存,groovy让用户扩展验证逻辑项目的难点:下载任务并发的处理,日志的分发,并行处理遇到的问题:因为一个用户一天日志下载的时间比较长,需要高效的划分下载的任务。将用户的日志按照天下载,那样已经下载的日志就可以不用重新下载。...

2014-07-29 22:20:18 126

原创 项目整理-大数据分析项目

有大半年时间在做大数据分析,主要产品为OI。OI 用到了flume,spark,graphite。学习了大数据的开发。优点:flume,spark源代码的学习,performance调优 OI项目的框架:用flume做数据收集,spark做数据分析,graphite做数据显示,seyren做告警系统项目的难点:spark和flume的框架的学习,performance的...

2014-07-29 15:20:45 367

原创 Zookeeper 源码分析-leader选举

选举的算法可以参考:http://blog.csdn.net/xhh198781/article/details/10949697 假设配置中有两个serverserver.1=localhost:2888:3888server.2=localhost:2889:3888 由前文可以,zookeeper在选举leader之前会先调用下面的代码,首先设置currentVo...

2014-07-17 16:48:22 1218

原创 Zookeeper 源码分析-启动

   本文主要介绍了zookeeper启动的过程    运行zkServer.sh start命令可以启动zookeeper。入口的main函数在类中QuorumPeerMain。   main函数主要调用了runFromConfig函数,创建了QuorumPeer对象,并且调用了start函数,从而启动了zookeeper。public class QuorumPeerMain...

2014-07-15 16:55:21 82

原创 flume源码分析-Sink

Sink 将从channel接收event,然后将event发往目标地址。  /**** A simple sink which reads events from a channel and writes them to HBase.* This Sink uses an aysnchronous API internally and is likely to* per...

2014-07-14 17:01:45 253

原创 flume源码分析-SinkProcessor

flume包括三种sink processor,DefaultSinkProcessor,FailoverSinkProcessor,LoadBalancingSinkProcessor Default sink processor that only accepts a single sink, passing on process results without any additi...

2014-07-14 15:28:13 415

原创 flume源码分析-ChannelSelector

flume自带两种channelSelector。一种是MultiplexingChannelSelector,另一种是ReplicatingChannelSelector。 ReplicatingChannelSelector是将event发送到每个channelpublic class ReplicatingChannelSelector extends AbstractChan...

2014-07-14 14:22:47 831

原创 flume源码分析-channel

Channel 相当于一个管道,source写数据到channel中,sink从channel取数据。Channel有三类,memory,file,jdbc。memory速度最快,但是当机器宕机的时候数据会丢失,file数据不会丢失,jdbc速度最慢,一般选择fileChannel。  Source 中会调用ChannelProcessor的processEvent方法处理Log事件。...

2014-06-08 20:26:42 292

原创 flume源码分析-source

flume的source用于收集日志,父类为AbstractSource,下图中的其他类都继承于AbstractSource  AvroSource   lifecycleAware 会调用start方法启动avroSource。avroSource主要启动了一个NettyServer用于接收数据,然后交由avroSource处理。 @Override public...

2014-05-26 10:19:45 502

原创 flume源码分析

flume是一个高可靠性的分布式的大文件收集系统。它提供了transaction来保证数据不会丢失。flume官网:http://flume.apache.org/Flume文档:http://flume.apache.org/FlumeUserGuide.html,http://flume.apache.org/FlumeDeveloperGuide.html 安装:从官网下...

2014-05-23 15:04:34 55

原创 Zookeeper 学习

现在有事件可以学习一下zookeeper。link:http://www.blogjava.net/BucketLi/archive/2010/12/21/341268.html 这个链接主要讲了zookeeper的安装部署以及zookeeper的应用场景,zookeeper中znood的管理。 zookeeper的应用场景有:1.  配置信息的管理和同步(spark中用zooke...

2014-05-23 14:43:25 82

原创 Spark源码分析13-Tuning Spark

We can refer to the link http://spark.incubator.apache.org/docs/latest/tuning.html  for  detail tuning document.      After tuning, spark can process 200M logs every minutes  in one single work ...

2014-05-15 17:48:37 61

原创 Spark源码分析12-yarn部署

明天写

2014-05-13 22:08:06 87

空空如也

空空如也

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

TA关注的人

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