每一个CPU都会有两个(或者一个?)kwoker线程. kwoker线程,说白了就是尽量减少进程的数目,为了什么呢?因为线程数据太多的话,调度的成本比较高,占用太多的系统资源,所以这里是进程的一个简化的版本,一个线程, 做多项工作! init_workqueues里面有这样的代码: /* create the initial worker */  for_each_online_cpu(cpu) {  struct worker_pool *pool;  for_each_cpu_worker_…
MyDisruptor V2版本介绍 在v1版本的MyDisruptor实现单生产者.单消费者功能后.按照计划,v2版本的MyDisruptor需要支持多消费者和允许设置消费者组间的依赖关系. 由于该文属于系列博客的一部分,需要先对之前的博客内容有所了解才能更好地理解本篇博客 v1版本博客:从零开始实现lmax-Disruptor队列(一)RingBuffer与单生产者.单消费者工作原理解析 MyDisruptor支持多消费者 disruptor中的生产者和消费者是互相制约的,生产者的生产速度不…
MyDisruptor V3版本介绍 在v2版本的MyDisruptor实现多消费者.消费者组间依赖功能后.按照计划,v3版本的MyDisruptor需要支持多线程消费者的功能. 由于该文属于系列博客的一部分,需要先对之前的博客内容有所了解才能更好地理解本篇博客 v1版本博客:从零开始实现lmax-Disruptor队列(一)RingBuffer与单生产者.单消费者工作原理解析 v2版本博客:从零开始实现lmax-Disruptor队列(二)多消费者.消费者组间消费依赖原理解析 MyDisrup…
MyDisruptor V4版本介绍 在v3版本的MyDisruptor实现多线程消费者后.按照计划,v4版本的MyDisruptor需要支持线程安全的多线程生产者功能. 由于该文属于系列博客的一部分,需要先对之前的博客内容有所了解才能更好地理解本篇博客 v1版本博客:从零开始实现lmax-Disruptor队列(一)RingBuffer与单生产者.单消费者工作原理解析 v2版本博客:从零开始实现lmax-Disruptor队列(二)多消费者.消费者组间消费依赖原理解析 v3版本博客:从零开始实…
MyDisruptor V5版本介绍 在v4版本的MyDisruptor实现多线程生产者后.按照计划,v5版本的MyDisruptor需要支持更便于用户使用的DSL风格的API. 由于该文属于系列博客的一部分,需要先对之前的博客内容有所了解才能更好地理解本篇博客 v1版本博客:从零开始实现lmax-Disruptor队列(一)RingBuffer与单生产者.单消费者工作原理解析 v2版本博客:从零开始实现lmax-Disruptor队列(二)多消费者.消费者组间消费依赖原理解析 v3版本博客:从…
MyDisruptor V6版本介绍 在v5版本的MyDisruptor实现DSL风格的API后.按照计划,v6版本的MyDisruptor作为最后一个版本,需要对MyDisruptor进行最终的一些细节优化. v6版本一共做了三处优化: 解决伪共享问题 支持消费者线程优雅停止 生产者序列器中维护消费者序列集合的数据结构由ArrayList优化为数组Array类型(减少ArrayList在get操作时额外的rangeCheck检查) 由于该文属于系列博客的一部分,需要先对之前的博客内容有所了解才…
两张图读懂kafka应用: Kafka 中的术语 broker:中间的kafka cluster,存储消息,是由多个server组成的集群. topic:kafka给消息提供的分类方式.broker用来存储不同topic的消息数据. producer:往broker中某个topic里面生产数据. consumer:从broker中某个topic获取数据. Kafka 中的术语设计: 1.Broker 中间的kafka cluster,存储消息,是由多个server组成的集群. 2.topic与消…
五一假期大雄看了一本<java并发编程艺术>,了解了线程池的基本工作流程,竟然发现线程池工作原理和互联网公司运作模式十分相似. 线程池处理流程 原理解析 互联网公司与线程池的关系 这里用一个比喻来描述一下线程池,中间有一些名词你可能不是太清楚,后边源码解析的部分会讲到. 你可以把线程池看作是一个研发部门,研发部门有很多程序员(Worker), 他们在一个大办公室里(HashSet workers).程序员干不完的需求(Runnable/Callable)放在需求池(workQueue)里排队.…
RocketMQ架构原理解析(一):整体架构 RocketMQ架构原理解析(二):消息存储(CommitLog) RocketMQ架构原理解析(三):消息索引(ConsumeQueue & IndexFile) RocketMQ架构原理解析(四):消息生产端(Producer) 一.概述 如果你曾经使用过RocketMQ,那么一定对以下发送消息的代码不陌生 DefaultMQProducer producer = new DefaultMQProducer("producerGroup&…
RocketMQ架构原理解析(一):整体架构 RocketMQ架构原理解析(二):消息存储(CommitLog) RocketMQ架构原理解析(三):消息索引(ConsumeQueue & IndexFile) RocketMQ架构原理解析(四):消息生产端(Producer) 一.概述 RocketMQ作为一个apache的顶级项目,拥有将近16K的star,它稳定的系统及强悍的性能,无疑在国内已经成为了企业消息队列的首选.接下来的一段时间,鄙人准备出一系列文章,从源码出发,逐一剖析Rocke…