自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小程故事多的博客

一名工作十多年的技术老兵,永保初心!合著作品《深入分布式缓存--从原理到实践》

  • 博客(207)
  • 收藏
  • 关注

原创 经理做教练,团队共卓越

前言我们作为普通管理者,往往在识人,选人,用人,留人上面有非常多的困惑,下面我们将通过教练六篇来深入讲解。 一、人才篇在我们真正用人的时候,需要明白人才的重要性才能用好人。 《史记.高祖本纪》:夫运筹帷帐之中,决胜千里之外,吾不如子房。镇国家,抚百姓,给馈饷,不绝粮道,吾不如萧何。连百万之军,战必胜,攻必取,吾不如韩信。此三者,皆人杰也,吾能用之,此吾所以取天下也。项羽有一范曾而不能用,

2016-08-15 11:19:26 2543

原创 作为一名基层管理者如何利用情商管理自己和团队(二)

上一篇我们讲的是情商的五要素以及什么是三无管理者,本文将继续探讨,三无管理者如何进行团队的管理。 (作为一名基层管理者如何利用情商管理自己和团队(一)) http://blog.csdn.net/u013970991/article/details/52120005 六、三无管理者管理五法作为三无管理者,我们不能从行政的角度去约束我们的团队,那可以依赖管理五法,说白了就是情商管理,以人性化

2016-08-08 18:52:12 8434 6

原创 作为一名基层管理者如何利用情商管理自己和团队(一)

注:本文原是采用视频与现场练习的方式进行分享,采用文字分享在内容上将会有一些缩减在我们正式分享之前,先举一个我在团队中实验的案例来说明情商是什么。 我给团队中的每人都发了一张A4纸,我的要求是每人分别将纸对折二次,于是大家都去对折,我最后统计了一下,共有四种不同的对折结果,这说明什么呢?然后我自己给大家做示范,带领大家跟我一起对折,这次大家的结果和我是完全一样了,这又说明什么呢?给我们的启示是:我

2016-08-04 15:53:41 28784 19

原创 深入解析淘宝Diamond之客户端架构

说明:本文不介绍如何使用Diamond,只介绍Diamond的实现原理 一、什么是Diamonddiamond是淘宝内部使用的一个管理持久配置的系统,它的特点是简单、可靠、易用,目前淘宝内部绝大多数系统的配置,由diamond来进行统一管理。 diamond为应用系统提供了获取配置的服务,应用不仅可以在启动时从diamond获取相关的配置,而且可以在运行中对配置数据的变化进行感知并获取变化后

2016-08-01 19:21:11 16557 5

原创 Akka简单的性能测试

因为最近工作的关系,要把异步任务从应用服务器中拆分到专门的异步处理服务器中.方案一是采用MQ的方式将任务消息发出,在服务端进行处理,如下图所示: 这种方案是采用MQ作为中间的媒介,在服务端采用线程池异步处理任务,处理完成之后将结果发送到MQ中,客户端采用侦听的方式得到结果继续进行处理。 这种方案的不足是,可能在某些需求的情况下,需要将结果存放到共享的HashMap或者Threadlocal

2016-07-29 10:02:37 4038

原创 Kafka性能测试分析

首先要特别感谢赵崇贺同学利用业余时间进行的压测,才能为本文提供专业的测试数据一、测试环境准备 Cpu 内存 硬盘 Intel(R) Xeon(R) CPU E5520 @ 2.27GHz 32G 6TKafka集群,服务器个数:3台 采用CMS垃圾回收 JVM运行参数-Xmx1G -Xms1G -server -XX:+UseParNewGC -XX:+UseC

2016-07-29 09:57:26 8865

原创 论代码级性能优化变迁之路(一)

一、前言大家好,很久没有和大家一起讨论技术了,那么今天我将和大家一起探讨我负责的某项目的性能变迁之路。我们以前看到的很多架构变迁或者演进方面的文章大多都是针对架构方面的介绍,很少有针对代码级别的性能优化介绍,这就好比盖楼一样,楼房的基础架子搭的很好,但是盖房的工人不够专业,有很多需要注意的地方忽略了,那么在往里面填砖加瓦的时候出了问题,后果就是房子经常漏雨,墙上有裂缝等各种问题出现,虽然不至于楼房

2016-07-28 17:53:12 4773 4

原创 论代码级性能优化变迁之路(二)

