`
文章列表
  背景:  在执行双机房部署的时候,因为应用长时间未访问数据库,导致后面访问的数据库的线程都被挂起。   现象分析: Java代码  "Thread-74" daemon prio=10 tid=0x00007f1840044000 nid=0x387b runnable [0x00007f18bdb27000]      java.lang.Thread.State: RUNNABLE           at java.net.SocketInputStream.socketRead0(Native Method)           ...
 1.迁移的流程   数据通过Ogg抽取Oracle增量数据到苏州flume集群 在flume集群对数据脱敏 同步数据到kafka集群 在滨江数据拉取数据到hbase集群   优化 (1)可扩展性 保证没有单点性能问题,每个流程都是可扩展的。苏州flume集群,滨江kafka集群,滨江flume
GeTrace系统的所有搜索都是用ElasticSearch来做的,在使用ElasticSearch的过程中碰到了一些问题,这里记录一下。   一 . 在查找调用链的时候。整体数据量大(每天60G * 7 = 420G),但是结果集比较少(只有几百行)的时候,查询时间经 ...
  一. 原生的远程操作接口 Neo4j原生的直接可用的插入方式有以下几种: 1.    Rest api执行Cypher语句 public boolean flush() { if (sqlCache.size() != 0) { long start = System.currentTimeMillis(); restAPI.executeBatch(new Process(sqlCache)); logger.info("Size:{},cost:{}ms" ...
背景:   前段时间,发生了某个服务节点发生问题,被阻塞时,影响了整套系统的运行。期望在运行的时候,当某个节点发生问题的时候,上级服务可以调用另一个可以节点,不会影响整套系统。   分析: 主要是不可用节点阻塞达30秒以上,我们使用的是random loadbalance的负载均衡策略。上级应用不断的调用不可用节点,导致被阻塞的调用越来越多,一直到报线程用完错误。   猜想可解决的方案: 1. 对于一些耗时少的服务,上级应用应该设置比较短的timeout时间,然后设置retry为下级节点数,这样就可以无失败次数   2.对于耗时长的服务,上级应用需要设置长的timeout时 ...
Dubbo 优雅停机修改方案   1.      服务端不能优雅停机的原因: NettyServer在构造函数中会调用 ChannelHandlers.wrap(handler, ExecutorUtil.setThreadName(url, SERVER_THREAD_POOL_NAME)) 方法将handler进行包装,包装成MultiMessageHandler的一个对象。在下面红色代码中会判断handler是否是WrappedChannelHandler对象,只有是的时候才会对executor对象复值。因为MultiMessageHandler对象不是WrappedCha ...
背景:  在执行双机房部署的时候,因为应用长时间未访问数据库,导致后面访问的数据库的线程都被挂起。   现象分析: "Thread-74" daemon prio=10 tid=0x00007f1840044000 nid=0x387b runnable [0x00007f18bdb27000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputS ...
背景: 10月29号,系统切换的时候,发生了master信息的变更,有个监听master信息的系统未收到zookeeper的通知。   分析: 原代码如下所示, 监听系统中用以下代码来监听path中数据的变更。当数据发生变更的时候,会回调process方法,然后处理相应的业务。(我们使用的是curator的jar包) client = CuratorFrameworkFactory.newClient("*:2181", new ExponentialBackoffRetry(1000, 3)); client.start(); try { ...

Kafka的producer

producer示例代码   Producer producer = new kafka.javaapi.producer.Producer<Integer, String>(new ProducerConfig(props)); String messageStr = new String("Message_" + messageNo); producer.send(new KeyedMessage<Integer, String>(topic, messageStr));   producer可以支持异步发送和同步发送两种方式 ...

Kafka的consumer

Consumer的使用示例代码 //创建soncumer connector ConsumerConnector consumer = kafka.consumer.Consumer.createJavaConsumerConnector( createConsumerConfig()); Map<String, Integer> topicCountMap = new HashMap<String, Integer>(); //设置topic和监控份数 ...

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 - KafkaRequestHandlers */ def startup() { try { info("starting") brokerStat ...

Netty ByteBuf的使用

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

ByteBuffer深入学习

背景   最近在研究netty的源代码,发现netty的内存管理都是用jdk的ByteBuffer。为了更深入的了解bytebuffer,因此有了这篇文章   ByteBuffer的基本组成 ByteBuffer 的基本函数http://kakajw.iteye.com/blog/1797073 ByteBuffer分为两类DirectBuffer和HeapBuffer。DirectBuffer速度快于HeapBuffer。DirectBuffer可以直接将数据输出到终端,避免内存拷贝。DirectBuffer的分配开销大于HeapBuffer。但是DirectBuffer不用G ...

Spring事务配置

Spring事务配置的五种方式: http://blog.csdn.net/hjm4702192/article/details/17277669 源代码分析: TransactionManager中定义了getTransaction,commit,rollback方法。用于在事务失败或成功的时候提交或者回滚 TransactonTemplate的exectue方法: 当调用execute方法的时候,会先判断为CallbackPreferringPlatformTransactionManager(CallbackPreferringPlatformTransactionManager ...
ConcurrentLinkedQueue使用了Unsafe的cas机制保证了线程的安全,用peek方法为例   public class ConcurrentLinkedQueue<E> extends AbstractQueue<E> implements Queue<E>, java.io.Serializable { private static final sun.misc.Unsafe UNSAFE; private transient volatile Node<E> head; pr ...
Global site tag (gtag.js) - Google Analytics