08 2018 档案
摘要:转载自 huxihx,原文链接 关于Kafka监控方案的讨论 目前Kafka监控方案看似很多,然而并没有一个“大而全”的通用解决方案。各家框架也是各有千秋,以下是我了解到的一些内容: 一、Kafka manager Github地址: https://github.com/yahoo/kafka-m
阅读全文
摘要:转载自 huxihx,原文链接 【译】Flink + Kafka 0.11端到端精确一次处理语义的实现 本文是翻译作品,作者是Piotr Nowojski和Michael Winters。前者是该方案的实现者。 原文地址是An Overview of End-to-End Exactly-Once
阅读全文
摘要:转载自 huxihx,原文链接 Kafka水位(high watermark)与leader epoch的讨论 本文主要讨论0.11版本之前Kafka的副本备份机制的设计问题以及0.11是如何解决的。简单来说,0.11之前副本备份机制主要依赖水位(或水印)的概念,而0.11采用了leader epo
阅读全文
摘要:转载自 huxihx,原文链接 关于Kafka幂等producer的讨论 众所周知,Kafka 0.11.0.0版本正式支持精确一次处理语义(exactly once semantics,下称EOS)。Kafka的EOS主要体现在3个方面: 幂等producer:保证发送单个分区的消息只会发送一次,
阅读全文
摘要:转载自 huxihx,原文链接 Apache Flink Kafka consumer Flink提供了Kafka connector用于消费/生产Apache Kafka topic的数据。Flink的Kafka consumer集成了checkpoint机制以提供精确一次的处理语义。在具体的实现
阅读全文
摘要:转载自 huxihx,原文链接 Kafka consumer group位移重设 本文阐述如何使用Kafka自带的kafka-consumer-groups.sh脚本随意设置消费者组(consumer group)的位移。需要特别强调的是, 这是0.11.0.0版本提供的新功能且只适用于新版本con
阅读全文
摘要:转载自 huxihx,原文链接 Kafka与Flink集成 Apache Flink是新一代的分布式流式数据处理框架,它统一的处理引擎既可以处理批数据(batch data)也可以处理流式数据(streaming data)。在实际场景中,Flink利用Apache Kafka作为上下游的输入输出十
阅读全文
摘要:转载自 huxihx,原文链接 Kafka 0.11客户端集群管理工具AdminClient 很多用户都有直接使用程序API操作Kafka集群的需求。在0.11版本之前,kafka的服务器端代码(即添加kafka_2.**依赖)提供了AdminClient和AdminUtils可以提供部分的集群管理
阅读全文
摘要:转载自 huxihx,原文链接 【原创】Kafka 0.11消息设计 目录 一、Kafka消息层次设计 1. v1格式 2. v2格式 二、v1消息格式 三、v2消息格式 四、测试对比 Kafka 0.11版本增加了很多新功能,包括支持事务、精确一次处理语义和幂等producer等,而实现这些新功能
阅读全文
摘要:转载自 huxihx,原文链接 Kafka controller重设计 目录 一、Controller是做什么的 二、Controller当前设计 三、Controller组成 四、Controller当前问题 1. 需要在多线程间共享状态 2. 代码组织混乱 3. 管理类请求与数据类请求未分离 4
阅读全文
摘要:转载自 huxihx,原文链接 Kafka producer介绍 Kafka 0.9版本正式使用Java版本的producer替换了原Scala版本的producer。本文着重讨论新版本producer的设计原理以及基本的使用方法。 目录 一、基本数据结构 1. ProducerRecord 2.
阅读全文
摘要:转载自 huxihx,原文链接 Kafka消费组(consumer group) 一直以来都想写一点关于kafka consumer的东西,特别是关于新版consumer的中文资料很少。最近Kafka社区邮件组已经在讨论是否应该正式使用新版本consumer替换老版本,笔者也觉得时机成熟了,于是写下
阅读全文
摘要:转载自 huxihx,原文链接 Kafka 如何读取offset topic内容 (__consumer_offsets) 众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_off
阅读全文
摘要:转载自 huxihx,原文链接 Kafka无消息丢失配置 目录 一、Producer端二、Consumer端 Kafka到底会不会丢数据(data loss)? 通常不会,但有些情况下的确有可能会发生。下面的参数配置及Best practice列表可以较好地保证数据的持久性(当然是trade-off
阅读全文
摘要:转载自 huxihx,原文链接 Kafka如何创建topic? 目录 一、命令行部分 二、后台逻辑部分 Kafka创建topic命令很简单,一条命令足矣: 这条命令会创建一个名为test的topic,有3个分区,每个分区需分配3个副本。那么在这条命令之后Kafka又做了什么事情呢?本文将对此进行一下
阅读全文
摘要:转载自 huxihx,原文链接 Kafka副本管理—— 为何去掉replica.lag.max.messages参数 在Kafka设计解析(二)Kafka High Availability (上)文中的ACK前需要保证有多少个备份小节说到,如果一个Follower宕机,或者落后太多,Leader将
阅读全文
摘要:转载自 技术世界,原文链接 Kafka设计解析(八)- Exactly Once语义与事务机制原理 本文介绍了Kafka实现事务性的几个阶段——正好一次语义与原子操作。之后详细分析了Kafka事务机制的实现原理,并介绍了Kafka如何处理事务相关的异常情况,如Transaction Coordina
阅读全文
摘要:转载自 技术世界,原文链接 Kafka设计解析(七)- Kafka Stream 本文介绍了Kafka Stream的背景,如Kafka Stream是什么,什么是流式计算,以及为什么要有Kafka Stream。接着介绍了Kafka Stream的整体架构,并行模型,状态存储,以及主要的两种数据集
阅读全文
摘要:转载自 技术世界,原文链接 Kafka设计解析(六)- Kafka高性能架构之道 本文从宏观架构层面和微观实现层面分析了Kafka如何实现高性能。包含Kafka如何利用Partition实现并行处理和提供水平扩展能力,如何通过ISR实现可用性和数据一致性的动态平衡,如何使用NIO和Linux的sen
阅读全文
摘要:转载自 技术世界,原文链接 Kafka设计解析(五)- Kafka性能测试方法及Benchmark报告 摘要 本文主要介绍了如何利用Kafka自带的性能测试脚本及Kafka Manager测试Kafka的性能,以及如何使用Kafka Manager监控Kafka的工作状态,最后给出了Kafka的性能
阅读全文
摘要:转载自 技术世界,原文链接 Kafka设计解析(四)- Kafka Consumer设计解析 目录 一、High Level Consumer 1. Consumer Group 2. High Level Consumer Rebalance 三、Low Level Consumer 四、Cons
阅读全文
摘要:转载自 技术世界,原文链接 Kafka设计解析(三)- Kafka High Availability (下) 摘要 本文在上篇文章基础上,更加深入讲解了Kafka的HA机制,主要阐述了HA相关各种场景,如Broker failover,Controller failover,Topic创建/删除,
阅读全文
摘要:转载自 技术世界,原文链接 Kafka设计解析(二)- Kafka High Availability (上) Kafka从0.8版本开始提供High Availability机制,从而提高了系统可用性及数据持久性。本文从Data Replication和Leader Election两方面介绍了K
阅读全文
摘要:转载自 技术世界,原文链接 Kafka设计解析(一)- Kafka背景及架构介绍 本文介绍了Kafka的创建背景,设计目标,使用消息系统的优势以及目前流行的消息系统对比。并介绍了Kafka的架构,Producer消息路由,Consumer Group以及由其实现的不同消息分发方式,Topic & P
阅读全文
摘要:前言 给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括:运行日志、异常堆栈、GC日志、线程快照(threaddump/javacore文件)、堆转储快照(heapdump/hprof文件)等。经常使用适当的虚拟机监控和分析的工具可以加快我们分
阅读全文
摘要:前言 垃圾收集器(Garbage Collection)通常被成为GC,诞生于1960年MIT的Lisp语言。上一篇介绍了Java运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而执行着出栈和入栈操作,实现了内存的自动清理。因此
阅读全文
摘要:前言 对于从事C、C++程序开发的开发人员来说,在开始使用对象之前,他们都需要使用new关键字为对象申请内存空间,在使用完对象之后,也需要使用delete关键字来释放对象占用的内存空间。对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作是写匹配的delete/fre
阅读全文
摘要:摘要: 本文结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码。若有描述错误之处,欢迎指正。 目录 一、创建事务 1. 获取事务 2. 处理已经存在的事务 3. 准备事务信息 二、回滚处理 1. 回滚条件 2. 回滚处理 3. 回滚后的信患清除 三、事务提交 Transact
阅读全文
摘要:摘要: 本文结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码。若有描述错误之处,欢迎指正。 目录 一、注册 InfrastructureAdvisorAutoProxyCreator 二、获取对应class/method的增强器 1. 寻找候选增强器 2. 候选增强器中寻找
阅读全文
摘要:摘要: 本文结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码。若有描述错误之处,欢迎指正。 目录 一、创建数据表结构 二、创建对应数据表的PO 三、创建表与实体间的映射 四、创建数据操作接口 五、创建数据操作接口实现类 六 、创建Spring配置文件 七、测试 Spring
阅读全文
摘要:摘要: 本文结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码。若有描述错误之处,欢迎指正。 目录 一、processPropertyPlaceHolders属性的处理 二、根据配置属性生成过滤器 三、扫描Java文件 我们在applicationContext.xml中配置
阅读全文
摘要:摘要: 本文结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码。若有描述错误之处,欢迎指正。 目录 一、MapperFactoryBean的初始化 二、获取 MapperFactoryBean 的实例 为了使用MyBatis功能,示例中的Spring配置文件提供了两个bean
阅读全文
摘要:摘要: 本文结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码。若有描述错误之处,欢迎指正。 目录 一、SqlSessionFactoryBean的初始化 二、获取 SqlSessionFactoryBean 实例 通过Spring整合MyBatis的示例,我们感受到了Spr
阅读全文
摘要:摘要: 本文结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码。若有描述错误之处,欢迎指正。 了解了MyBatis的独立使用过程后,我们再看看它与Spring整合的使用方式,比对之前的示例来找出Spring究竟为我们做了哪些操作来简化程序员的业务开发。由于在之前示例基础上做更
阅读全文
摘要:摘要: 本文结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码。若有描述错误之处,欢迎指正。 MyBatis本是Apache的一个开源项目iBatis,2010年这个项目由Apache Software Foundation迁移到了Google Code,并且改名为MyBat
阅读全文
摘要:摘要: 本文结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码。若有描述错误之处,欢迎指正。 目录 一、获取增强器 1. 普通增强器的获取 2. 增加同步实例化增强器 3. 获取DeclareParents注解 二、寻找匹配的增强器 三、创建代理 1. 创建代理 2. 获取代
阅读全文
摘要:摘要: 本文结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码。若有描述错误之处,欢迎指正。 之前讲过Spring中的自定义注解,如果声明了自定义的注解,那么就一定会在程序中的某个地方注册了对应的解析器。我们搜索整个代码,尝试找到注册的地方,全局搜索后我们发现了在AopNam
阅读全文
摘要:摘要: 本文结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码。若有描述错误之处,欢迎指正。 我们知道,使用面向对象编程(OOP)有一些弊端,当需要为多个不具有继承关系的对象引人同一个公共行为时,例如日志、安全检测等,我们只有在每个对象里引用公共行为,这样程序中就产生了大量的
阅读全文
摘要:前言 在JDK1.7&1.8源码对比分析【集合】HashMap中我们对比分析了JDK1.7和1.8版本的HashMap源码,趁热打铁,这篇文章就来看看JDK1.7和1.8版本的ConcurrentHashMap有哪些区别。 目录 一、对比分析 1. 1.7版本 2. 1.8版本 一、对比分析 1.
阅读全文
摘要:前言 在JDK1.7&1.8源码对比分析【集合】HashMap中我们遗留了一个问题:为什么HashMap在调用resize() 方法时会出现死循环?这篇文章就通过JDK1.7的源码来分析并解释这个问题。 如下,并发场景下使用HashMap造成Race Condition,从而导致死循环,现象是CPU
阅读全文
摘要:前言 在JDK1.8源码分析【集合】HashMap文章中,我们分析了HashMap在JDK1.8中新增的特性(引进了红黑树数据结构),但是为什么要进行这个优化呢?这篇文章我们通过对比JDK1.7和1.8来分析优化的原因。 众所周知,HashMap底层是基于 数组 + 链表 的方式实现的,不过在JDK
阅读全文
摘要:上一篇讲述了Oracle的SELECT语法的执行顺序,这篇讲述MySQL的SELECT语法的执行顺序。MySQL的SELECT语法的执行顺序和Oracle的基本相同,只是增加了MySQL独有的LIMIT语法。 目录 一、SELECT语句的处理过程 1. FROM阶段 2. WHERE阶段 3. GR
阅读全文
摘要:转载自:小强斋太-Study Notes,原文链接 从join on和where执行顺序认识T-SQL查询处理执行顺序 目录 一、样例 二、SELECT语句的处理过程 1. FROM阶段 2. WHERE阶段 3. GROUP BY阶段 4. HAVING阶段 5. SELECT阶段 6. ORDE
阅读全文
摘要:转载自:Oo若离oO,原文链接 在MySQL中使用explain查询SQL的执行计划 目录 一、什么是执行计划 二、如何分析执行计划 一、什么是执行计划 要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解。 MySQL本身的功能架构分为三个部分,分别是 应用层、逻辑
阅读全文
摘要:目录 一、什么是执行计划 二、如何查看执行计划 三、如何读懂执行计划 1. 执行顺序的原则 2. 执行计划中字段解释 3. 谓词说明 4. JOIN方式 4.1 HASH JOIN(散列连接) 4.2 SORT MERGE JOIN(排序合并连接) 4.3 NESTED LOOP(嵌套循环连接) 5
阅读全文