kafka是一个分布式的发布订阅消息系统(或者说是一个分布式流平台),可以实时处理大数据。我们可以把kafka比作水管,水管中可以承载水流,那么kafka可以承载数据流。kafka可以构建实时的流数据管道,来处理大量的数据流。
kafka是一个优秀的消息系统,支持持久化,更关注吞吐量,显式的分布式。
吞吐量:kafka的主要设计约束是吞吐量而不是功能。同时为发布和订阅提供高吞吐量。
持久化:kafka将消息持久化到磁盘,因此可用于批量消费,例如 ETL,以及实时应用程序。通过将数据持久化到硬盘以及复制分区防止数据丢失。
分布式:kafka是个分布式系统,易于向外扩展。所有的 producer、broker 和 consumer 都会有多个,均为分布式的,无需停机即可扩展机器。
无状态:消息被处理的状态是在 consumer 端维护,而不是由 server 端维护。当失败时能自动平衡。这样也减轻了消息系统维护消息偏移的压力。
实时和离线:支持实时和离线的场景,可以用离线和实时系统提供数据。
上图是kafka的基础架构模型。
Broker:kafa集群由一个或多个服务器实例构成,那么这些服务器实例则称为Broker,消息在Broker中通Log追加的方式进行持久化存储,并进行分区。
Topic:主题,每个消息都有对应的主题,相当于一种分类。
Partition:分区,每个主题的消息可以有多个分区,分区可以分布在一个或多个broker中,消息会通过负载均衡机制分散到不同的分区中。
Producer:生成者,一个生产者可以向一个主题发布消息。
Consumer:消费者,消费者可以从经纪人那里订阅一个或多个主题,并通过从经纪人那里提取数据来消费订阅的消息
Consumer Group:消费者组,一个消息只能被一个消费者组中的一个消费者消费。在一个消费者组中,一个消费者会对应一个分区,多出来的消费者将不会受到消息。
Replicas of partition:分区备份,kafka为了提高系统的高可用,可以设置为分区做备份。
Broker不保存订阅者的状态,由订阅者自己保存这样可以减轻服务器的压力。
无状态会导致消息的删除成为问题,broker不知道哪些消息时被消费过的,哪写没有被消费过。kafka采用基于时间的SLA(服务水平保证),消息保存一定时间(默认为7天)后会被删除。
消息订阅者可以rewind back到任意位置重新进行消费,当订阅者故障时,可以选择最小的offset(id)进行重新读取消费消息。
kafka基于文件存储。分区可以分布在多个broker上,通过分区,可以将数据日志分散到多个broker上,来避免文件大小达到单机磁盘的上限。
一个主题可以有多个分区,消息可以分布在不同的分区上。一个消费者组的多个消费者可以同时向不同的分区拉取消息,大大地提高了效率。
文章浏览阅读4.7k次。ehcache介绍Ehcache是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider(hibernate-ehcache )。当然也可以和mybatis(mybatis-ehcache)结合,它具有内存和磁盘存储,ehcache直接在jvm虚拟机中缓存,速度快,效率高;但是缓存共享麻烦,集群分布式应用不方便,如果大规模集群还是考虑用memc...
文章浏览阅读1.2k次,点赞4次,收藏25次。前端高频55道面试题汇总,包含css,js,vue等等,自己总结,如有错误或者不足的地方欢迎指正,喜欢的话谢谢给个三连,阿里卡多!!!_get post put delete面试题
文章浏览阅读9.8k次,点赞6次,收藏12次。转载自:https://www.ripjava.com/article/1294911926173728叙述在这篇快速的文章中,我们将探讨Java中计算两个日期之间差值的一些方法。解决方案使用 java.util.Date让我们首先使用Java SE API计算两个日期之间的天数:@Testpublic void test_TwoDatesDiffBeforeJava8() throws ParseException { SimpleDateFormat sdf = n_chronounit.seconds.between
文章浏览阅读3.5k次。git checkout 报错原因在一个空的目录中(/item)执行命令git init成功创建一个空的git仓库执行:git checkout -b dev成功创建一个dev分支现在想checkout到master分支执行:git checkout mster不好意思,突然报错了,是什么原因呢?错误信_$ git checkout -- zyq4.txt error: pathspec 'zyq4.txt' did not match any file
文章浏览阅读163次。通过配置/application/config/config.php文件的$config['url_suffix']值,可以为CodeIgniter生成的URL添加一个指定的文件后缀,注意不要漏了点 $config['url_suffix'] = '.html';比如这个URL:example.com/index.php/products/view/shoes,如果配置后缀为html,那么跳转..._codeigniter 路由后缀
文章浏览阅读646次。预留度数Rx表达式的推导1. sympy简介2. Holliday12.1 P的计算源码2.2 Rx表达式的推导3 HofferQ3.1 P的计算源码3.2 Rx表达式的推导1. sympy简介 sympy是Python中强大的符号运算包,可用于多种计算,如微积分运算、解方程、矩阵运算等 人工晶状体度数的计算代码参考R程序包enbrown/iol-calculations 1 安装该包的方法install.packages("devtools")library(devtools)inst_holladay 1公式怎么书写
文章浏览阅读447次。下载》找到mysql的 yum仓库MySQL :: Download MySQL Yum Repositoryhttps://dev.mysql.com/downloads/repo/yum/》点击下载》复制下载地址https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm》下载先切到要下的目录,再用..._mysq180-community-release-e19-3.noarch.rpm
文章浏览阅读2.2k次,点赞3次,收藏7次。通过编写爬虫程序,实现对空气质量指数网站上指定地区和时间段内的AQI进行获取,并实现数据可视化实验步骤:安装pyspider在anaconda prompt中使用命令行安装:若提示升级,则根据提示进行下载PhantomJS,并配置环境变量可在如下网址中进行下载https://phantomjs.org/download.html5.用命令行启动pyspider..._气道管理可视化设备可采集哪些数据
文章浏览阅读9.1k次。本文主要内容:一、 讲稿全文1. 序言与分工2. 工程师的伦理规范定义2.1 工程伦理的解释2.2 工程伦理规范3. 工程师的伦理问题分析3.1 工程设计伦理问题3.2 工程安全伦理问题3.3 工程揭发伦理问题4. 工程师的伦理规范分析4.1 工程师的权利和责任4.2 应对职业行为中的伦理冲突4.3 工程师的伦理规范5. 总结与展望5.1 总结5.2 展望二、 PPT演示三、 文档下载
文章浏览阅读6k次。刚在centos 7上安装Nacos 时启动,发现报错了,看了报错信息,是启动内存不够,我们打开启动脚本查看了一下standalone代表着单机模式运行,非集群模式Xms 是指设定程序启动时占用内存大小Xmx 是指设定程序运行期间最大可占用的内存大小-Xmn 新生代的大小我们调整下 Xms 和 Xmx 的大小 ,进入 nacos bin目录下,执行sh startup.sh -m standalone访问 ip:8848/nacos 用户名 密码都是 na..._centos nacos 修改内存
文章浏览阅读134次。好吧,我承认您看了题目以后,可能就会很嫌弃的说,不就是一个博客吗,谁不会搞啊,某浪,某讯都有博客,注册一个博客谁还不会,用得着你教我嘛。您先静一静,喝口水压压惊,我们这里是帮您拥有一个属于您自己的不会冠以某浪某讯的title并且拥有更多freestyle的博客界面的博客,有点小心动的话,就去动手做一个吧。我和大家一起搭建博客平台,并发现一些小的技巧来丰富..._云计算搭建个人博客
文章浏览阅读961次。通过snd_soc_register_card来注册card,即注册整个machine driver.此函数接收一个参数 snd_soc_card:/* SoC card */struct snd_soc_card { const char *name; const char *long_name; const char *driver_name; ..._snd_soc_register_card