朱小厮的博客

你若盛开 蝴蝶自来 你若精彩 天自安排

关注公众号+加微信群,和大家一起畅聊技术

加微信公众号,进入群聊。

2018-09-15 09:31:07

阅读数 877

评论数 11

消息中间件选型分析——从Kafka与RabbitMQ的对比来看全局

一、前言 消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下提供应用解耦、弹性伸缩、冗余存储、流量削峰、异步通信、数据同步等等功能,其作为分布式系统架构中的一个重要组件...

2018-04-07 00:56:44

阅读数 11663

评论数 2

《RabbitMQ实战指南》笔误及改进记录

2017年12月上旬笔者的一本新书——《RabbitMQ实战指南》上架,里面的校稿都是自己独自完成的,一共进行了15遍,但还是会有漏网之鱼。本篇博文用来记录现在发现的一些笔误,一是给购书的朋友一个参考,以防被笔误所迷惑;二是提供一个记录笔误的地方,方便再次印刷修改之用,这样也能进一步的完善这本书。...

2017-12-12 20:09:51

阅读数 9362

评论数 52

kafka数据可靠性深度解读

本文收录于InfoQ,未经允许不得转载。 1 概述 Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Sp...

2017-05-02 19:19:32

阅读数 23356

评论数 52

消息中间件(Kafka/RabbitMQ)收录集

本篇主要整理工作中遇到的一些消息中间件的相关知识,包括Kafka, RabbitMQ, RocketMQ, ActiveMQ等,不排除收录其他消息中间件的可能。 这里会持续收录相关知识,包括安装、部署、使用示例、监控、运维、原理等。 所有新撰写的与中间件有关的文章都会收录与此,注意保存本文...

2017-01-26 10:42:12

阅读数 7409

评论数 21

多线程小抄集(新编四)