本文是“论代码级性能优化变迁之路一”(http://www.jianshu.com/p/c4a748002e66) 的第二篇。在上一篇我们主要介绍了所遇到问题的五点,那么今天接下来讨论剩下的问题,我们先再回顾一下之前讨论的问题:1、单台40TPS,加到4台服务器能到60TPS,扩展性几乎没有。 2、在实际生产环境中,经常出现数据库死锁导致整个服务中断不可用。 3、数据库事务乱用,导致事务占用时间

2016-07-28 15:20:33 4452 5

原创 Spring注解事务诡异提交全面解析

一、问题产生背景应用上线的时候,正常调用Tomcat的shutdown.sh脚本,事务执行一半异常提交。伪代码如下:@Override @Transactional(propagation = Propagation.REQUIRED) public void insert(PaymentOrder paymentOrder) { try{

2016-07-28 15:11:48 3159 1

原创 由多线程内存溢出产生的实战分析

一日凌晨,手机疯狂报警,短信以摧枯拉朽之势瞬间以百条的速度到达,我在睡梦中被惊醒,看到短信的部分内容如下:Caused by: java.lang.OutOfMemoryError: unable to create new native thread at java.lang.Thread.start0(Native Method) at java.lang.Thread.star

2016-07-26 13:57:37 27045 12

原创 性能分析系列-小命令保证大性能

最近在工作中经常和性能压测工作打交道,积累了一些性能分析经验,我觉得这些经验对每一个开发者都有帮助的,能开发出性能高的代码也是我们的最终目标。由易到难,我们逐步介绍不同命令的用法和好处,这些命令是如何帮助我们开发人员进行性能分析的。 一、开发者的自测利器-Hprof命令1、示例演示例子程序:/** * PROJECT_NAME: test * DATE: 16/7/22

2016-07-26 13:55:23 4249 1

原创 玩转Flume之核心架构深入解析

玩转Flume之核心架构深入解析字数2224 阅读29 评论0 喜欢0前段时间我们分享过玩转Flume+Kafka原来也就那点事儿和Flume-NG源码分析-整体结构及配置载入分析这二篇文章,主要介绍了flume的简单使用和配置文件加载的全过程,那么今天我们重点分析flume核心原理,从而了解Source、Channel和Sink的全链路过程。一、Flume架构分析

2016-07-06 15:29:04 968

原创 Flume-NG源码分析-整体结构及配置载入分析

Flume-NG源码分析-整体结构及配置载入分析 弦外之音很多朋友都在问我,经常看各种框架的源码会不会感到很枯燥,是什么东西在驱动着我一直看下去。其实我想说的很简单,作为一个程序员,不管你工作了多少年,能够经常学习和借鉴国内外优秀框架设计思想和程序架构,我想对我们来说是最直接的提高。终于开始Flume源码的分析研究工作了,我也是边学边和大家分享,内容上难免有不足之处,望大家

2016-07-06 15:28:55 984

原创 玩转Flume+Kafka原来也就那点事儿

好久没有写分享了,继前一个系列进行了Kafka源码分享之后,接下来进行Flume源码分析系列,望大家继续关注,今天先进行开篇文章Flume+kafka的环境配置与使用。一、FLUME介绍Flume是一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。设计目标:(1

2016-07-06 15:28:48 756

原创 Kafka之Consumer获取消费数据全过程图解

这篇文章是作为:[跟我学Kafka源码之Consumer分析](http://flychao88.iteye.com/blog/2268481) 的补充材料,看过我们之前源码分析的同学可能知道。本文将从客户端程序如何调用Consumer获取到最终Kafka消息的全过程以图解的方式作一个源码级别的梳理。  

2016-07-06 15:28:41 3488

原创 Akka框架性能的简单测试分析

因为最近工作的关系,要把异步任务从应用服务器中拆分到专门的异步处理服务器中.方案一是采用MQ的方式将任务消息发出,在服务端进行处理,如下图所示:Sample Flowchart Template (2).png这种方案是采用MQ作为中间的媒介,在服务端采用线程池异步处理任务,处理完成之后将结果发送到MQ中,客户端采用侦听的方式得到结果继续进行处理。这种方案的不足是,可

2016-07-06 15:28:34 1063

原创 跟我学Kafka之Controller控制器详解(一)

我们的kafka源码分享已经进行过很多期了,主要的内容也都分享的差不多了,那么那么在今后的分享中,主要集中在kafka性能优化和使用Kafka集群中的其中一个Broker会被选举为Controller,主要负责Partition管理和副本状态管理,也会执行类似于重分配Partition之类的管理任务。如果当前的Controller失败,会从其他正常的Broker中重新选举Controlle

2016-07-06 15:28:27 5272 1

原创 跟我学Kafka之zookeeper的存储结构

一、zookeeper存储结构总图图片当我们kafka启动运行以后,就会在zookeeper上初始化kafka相关数据,主要包括六大类:consumersadminconfigcontrollerbrokerscontroller_epoch1、brokers节点结构说明1.1 topic信息结构/brokers/topics/[topic

2016-07-06 15:28:20 765

原创 跟我学Kafka之NIO通信机制

很久没有做技术方面的分享了,今天闲来有空写一篇关于Kafka通信方面的文章与大家共同学习。一、Kafka通信机制的整体结构74EACA88-8B9D-45F8-B7BF-202D658205A9.png这个图采用的就是我们之前提到的SEDA多线程模型,链接如下:http://www.jianshu.com/p/e184fdc0ade41、对于broker来说,客户端连接数量有限,

2016-07-06 15:28:13 2312

原创 为什么说Kafka使用磁盘比内存快

学习过[跟我学Kafka源码之LogManager分析]的同学一定会问为什么Kafka大量使用了磁盘作为传统意义的缓存。其实Kafka最核心的思想是使用磁盘,而不是使用内存,可能所有人都会认为,内存的速度一定比磁盘快,我也不例外。在看了Kafka的设计思想,查阅了相应资料再加上自己的测试后,发现磁盘的顺序读写速度和内存持平。而且Linux对于磁盘的读写优化也比较多,包括read-ahead

2016-07-06 15:28:06 769

原创 SEDA架构模型

一、传统并发模型的缺点基于线程的并发特点:每任务一线程直线式的编程使用资源昂高,context切换代价高,竞争锁昂贵太多线程可能导致吞吐量下降,响应时间暴涨。基于事件的并发模型特点:单线程处理事件每个并发流实现为一个有限状态机应用直接控制并发负载增加的时候,吞吐量饱和响应时间线性增长二、SEDA架构特点:(1)服务通过queue分解成stage: 每个stage代表FS

2016-07-06 15:27:59 1115

原创 【转】Java开发必会的Linux命令

作为一个Java开发人员,有些常用的Linux命令必须掌握。即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令。因为很多服务器上都是Linux系统。所以,要和服务器机器交互,就要通过shell命令。本文并不会对所有命令进行详细讲解,只给出常见用法和解释。具体用法可以使用--help查看帮助或者直接通过google搜索学习。1.查找文件

2016-07-06 15:27:49 1179

原创 Redis Lua脚本使用(资料备份)不是博客

./redis-cli EVAL "$(cat /root/redis-2.8.7/lua/count.lua)" 1 links:counter  [root@iZ28a2ewhtoZ bin]# ./redis-cli SCRIPT LOAD "$(cat /root/redis-2.8.7/lua/count.lua)""693491b86cd84a1400c780806c3

2016-07-06 15:27:42 666

原创 Twemproxy测试用例以及压测结果

1、前端使用 Twemproxy 做代理,后端的 Redis 数据能基本上根据 key 来进行比较均衡的分布。后端一台 Redis 挂掉后,Twemproxy 能够自动摘除。恢复后,Twemproxy 能够自动识别、恢复并重新加入到 Redis 组中重新使用。 2、Redis 挂掉后,后端数据是否丢失依据 Redis 本身的策略配置,与 Twemproxy 基本无关。如果要新增加一

2016-07-06 15:27:34 1146

原创 跟我学Kafka源码之LogManager分析

一、kafka文件系统存储机制 1、partition存储结构说明假如kafka集群中只有一个broker,数据文件目录为message-folder,例如创建一个topic名称为:testKJ1,  partitions=4存储路径和目录规则为:xxx/message-folder                              |--testKJ1-0 

2016-07-06 15:27:27 908

原创 深入理解并发之CompareAndSet(CAS)

一、CAS简介CAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁,使用这些类在多核CPU的机器上会有比较好的性能. CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。 今天我

2016-07-06 15:27:20 961

原创 跟我学Kafka源码之Broker Server

本章,我们将进入到Kafka的核心类中进行代码走读,深入分析他的存储交互和消息分发原理。首先给大家展示一张服务端交互图,因为比较复杂我就没有再画,转发别人的一张图以供参考: 大家看完这个图以后相信有了一个整体认识,那么下面我们就重点从整体到细节的逐步分解。 一、KafkaServerStartable在Kafka的main入口中startup KafkaServerStar

2016-07-06 15:27:13 703

原创 跟我学Kafka源码之Consumer分析

在上一章,我们跟踪了Producer源码的整体流程和一些细节,本章我们将重点跟踪Consumer的源码细节。Consumer的配置文件如下:Kafka Consumer配置:group.id: 指定consumer所属的consumer groupconsumer.id:

2016-07-06 15:27:05 2548

原创 Kafka整体结构以及模块分析

一、Kafka源代码的工程结构如下图所示:  二、各模板简要说明admin:管理员模块,操作和管理topic,paritions相关,包含create,delete topic,扩展patitionsApi:该模块主要负责交互数据的组装,客户端与服务端交互数据编解码client:该模块比较简单就一个类,Producer读取kafka broker元数据信息t

2016-07-06 15:26:58 1331

原创 Scala class与Case class的区别

在网上发现一篇非常好的文章,正好我在做Scala系列博客,于是转载到我的博客中。在Scala中存在case class,它其实就是一个普通的class。但是它又和普通的class略有区别,如下:  1、初始化的时候可以不用new,当然你也可以加上,普通类一定需要加new;1scala> case class Iteblog(name:String)

2016-07-06 15:26:51 1075

原创 跟我学Kafka源码Producer分析

本章主要讲解分析Kafka的Producer的业务逻辑,分发逻辑和负载逻辑都在Producer中维护。 一、Kafka的总体结构图(图片转发) 二、Producer源码分析 class Producer[K,V](val config: ProducerConfig, private val eventHandler: Ev

2016-07-06 15:26:40 1583

转载 Scala中的下划线的作用

1、作为“通配符”,类似Java中的*。如import scala.math._2、:_*作为一个整体,告诉编译器你希望将某个参数当作参数序列处理!例如val s = sum(1 to 5:_*)就是将1 to 5当作参数序列处理。3、指代一个集合中的每个元素。例如我们要在一个Array a中筛出偶数,并乘以2,可以用以下办法:a.filter(_%2==0).map(2*_)。又如要对缓冲数组A

2016-07-06 15:26:33 679

原创 Scala学习笔记(一)

一、变量获取变量的值是一个耗时的工作时,可以考虑使用lazy var. lazy val forLater = someTimeConsumingOperation() 二、函数定义“=”并不只是用来分割函数签名和函数体的,它的另一个作用是告诉编译器是否对函数的返回值进行类型推断!如果省去=,则认为函数是没有返回值的!比如:scala> def myFirstMetho

2016-07-06 15:26:26 578

原创 【转】MYSQL出错代码列表

1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库文件失败1012:不能读取系统表中的记录1020:记录已被其他用户修改1021:硬盘剩余空间不足,请加大硬盘可用空间1022:关键字重复,更改记录失败1023:关闭时发生

2016-07-06 15:26:19 729

原创 Kafka常用命令行总结

以下是kafka常用命令行总结:1.查看topic的详细信息./kafka-topics.sh -zookeeper 127.0.0.1:2181 -describe -topic testKJ12、为topic增加副本./kafka-reassign-partitions.sh -zookeeper 127.0.0.1:2181 -reassignment-json-fi

2016-07-06 15:26:12 820

原创 跟我学Kafka源码使用入门(三)

这一节咱们主要是讨论单机版的Kafka的简单使用,关于集群方面的东西其实也非常简单,具体可以参考Kafka官网进行配置既可。1、准备Zookeeper环境我们使用的是zookeeper-3.5.0版本。使用./zkServer.sh start命令启动Zookeeper使用ps -ax | grep zookeeper命令,出现下图所示:2、准备Kafka环境我们使用的

2016-07-06 15:26:05 639

原创 跟我学Kafka源码配置文件简介(二)

1、Broker配置 2.Consumer主要配置 3.Producer主要配置 以上是关于kafka配置文件一些基础说明,在其中我们知道如果要kafka正常运行,必须还要配置zookeeper。

2016-07-06 15:25:58 579

原创 跟学我Kakfa源码搭建环境(一)

Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为bro

2016-07-06 15:25:50 705

原创 跟我学分布式事务之2PC和3PC

分布式一致性回顾在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。为了对用户提供正确的增\删\改\差等语义,我们需要保证这些放置在不同物理机器上的副本是一致的。为了解决这种分布式一致性问题,前人在性能和数据一致性的反反复复权衡过程中总结了许多典型的协议和算法。其中比较著名的有二阶提交协议(Two Phase Comm

2016-07-06 15:25:40 695

原创 跟我学Dubbo系列之Java SPI机制简介

SPI 简介SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, 举个例子来说, 有个接口,想运行时动态的给它添加实现,你只需要添加一个实现,通过一个简单例子来说明SPI是如何使用的。 首先通过一张图来看看,用SPI需要遵循哪些规范,因为spi毕竟是

2016-07-06 15:25:33 1039

空空如也

空空如也

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

TA关注的人

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