
中间件
服务端开发
这个作者很懒,什么都没留下…
展开
-
Kafka学习(一):Kafka的整体架构与核心组件设计剖析
概述Kafka是一个具有高吞吐量,高拓展性,高性能和高可靠的基于发布订阅模式的消息队列,是由领英基于Java和Scala语言开发。通常适合于大数据量的消息传递场景,如日志分类,流式数据处理等。Kafka的体系结构的核心组件包括:消息生产者,消息消费者,基于消息主题进行消息分类,使用Broker集群进行数据存储。同时使用Zookeeper进行集群管理,包括主题的分区信息,分区存放的broker...原创 2019-04-27 11:26:50 · 8849 阅读 · 1 评论 -
Kafka学习(二):基于磁盘顺序IO和零拷贝技术实现高性能文件读写
概述Kafka作为一个支持大数据量写入写出的消息队列,由于是基于Scala和Java实现的,而Scala和Java均需要在JVM上运行,所以如果是基于内存的方式,即JVM的堆来进行数据存储则需要开辟很大的堆来支持数据读写,从而会导致GC频繁影响性能。考虑到这些因素,kafka是使用磁盘而不是内存来进行数据存储,并且基于磁盘顺序读写和MMAP技术来实现高性能。存储结构目录与文件结构由...原创 2019-04-27 22:31:36 · 8383 阅读 · 7 评论 -
Kafka学习(三):服务器broker,生产者与消费者参数配置
原创 2020-03-21 21:42:29 · 1977 阅读 · 1 评论 -
RabbitMQ学习(一):RabbitMQ的架构设计与核心组件剖析
概念RabbitMQ是基于erlang语言开发的一个消息队列系统,是对AMQP协议的实现,其中AMQP的全称为Advanced Message Queuing Protocl,即高级消息队列协议,该协议主要用于制定基于队列进行消息传递的一个开放标准。AMQP的核心概念包括:虚拟主机vhost,连接Connection,信道Channel,数据交换器Exchanger,队列Queue,交换器与...原创 2019-06-04 00:16:57 · 4929 阅读 · 2 评论 -
RabbitMQ学习(二):高可靠之持久化与高可用之镜像队列
概述RabbitMQ是对内存队列,如Java的阻塞队列BlockingQueue的一种升级,即作为一个进程队列实现不同进程之间的消息通信交互,而内存队列,如BlockingQueue则通常用于实现一个Java进程的不同线程之间的消息通信交互。这也是顺应从单体应用到分布式系统的演变所必须的消息队列的演进,解决了分布式系统不同系统之间的消息传递问题。由于RabbitMQ主要用于实现不同进程或者说...原创 2019-06-05 01:05:08 · 3147 阅读 · 0 评论 -
RabbitMQ学习(三):高并发、高吞吐量、高可用的集群实现
一、概述高吞吐量与其他中间件产品类似,RabbitMQ也是通过集群的方式来解决单节点在处理海量消息时的性能瓶颈,通过集群的方式来实现高吞吐量,如单个RabbitMQ节点每秒只能处理1000个消息,而通过集群方式拓展,则可以进一步达到每秒10万个消息的处理或者更高的吞吐量。不过RabbitMQ的集群在处理海量消息时,是通过在集群的多个节点建立多个不同的队列来分散消息到多个不同节点的,所以在业...原创 2019-06-06 01:06:06 · 11699 阅读 · 0 评论 -
Zookeeper学习(一):核心设计与运用场景剖析
概述Zookeeper的设计目的,可以根据它的名字“zoo”和“keeper”推断,即动物园的管理者,而这样命名的起因是很多分布式组件,如Hadoop是大象,tomcat是猫等,故zookeeper是一种分布式协调和分布式组件管理服务,即负责管理和协调一个复杂的分布式系统的各个组件,使得这些组件能够相互协作,共同构成一个分布式系统。具体来说,Zookeeper是Hadoop生态的中的一个用于...原创 2019-05-12 01:19:34 · 4008 阅读 · 2 评论 -
Zookeeper学习(二):ZAB原子广播和集群leader选举策略
一、概述zookeeper作为分布式系统协调者和管理者,承担着联结分布式系统的各组件来组成一个完整服务的职责,如kafka作为一个分布式集群,在kafka的内部体系结构中包含消息生产者,消费消费者,消息存储broker三个核心组件,kafka通过在zookeeper中维护这三大组件的运作信息,并且这三大组件分别通过zookeeper获取其他组件的运作信息或者获取组件内部其他子组件的运作状态来协...原创 2019-05-13 00:09:09 · 8536 阅读 · 0 评论 -
Zookeeper学习(三):脑裂现象与应对策略
脑裂现象脑裂现象主要是指当出现网络分区时,zookeeper集群形成了两个或者多个leader的情况,这时如果两个leader都提供服务,则会出现数据不一致问题。集群出现分区的选举方式当由于网络分区,集群被分离为多个子集群时,则此时原集群的leader失去了半数的follower节点,故需要重新进行leader选举。同时另外的子集群由于没有leader,故也会发起leader选举。此时就需要在可用性和数据一致性方面做出选择。zookeeper针对这种情况,提供了一下三种机制来对可用性和数据一致原创 2020-05-17 11:03:19 · 4019 阅读 · 0 评论