6 朱小厮

尚未进行身份认证

你知道的越多 你不知道的也就越多

等级
博文 283
排名 891

基于数据库实现的分布式锁真的无用吗?

概述在单机时代,虽然不需要分布式锁,但也面临过类似的问题,只不过在单机的情况下,如果有多个线程要同时访问某个共享资源的时候,我们可以采用线程间加锁的机制,即当某个线程获取到这个资源后,就立即对这个资源进行加锁,当使用完资源之后,再解锁,其它线程就可以接着使用了。例如,在JAVA中,甚至专门提供了一些处理锁机制的一些API(synchronize/Lock等)。但是到了分布式系统的时代,这种线程...

2019-06-20 00:43:21

聊一聊Kafka分区的隐藏属性——二次归类

在使用Kafka的过程中,分区是一个不可忽视的概念。很多时候你会带着这样的疑问:Kafka的分区该怎么划分?按什么划分?分多少个?撰稿之时,我在《深入理解Kafka》一书中搜索了一下“分区”这个词,结果发现出现的频率至少有4位数之多。Kafka中分区的概念涉猎很多,比如:分区分配、分区重分配、失效分区等。在本公众号里也发表过几篇文章来讲述Kafka分区中的某些知识点:如何为Kafka挑选合适的...

2019-06-04 02:48:15

周末随笔 | 问好一个问题,有的放矢

今天不谈IT技术,来聊聊“问题”这个问题。你是否有注意过自己提问的方式和方法?我们不妨反思维一下,我们或多或少的都会被问过问题,而且有些问题会令你“印象深刻”,比如:“在?”“在吗?”“在不在?”遇到此类问题的时候,皮皮一般都很困惑:万一我说在,你要是想我借钱怎么办?万一我说不再,你要是请我吃饭怎么办?我相信很多同学也加过入一些技术群,在这些技术群里几乎每天都会充斥这样的问题:“有...

2019-06-01 19:10:55

周末随笔 | 笔耕者的悲哀 —— 盗亦无道

