Streams

最简单流处理引擎——Kafka Streams简介

狂风中的少年 提交于 2019-11-29 06:03:28
Kafka在0.10.0.0版本以前的定位是分布式,分区化的,带备份机制的日志提交服务。而kafka在这之前也没有提供数据处理的顾服务。大家的流处理计算主要是还是依赖于Storm,Spark Streaming,Flink等流式处理框架。 Storm,Spark Streaming,Flink流处理的三驾马车各有各的优势. Storm低延迟,并且在市场中占有一定的地位,目前很多公司仍在使用。 Spark Streaming借助Spark的体系优势,活跃的社区,也占有一定的份额。 而Flink在设计上更贴近流处理,并且有便捷的API,未来一定很有发展。 但是他们都离不开Kafka的消息中转,所以Kafka于0.10.0.0版本推出了自己的流处理框架,Kafka Streams。Kafka的定位也正式成为Apache Kafka® is *a distributed streaming platform,*分布式流处理平台。 实时流式计算 近几年来实时流式计算发展迅速,主要原因是实时数据的价值和对于数据处理架构体系的影响。实时流式计算包含了 无界数据 近实时 一致性 可重复结果 等等特征。 a type of data processing engine that is designed with infinite data sets in mind 一种考虑了无线数据集的数据处理引擎

java8简短教程(持续更新含部分9,10,11)

给你一囗甜甜゛ 提交于 2019-11-28 23:19:26
声明:一方面提升下英文水平,一方面重温下java各版本新特性,版权归原作者所有 ,除了翻译也会加自己的东西。水平有限,请理性查阅 Modern Java - A Guide to Java 8 时髦的Java -java 8 参考手册 This article was originally posted on my blog . 这篇文章最初发表在 我的博客 . You should also read my Java 11 Tutorial (including new language and API features from Java 9, 10 and 11). **你也可以翻阅我的[java11 教程](( https://winterbe.com/posts/2018/09/24/java-11-tutorial/ ) (包含java9,10,11的新语言和api特性) Welcome to my introduction to Java 8 . This tutorial guides you step by step through all new language features. Backed by short and simple code samples you'll learn how to use default interface methods,

我挖掘Kafka底层原理!发现了它火爆宇宙的3个真相

痞子三分冷 提交于 2019-11-28 22:20:29
目前市面上各种中间件层出不穷,我们在做具体的选型时难免会纠结,在这里阐述点粗浅的看法,其实每个中间件在其设计上,都有其独有的特点或优化点,这些恰好应该是我们所关注的,这样才能做到物尽其用,将其特性发挥到最大;同时还要了解它们各自的劣势,这主要为了避坑。各种中间件就像是积木,我们能做的,就是选择合适形状的积木,搭出需要的房子。 不得不说Kafka这块积木,既能做消息中间件削峰解耦,又能做实时流处理,数据业务两手抓,真可谓上得厅堂,下得厨房。所以Kafka系列的第一篇,想先从它的应用场景分别出发,说说是哪些技术和原理支撑了它的技术特性。 Kafka核心思想概括 所有的消息以“有序日志“的方式存储,生产者将消息发布到末端(可理解为追加),消费者从某个逻辑位按序读取。 【场景一】消息中间件 在选择消息中间件时,我们的主要关注点有:性能、消息的可靠性,顺序性。 1.性能 关于Kafka的高性能,主要是因为它在实现上利用了操作系统一些底层的优化技术,尽管作为写业务代码的程序员,这些底层知识也是需要了解的。 【优化一】零拷贝 这是Kafka在消费者端的优化,我们通过两张图来比较一下传统方式与零拷贝方式的区别: 传统方式: 零拷贝方式: 终极目标:如何让数据不经过用户空间? 从图中可看出,零拷贝省略了拷贝到用户缓冲的步骤,通过文件描述符,直接从内核空间将数据复制到网卡接口。 【优化二】顺序写入磁盘

Kafka实战(五) - Kafka的秘技"坂本"之争

陌路散爱 提交于 2019-11-28 19:05:27
只有顺应版本,才能成就王者不败神话 也是能否用好Kafka的关键。 不论是哪种Kafka,本质上都基于core Apache Kafka 那就来说说Apache Kafka版本号的问题 1 缘何"在乎"你这版本号 直接使用最新版本不就好了吗? 当然了!这的确是一种有效策略,这种策略并非在任何场景下都适用 如果不了解各个版本之间的差异和功能变化,怎么能够准确地评判某Kafka版本是不是满足你的业务需求呢? 因此在深入学习Kafka之前,花些时间搞明白版本演进,实际上是非常划算的一件事。 2 版本的命名 当前Apache Kafka已经更迭至2.3 很多人对于Kafka的版本命名理解存在歧义 在官网上下载Kafka时,会看到这样的版本: 于是有些同学就会纳闷,难道Kafka版本号不是2.11或2.12吗? 并不呀,前面的版本号是编译Kafka源代码的Scala编译器的版本。Kafka服务器端的代码完全由Scala语言编写,Scala同时支持面向对象编程和函数式编程,用Scala写成的源代码编译之后也是普通的“.class”文件,因此我们说Scala是JVM系的语言. > 事实上目前Java新推出的很多功能都是在不断向Scala语言靠近,比如Lambda表达式、函数式接口、val变量等 > Kafka新版客户端代码完全由Java语言编写,于是有些人展开了“Java VS Scala

Kafka快速入门

谁说我不能喝 提交于 2019-11-27 07:52:01
参考官网: http://kafka.apache.org/quickstart 一、下载Kafka 官网下载地址 http://kafka.apache.org/downloads 截至2019年7月8日 最新版本为 2.3.0 2.12为编译的scala版本 2.3.0为kafka版本 Scala 2.12 - kafka_2.12-2.3.0.tgz ( asc , sha512 ) 解压 > tar -xzf kafka_2.12-2.3.0.tgz > cd kafka_2.12-2.3.0 二、启动服务 要先启动zookeeper kafka内置了一个 也可以不用 > bin/zookeeper-server-start.sh config/zookeeper.properties [2013-04-22 15:01:37,495] INFO Reading configuration from: config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig) ... > bin/kafka-server-start.sh config/server.properties [2013-04-22 15:01:47,028] INFO Verifying

Java 8 Strem基本操作

六眼飞鱼酱① 提交于 2019-11-27 01:02:06
本文提供了有关Java 8 Stream的深入概述。当我第一次读到的Stream API,我感到很困惑,因为它听起来类似Java I/O的 InputStream , OutputStream 。但Java 8 Stream是完全不同的东西。Streams是 Monads ,因此在为Java提供函数式编程方面发挥了重要作用: 在函数式编程中,monad是表示定义为步骤序列的计算的结构。具有monad结构的类型定义链操作的含义,或将该类型的函数嵌套在一起。 本文详解如何使用Java 8 Stream以及如何使用不同类型的可用流操作。您将了解处理顺序以及流操作的顺序如何影响运行时性能。并对更强大的 reduce , collect , flatMap 流操作详细介绍。 如果您还不熟悉Java 8 lambda表达式,函数接口和方法引用,那么您可能需要了解Java 8。 Stram如何工作 Stream表示一系列元素,并支持不同类型的操作以对这些元素执行计算: List<String> streams = Arrays.asList("a1", "a2", "b1", "c2", "c1"); streams .stream() .filter(s -> s.startsWith("c")) .map(String::toUpperCase) .sorted() .forEach