Kafka源码剖析之源码阅读环境搭建首先下载源码:http://archive.apache.org/dist/kafka/1.0.2/kafka-1.0.2-src.tgzgradle-4.8.1下载地址:https://services.gradle.org/distributions/gradle-4.8.1-bin.zipScala-2.12.12下载地址:https://downloads.lightbend.com/s...

阅读全文 »

集群应用场景消息传递Kafka可以很好地替代传统邮件代理。消息代理的使用有多种原因(将处理与数据生产者分离,缓冲未处理的消息等)。与大多数邮件系统相比,Kafka具有更好的吞吐量,内置的分区,复制和容错功能,这使其成为大规模邮件处理应用程序的理想解决方案。根据我们的经验,消息传递的使用通常吞吐量较低,但是可能需要较低的端到端延迟,并且通常取决于Kafka提供的强大的持久性保证。在这个领域,Kafka与ActiveMQ或 Rabbi...

阅读全文 »

生产者消息发送数据生产流程解析Producer创建时,会创建一个Sender线程并设置为守护线程。生产消息时,内部其实是异步流程;生产的消息先经过拦截器->序列化器->分区器,然后将消息缓存在缓冲区(该缓冲区也是在Producer创建时创建)。批次发送的条件为:缓冲区数据大小达到batch.size或者linger.ms达到上限,哪个先达到就算哪个。批次发送后,发往指定分区,然后落盘到broker;如果生产者配置了re...

阅读全文 »

概念和基本架构Kafka介绍Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多生产者、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。主要应用场景是:日志收集系统和消息系统。Kafka主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化...

阅读全文 »

集群方案原理对于无状态应用(如普通的微服务)很容易实现负载均衡、高可用集群。而对于有状态的系统(如数据库等)就比较复杂。业界实践:主备模式:单活,容量对等,可以实现故障转移。使用独立存储时需要借助复制、镜像同步等技术,数据会有延迟、不一致等问题(CAP定律),使用共享存储时就不会有状态同步这个问题。主从模式:一定程度的双活,容量对等,最常见的是读写分离。通常也需要借助复制技术,或者要求上游实现双写来保证节点数据一致。主主模式:两边...

阅读全文 »

消息可靠性用支付宝给商家支付,如果是个仔细的人,会考虑我转账的话,会不会把我的钱扣了,商家没有收到我的钱?一般我们使用支付宝或微信转账支付的时候,都是扫码,支付,然后立刻得到结果,说你支付了多少钱,如果你绑定的是银行卡,可能这个时候你并没有收到支付的确认消息。往往是在一段时间之后,你会收到银行卡发来的短信,告诉你支付的信息。支付平台如何保证这笔帐不出问题?支付平台必须保证数据正确性,保证数据并发安全性,保证数据最终一致性。支付平台...

阅读全文 »

RabbitMQ介绍、概念、基本架构RabbitMQ介绍RabbitMQ,俗称“兔子MQ”(可见其轻巧,敏捷),是目前非常热门的一款开源消息中间件,不管是互联网行业还是传统行业都广泛使用(最早是为了解决电信行业系统之间的可靠通信而设计)。高可靠性、易扩展、高可用、功能丰富等支持大多数(甚至冷门)的编程语言客户端。RabbitMQ遵循AMQP协议,自身采用Erlang(一种由爱立信开发的通用面向并发编程的语言)编写。RabbitMQ...

阅读全文 »

目的:了解消息中间件背景知识、使用场景、发展等掌握RabbitMQ、RocketMQ、Kafka这三款主流的消息中间件的架构、模型和使用(开发、安装、集群部署、运维、监控等)掌握消息的可靠性、幂等性、顺序消息、延迟消息、事务消息等进阶的知识,以及大规模生产环境中的使用经验,轻松应对各种复杂的业务场景掌握顶级开源消息中间件核心源码,理解其背后的架构设计思想以及在高性能存储系统、网络编程等方面的技巧(会涉及网络通信、操作系统等底层知识...

阅读全文 »

Aerospike介绍Aerospike(简称AS)是一个分布式,可扩展的键值存储的NoSQL数据库。T级别大数据高并发的结构化数据存储读写操作达微妙级,99%的响应可在1毫秒内实现采用混合架构,索引存储在内存中,而数据可存储在机械硬盘(HDD)或固态硬盘(SSD) 上(也可存储在内存)AS内部在访问SSD屏蔽了文件系统层级,直接访问地址,保证了数据的读取速度。AS同时支持二级索引与Client聚合,支持简单的sql操作(aql)...

阅读全文 »