今天所要说的不是技术,而是盗版这个现象。对于技术公众号来说,很少会写一些技术之外的东西。而且写一些实事类的东西对触碰到一部分人的利益,更有甚者会被“安排”。对于盗版,我其实已经习惯了,也早已习惯地采取“鸵鸟策略”来应对。不过昨天发生的一件事情确实有点让人寒心。前天我的书改版的掘金小册上线,我的一些好基友们也纷纷帮忙宣传,我就不一一感谢啦。其中我认识多年的狼哥(不知道狼哥是谁的话,百度一下:占小...

2019-05-12 17:07:15

打磨两月,电子版《深入理解Kafka》重新回归!!!

自从3月8日将原本的电子版下架后已有两月有余,今日重新将电子版的《深入理解Kafka》以掘金小册的形式上线。掘金没有推广,只能我自己上了,如有打扰,还望海涵。原本的电子版在亚马逊以及京东上都短暂存在过,将他们下线是因为:1.这2个平台的电子版定价太高。说实话,若不是经常看下这些平台的情况,真不知道电子版会上线,因为事先约定的是暂不上线。其次,电子版的定价我事先也不知晓,亚马逊的定价是82....

2019-05-10 23:48:46

干趴面试官系列 | 请你简述一下Kafka中的分区分配

“请你简述一下Kafka中的分区分配”,当面试官问你这个问题的时候,你会怎么回答?其实,这道题目里面就暗藏汹涌,因为Kafka中的分区分配在多处出现,而这个问题的表述方式是在潜意识里暗示你回答一种,这样在你自认为很完美的回答完这个问题之后,面试官会冷不丁的来一句:还有呢?当你回答完一个点的时候,面试官来一句还有呢,当你再补上一个的时候,他还是会来一句还有呢,就算你又补上第三个的时候,他还是会来一...

2019-04-26 01:32:23

Kafka科普系列 | 原来Kafka中的选举有这么多?

面试官在考查你Kafka知识的时候很可能会故弄玄虚的问你一下:Kafka中的选举时怎么回事?除非问你具体的哪种选举,否则问这种问题的面试官多半也是对Kafka一知半解,这个时候就是“弄死”他的时候。当然如果你没有一定的知识储备,那么就是你被“弄死”的时候。一般问这个问题,那么他肯定知道其中的一种,比如分区leader的选举。所谓分区leader的选举就是当ISR中的leader副本歇菜了,再重新...

2019-04-18 02:02:25

Kafka科普系列 | 轻松理解Kafka中的延时操作

本文起源于之前去面试的一道面试题,面试题大致上是这样的:消费者去Kafka里拉去消息,但是目前Kafka中又没有新的消息可以提供,那么Kafka会如何处理?如下图所示,两个follower副本都已经拉取到了leader副本的最新位置,此时又向leader副本发送拉取请求,而leader副本并没有新的消息写入,那么此时leader副本该如何处理呢?可以直接返回空的拉取结果给follower副本,不...

2019-04-16 08:37:23

Kafka科普系列 | Kafka中的事务是什么样子的?

事务,对于大家来说可能并不陌生,比如数据库事务、分布式事务,那么Kafka中的事务是什么样子的呢?在说Kafka的事务之前,先要说一下Kafka中幂等的实现。幂等和事务是Kafka0.11.0.0版本引入的两个特性,以此来实现EOS(exactlyoncesemantics,精确一次处理语义)。幂等,简单地说就是对接口的多次调用所产生的结果和调用一次是一致的。生产者在进行重试的时候有可能...

2019-04-09 09:56:29

Kafka科普系列 | 什么是LSO?

很多同学对于Kafka的认知仅限于在LEO和HW之间,有可能认知还出现错误,对此记住一点,这两个都是指最后一条的下一条的位置而不是指最后一条的位置。不过本文的关注点不在于此,而在于LSO这个概念。如果需要了解LEO和HW的同学可在文末留言,后面也可以考虑出个科普LEO和HW的文章。LSO特指LastStableOffset,在上一篇《Kafka科普系列|什么是LW和logStartOffse...

2019-04-03 02:00:37

Kafka科普系列 | 什么是LW和logStartOffset?

欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。很多读者对Kafka中的HW的概念并不陌生,但是却并不知道还有一个LW的概念。HW是HighWatermark的缩写,俗称高水位,它标识了一个特定的消息偏移量(offset),消费者只能拉取到这个offset之前的消息。如上图...

2019-04-01 00:58:48

Kafka最全面试题整理|划重点要考

欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。有很多人问过我要过Kafka相关的面试题,我一直懒得整理,这几天花了点时间,结合之前面试被问过的、别人咨询过的、我会问别人的进行了相关的整理,也就几十题,大家花个几分钟看看应该都会。面试题列表如下:Kafka的用途有哪些?使用场景如何?Kafka中的I...

2019-03-14 12:55:18

一些神级的Go开源项目

欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。golang/go介绍:Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。go本身,也是用go语言实现的,包括他的编译器。与C++相比,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能...

2019-03-01 19:45:52

新书《深入理解Kafka:核心设计与实践原理》上架,感谢支持~

新书上架初识Kafka时,笔者接触的还是0.8.1版本,Kafka发展到目前的2.x版本,笔者也见证了Kafka的蜕变,比如旧版客户端的淘汰、新版客户端的设计、Kafka控制器的迭代优化、私有协议的变更、事务功能的引入等。Kafka从昔日的新星逐渐走向成熟,再到今日的王者地位不可撼动,这期间有太多的故事可讲。刚接触Kafka时,市面上还并没有任何关于Kafka的书籍。在...

2019-02-24 00:40:53

《深入理解Kafka:核心设计与实践原理》笔误及改进记录

2019年2月下旬笔者的有一本新书——《深入理解Kafka:核心设计与实践原理》上架,延续上一本《RabbitMQ实战指南》的惯例,本篇博文用来记录现在发现的一些笔误,一是给购书的朋友一个参考,以防被笔误所迷惑;二是提供一个记录笔误的地方,方便再次印刷修改之用,这样也能进一步的完善这本书。本书出版之前已校稿多次,也邀请了专业的技术小伙伴进行校稿,但还是会有漏网之鱼,还望各位海涵。(本文长期更新)...

2019-02-21 00:08:43

多线程小抄集(新编四)

ConcurrentHashMapConcurrentHashMap是线程安全的HashMap,键值都不能为null。JDK7的实现:内部采用分段锁来实现,默认初始容量为16(所以理论上这个时候最多可以同时支持16个线程并发写,只要它们的操作分别分布在不同的Segment上。这个值可以在初始化的时候设置为其他值,但是一旦初始化以后,它是不可以扩容的),装载因子为0.75f,分段16,每...

2019-01-03 15:16:29

多线程小抄集(新编三)

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

2019-01-03 15:11:58

多线程小抄集(新编二)

ThreadLocalThreadLocal可以实现每个线程绑定自己的值,即每个线程有各自独立的副本而互相不受影响。一共有四个方法:get,set,remove,initialValue。可以重写initialValue()方法来为ThreadLocal赋初值。SimpleDateFormat不是线程安全的,可以通过如下的方式让每个线程单独拥有这个对象:privatestaticfi...

2019-01-03 15:06:48

多线程小抄集(新编一)

Java中线程的状态NEW、RUNNABLE(RUNNINGorREADY)、BLOCKED、WAITING、TIME_WAITING、TERMINATEDJava将操作系统中的运行和就绪两个状态合并称为运行状态。阻塞状态是线程阻塞在进入synchronized关键字修饰的方法或代码块(获取锁)时的状态,但是阻塞在JUC包中Lock接口的线程状态却是等待状态,因为JUC中Lock接口对于...

2018-12-29 16:43:00

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

大家可能都听过JDK7中的HashMap在多线程环境下可能造成CPU100%的现象,这个由于在扩容的时候put时产生了死链,由此会在get时造成了CPU100%。这个问题在JDK8中的HashMap获得了解决。其实JDK7中的HashMap在多线程环境下不止只有CPU100%这一共怪异现象,它还可能造成插入的数据丢失,有兴趣的读者可以自行了解下。对于HashMap多线程的问题,我们通常会这...

2018-12-09 09:36:16
CSDN身份
  • 博客专家
奖章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。