ConcurrentHashMap ConcurrentHashMap是线程安全的HashMap,键值都不能为null。 JDK7的实现:内部采用分段锁来实现,默认初始容量为16(所以理论上这个时候最多可以同时支持 16 个线程并发写,只要它们的操作分别分布在不同的 Segment 上。这个值可以...

2019-01-03 15:16:29

阅读数 186

评论数 0

多线程小抄集(新编三)

终止正在运行的线程的三种方法 使用退出标志,是线程正常退出,也就是当run方法完成后线程终止; 使用stop方法强行终止线程,但是不推荐使用这个方法,因为stop和suspend及resume一样都是作废过期的方法,使用它们可能产生不可预料的结果; 使用interrupt()方法中断线程; 线程中...

2019-01-03 15:11:58

阅读数 122

评论数 1

多线程小抄集(新编二)

ThreadLocal ThreadLocal可以实现每个线程绑定自己的值,即每个线程有各自独立的副本而互相不受影响。一共有四个方法:get, set, remove, initialValue。可以重写initialValue()方法来为ThreadLocal赋初值。SimpleDateForm...

2019-01-03 15:06:48

阅读数 136

评论数 0

多线程小抄集(新编一)

Java中线程的状态 NEW、RUNNABLE(RUNNING or READY)、BLOCKED、WAITING、TIME_WAITING、TERMINATED Java将操作系统中的运行和就绪两个状态合并称为运行状态。阻塞状态是线程阻塞在进入synchronized关键字修饰的方法或代...

2018-12-29 16:43:00

阅读数 259

评论数 0

不止JDK7的HashMap,JDK8的ConcurrentHashMap也会造成CPU 100%

大家可能都听过JDK7中的HashMap在多线程环境下可能造成CPU 100%的现象,这个由于在扩容的时候put时产生了死链,由此会在get时造成了CPU 100%。这个问题在JDK8中的HashMap获得了解决。其实JDK7中的HashMap在多线程环境下不止只有CPU 100%这一共怪异现象,...

2018-12-09 09:36:16

阅读数 406

评论数 1

Kafka冷门知识——主题删除背后的秘密

在本文开篇中先让大家来思考一个问题,这个问题也是来源于一次真实的应用案例,案例内容的具体步骤如下: step 1. 创建一个主题,假设主题名为topic-offset; step 2. 创建生产者往这个主题中写入若干消息,然后关闭生产者; step 3. 创建消费者消费这个主题中的消息,并将消费...

2018-11-28 11:18:16

阅读数 254

评论数 0

Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析

网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把细节说清楚说透,尤其像 Java8 中的 ConcurrentHashMap,大部分文章都说不清楚。终归是希望能降低大家学习的成本,不希望大家到处找各种不是很靠谱的文...

2018-11-16 01:54:44

阅读数 930

评论数 4

sun.misc.Unsafe操作手册

Java是一个安全的开发工具,它阻止开发人员犯很多低级的错误,而大部份的错误都是基于内存管理方面的。如果你想搞破坏,可以使用Unsafe这个类。这个类是属于sun.* API中的类,并且它不是J2SE中真正的一部份,因此你可能找不到任何的官方文档,更可悲的是,它也没有比较好的代码文档。 实例化s...

2018-11-15 23:58:12

阅读数 792

评论数 0

一文详解TCP

记得以前面试的时候被面试官问起TIME_WAIT有什么痛点,当时只记得TCP三次握手、四次挥手之类的,至于其中的某个状态还真是记不起来,之前也没有过多关注过,还有对于拥塞控制的概念也比较模糊。 TCP报文格式 TCP大家都知道是什么东西,这个协议的具体报文格式如下: 标志位 URG...

2018-11-13 00:36:18

阅读数 1151

评论数 4

为什么Kafka中的分区数只能增加不能减少?

欢迎支持《RabbitMQ实战指南》以及关注微信公众号:朱小厮的博客。 当一个主题被创建之后,依然允许我们对其做一定的修改,比如修改分区个数、修改配置等,这个修改的功能就是由kafka-topics.sh脚本中的alter指令所提供。 我们首先来看如何增加主题的分区数。以前面的主题topic-...

2018-09-21 17:14:29

阅读数 1066

评论数 0

如何把一个运行完好的Kafka搞崩溃

Kafka其实也只是一个JVM进程,要想把一个进程搞崩溃,相信大家的nice idea(骚操作)也不少。本文中只是用了一种很常见的方式来使得Kafka的进程崩溃,通过分析崩溃的原因来让我们可以更合理的使用Kafka。 你可以试着在一台普通的Linux机器上创建10000个分区的主题。比如下面示例...

2018-09-21 17:12:12

阅读数 545

评论数 0

[Kafka与Spark集成系列四] Spark运行结构

在分布式环境下,Spark集群采用的是主从架构。如下图所示,在一个Spark集群中,有一个节点负责中央协调,调度各个分布式工作节点,这个中央协调节点被称为驱动器(Driver)节点,与之对应的工作节点被称为执行器(Executor)节点。驱动器节点可以和大量的执行器节点进行通信,它们也都作为独立的...

2018-08-26 16:56:55

阅读数 299

评论数 0

[Kafka与Spark集成系列三] Spark编程模型

在Spark中,我们通过对分布式数据集的操作来表达我们的计算意图,这些计算会自动地在集群上并行进行。这样的数据集被称为弹性分布式数据集(Resilient Distributed Dataset),简称RDD。RDD是Spark对分布式数据和计算的基本抽象。在Spark中,对数据的所有操作不外乎创...

2018-08-26 16:54:27

阅读数 293

评论数 0

[Kafka与Spark集成系列二] Spark的安装及简单应用

下载Spark安装包是安装的第一步,下载地址为http://spark.apache.org/downloads.html。截止撰稿之时,Spark最新版本为2.3.1,如下图所示,我们可以从官网中选择spark-2.3.1-bin-hadoop2.7.tgz进行下载。 在下载过后,...

2018-08-26 16:48:00

阅读数 358

评论数 0

[Kafka与Spark集成系列一] Spark入门

Spark是一个用来是实现快速而通用的集群计算的平台。Spark是UC Berkeley AMP Lab(加州大学伯克利分销的AMP实验室)所开源的类MapReduce的通用并行框架, 现在已经是Apache中的一个顶级项目。Spark使用Scala语言开发,支持Scala、Java、Python...

2018-08-26 16:41:38

阅读数 443

评论数 0

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