Kafka

Kafka 初识

邮差的信 提交于 2020-11-04 00:05:08
1.Kafka 是什么? 用一句话概括一下: Apache Kafka 是一款开源的消息引擎系统。 倘若“消息引擎系统“这个词对你来说有点陌生的话,那么“消息队列“、“消息中间件”的提法想必你一定是有所耳闻的。不过说实话我更愿意使用消息引擎系统这个称谓,因为消息队列给出了一个很不明确的暗示,仿佛 Kafka 是利用队列的方式构建的;而消息中间件的提法有过度夸张“中间件”之嫌,让人搞不清楚这个中间件到底是做什么的。 像 Kafka 这一类的系统国外有专属的名字叫 Messaging System ,国内很多文献将其简单翻译成消息系统。我个人认为并不是很恰当,因为它片面强调了消息主体的作用,而忽视了这类系统引以为豪的消息传递属性,就像引擎一样,具备某种能量转换传输的能力,所以我觉得翻译成消息引擎反倒更加贴切。 2.这类系统是做什么用的?   先来个官方严肃版本的答案。   根据维基百科的定义:消息引擎系统是一组规范。企业利用这组规范在不同系统之间传递语义准确的消息,实现松耦合的异步式数据传递。 果然是官方定义,有板有眼。   如果觉得难于理解,那么可以试试我下面这个民间版: 系统 A 发送消息给消息引擎系统,系统 B 从消息引擎系统中读取 A 发送的消息。   最基础的消息引擎就是做这点事的!   不论是上面哪个版本,它们都提到了两个重要的事实: 消息引擎传输的对象是消息;

《吊打面试官》系列-消息队列基础

这一生的挚爱 提交于 2020-11-03 15:42:06
你知道的越多,你不知道的越多 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚(请允许我使用一下夸张的修辞手法)。 于是在一个寂寞难耐的夜晚,暖男我痛定思痛,决定开始写《吊打面试官》系列,希望能帮助各位读者以后面试势如破竹,对面试官进行360°的反击,吊打问你的面试官,让一同面试的同僚瞠目结舌,疯狂收割大厂Offer! 絮叨 这期本来是准备大家投票出来的哈,然后在Java基础和消息队列选一个写的,但是我一想,Java基础光是集合每种集合我都可以写好几篇了,基础都得写几个月了,那是不是可以先把短的这个消息队列写了? 我脑子灵光一闪,拍了下桌子,那就这么决定了吧! 所以就有这期了哈哈。 重要!在开始之前我想问一下,大家是喜欢我直接怼知识点用自己的语言组织的方式讲,还是这样面试场景的方式讲? 因为我发现一个很严肃的问题,我的开场和结尾要是几百篇都差不多,最后你们会不会厌倦呀? 总之这个建议对我很有用,或者你有什么写作的建议都可以加我微信悄悄跟我说。 面试开始 一个风度翩翩,穿着格子衬衣的中年男子,拿着一个满是划痕的mac向你走来,看着铮亮的头,心想着肯定是尼玛顶级架构师吧

记一次 Kafka Producer 性能调优实战

耗尽温柔 提交于 2020-11-03 14:31:05
记一次 Kafka Producer 性能调优实战 https://objcoding.com/2020/09/18/kafka-producer-performance-optimization/ 最近,遇到某个集群的生产端发送延迟特别高,而且吞吐量上不去,检查集群负载却很低,且集群机器配置非常好,网络带宽也很大,于是使用 Kafka 压测脚本进行了压测。 昨天凌晨,在生产环境进行实战调优,经过不断参数改动,现将生产者相关参数设置为以下配置: linger.ms=50 batch.size=524288 compression.type=lz4 acks=1(用户要求消息至少要发送到分区 leader) max.request.size=5242880 buffer.memory=268435456 在生产环境的一台服务器上,使用以上参数对集群进行生产发送性能压测: 从上图可以看到,使用平均 4k 大小的消息体对集群进行压测, 单个 Producer 平均吞吐量达到 2000MB/s,50w/s+ ! 作为对比,我还是使用同一台服务器,将调优参数去掉,再压一遍: 可以看到,最高的吞吐量也不过 500M/s,最低已经来到 2M/s 了。 虽然说实际客户端环境比压测环境复杂很多,但是使用压测工具已经能够证明,该集群的负载目前现在还远远没有达到瓶颈,且生产端还有待优化。

金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?

北战南征 提交于 2020-11-02 17:06:12
根据 2017 年的 DevOps 发展报告,高效能组织和低效能组织在软件交付的效率上有数量级上的差异。技术组织的软件交付能力是一种综合能力,涉及众多环节,其中发布是尤为重要的环节。 作为技术人员,大家可能听说过“滚动发布”和“蓝绿发布”等术语,但是很多人并不清楚这些术语背后的原理。本文试图总结当前主流的发布策略,每个的优劣,适用性,让开发人员特别是架构师对现代发布技术有一个更为清晰全面的认识,让大家能够根据自己的企业上下文,对发布策略做出正确的选型和实践。 一、单服务器组发布 先解释下单服务器组的概念,早先我们机器资源比较紧张,不像现在云计算和虚拟化(包括容器技术)这么发达,所以应用机器基本是预先静态分配好的(一般由运维负责分配),原来应用 A 住在这 n 台机器上,那么下次升级发布的应用 A 也住在这 n 台机器上,所以称为单服务器组发布方式。 1.1 蛮力发布 如下图所示,这种发布方式比较简单粗暴,有点像我们传统的软件升级方式,主要靠手工完成,先将老版本 V1 全部下掉,再将新版本发到机器上去。这种方式会引入服务中断(停机),在开发测试环境是可行的,但对于生产环境发布,其会直接影响用户的使用体验,这种方式一般是不建议的。 发布前 发布后 优势和适用场合 优势: 简单成本低 不足: 服务中断用户受影响,出了问题回退也慢 适用场合: 开发测试环境 非关键应用(用户影响面小)

为什么选择RocketMQ,而不是Kafka

落花浮王杯 提交于 2020-11-02 15:54:19
一个复杂的分布式系统,必然会考虑使用MQ来解决通讯解耦等问题,市面上开源的MQ越来越多,也让选择变得越来越难,比如Kafka,RabbitMQ,RocketMQ,让人看得眼花缭乱,好像每个MQ都很强大,究竟使用哪个真是无从下手;而在一次技术选型中,我们落地了RocketMQ,而不是Kafka或者其他,以下也对这次选择做一次总结,讲述以下RocketMQ和Kafka的比较。 性能 在性能方面,Kafka是优于RocketMQ的,可以达到几十万的TPS,而RocketMQ很难超过10W TPS,但是这是有提前的,提前就是Kafka的Topic或者Partition不能过多(最好不要超过64个),这是因为Kafka之所以可以高性能是因为采用了顺序写,但如果一旦Topic或者Partition变多,则变成不断的写多个文件相当于随机写,所以性能开始大幅度下降;而RocketMQ则几乎没有这个问题,及时在Topic很多的(官方说可以支持5W),也不会出现明显的性能下降,所以在需要使用很多Topic的场景下,可以选择RocketMQ,且上万的TPS也是不错的性能表现。 可靠性 可靠性方面,RocketMQ由于支持主从双同步刷盘机制,所以要强于Kafka的异步刷盘机制,虽然性能会下降,但是如果你对可靠性要求很高,推荐使用;当然如果你只是发送一些不可靠消息,如给用户发个通知,发个短信等

走不出舒适区,就是另一种上瘾

筅森魡賤 提交于 2020-11-02 14:48:47
马哥Linux运维 ID: magedu-Linux ▲长按图片识别二维码关注 马哥教育是国内顶级的 Linux 云计算、Python 全栈+自动化+爬虫+AI高薪就业技能学习平台,目前有 10 多位腾讯、百度、阿里等一线技术专家定期做 Linux 运维、Python 开发、数据挖掘、人工智能、云计算、大数据、服务架构等方面技术分享和行业交流,100000+IT 人订阅,每天都有精选技术干货文章发布。 朱小厮的博客 ID:hiddenkafka ▲长按图片识别二维码关注 著有畅销书:《深入理解Kafka》和《RabbitMQ实战指南》。公众号主要用来分享Java技术栈、Golang技术栈、消息中间件(如Kafka、RabbitMQ)、存储(如MySQL、Redis、TSDB)、通用型技术(如Linux、网络)、大数据(如Spark、Flink)以及通用型技术架构等相关的技术。 CU技术社区 ID: ChinaUnix2013 ▲长按图片识别二维码关注 ChinaUnix社区官方公众账号,不间断分享国内外最新IT运维、技术开发和开源社区相关资讯和技术交流信息,不定期联合 ChinaUnix 社区举办各类福利活动,投放各类福利,每日 ITDaily 推送给你带来当日 IT圈最新槽点、亮点。代码生活,程序人生,你想要的,这里都有。 优达学城Udacity ID:youdaxue

面试七家大厂Java岗石沉大海,最后面试官给了我些建议(附:java岗经验分享)

帅比萌擦擦* 提交于 2020-11-02 13:22:22
放年假对于程序员的我们应该是我们所期待的事,可去年的年假却让我让我慎得慌,感觉是回到了上学时的暑假。一放就是两个多月,这么长时间的闭门不出让瘦的像猴一样的我长了将近十公斤的膘,这个还是比较高兴的一件事 。可让我痛苦的是我突然的失去了工作,原因只有几点,我想具体是什么原因大家也应该能猜出来。时光飞逝 生活还的继续,在上个月都是不停的在面试,结果却都是回家等通知。 在我感到失望迷茫的时候却意外接到了美团人事的电话,让我带齐资料礼拜一去人事报道,更让我没有想到的是他顺便给我发了一些尚未整理的书籍资料 ,虽未整理内容却很全面。而我也如期的去了公司开始工作,最近利用了两个礼拜的时间才整理好那位好心面试官推荐的内容。好的东西就要分享。大致内容包括: ZooKeeper MyBatis Dubbo Redis MySQL Spring Spring Boot kafka java 并发编程 微服务 tomcat性能优化 以及开源框架 等等。 温馨提示:资料虽整理不易 可好的东西却不能私藏 必须学会分享 要让有需要的朋友大家一起进步 获取方式: 三连之后 后台私信【文档】或者查看下方即可免费获得 MyBatis 方面 什么是 Mybatis? Mybaits 的优点: MyBatis 框架的缺点: Mybaits框架适用场合: MyBatis 与 Hibernate 有哪些不同? #{}和${

微服务海量日志怎么处理,推荐你试试这款工具....

天大地大妈咪最大 提交于 2020-11-02 05:43:52
作者: 非洲羚羊 cnblogs.com/dengbangpang/p/12961593.html 背景 在企业级的微服务环境中,跑着成百上千个服务都算是比较小的规模了。在生产环境上,日志扮演着很重要的角色,排查异常需要日志,性能优化需要日志,业务排查需要业务等等。然而在生产上跑着成百上千个服务,每个服务都只会简单的本地化存储,当需要日志协助排查问题时,很难找到日志所在的节点。也很难挖掘业务日志的数据价值。 那么将日志统一输出到一个地方集中管理,然后将日志处理化,把结果输出成运维、研发可用的数据是解决日志管理、协助运维的可行方案,也是企业迫切解决日志的需求。 我们的解决方案 通过上面的需求我们推出了日志监控系统。 日志统一收集、过滤清洗。 生成可视化界面、监控,告警,日志搜索。 功能流程概览 在每个服务节点上埋点,实时采集相关日志。 统一日志收集服务、过滤、清洗日志后生成可视化界面、告警功能。 我们的架构 1、日志文件采集端我们使用filebeat,运维通过我们的后台管理界面化配置,每个机器对应一个filebeat,每个filebeat日志对应的topic可以是一对一、多对一,根据日常的日志量配置不同的策略。 除了采集业务服务日志外,我们还收集了mysql的慢查询日志和错误日志,还有别的第三方服务日志,如:nginx等。最后结合我们的自动化发布平台

微服务海量日志怎么处理,推荐你试试这款工具....

此生再无相见时 提交于 2020-11-02 05:36:58
关注我 们, 设为星标,每天7:30不见不散,架构路上与您共享 回复" 架构师 "获取资源 作者: 非洲羚羊 cnblogs.com/dengbangpang/p/12961593.html 背景 在企业级的微服务环境中,跑着成百上千个服务都算是比较小的规模了。在生产环境上,日志扮演着很重要的角色,排查异常需要日志,性能优化需要日志,业务排查需要业务等等。然而在生产上跑着成百上千个服务,每个服务都只会简单的本地化存储,当需要日志协助排查问题时,很难找到日志所在的节点。也很难挖掘业务日志的数据价值。 那么将日志统一输出到一个地方集中管理,然后将日志处理化,把结果输出成运维、研发可用的数据是解决日志管理、协助运维的可行方案,也是企业迫切解决日志的需求。 我们的解决方案 通过上面的需求我们推出了日志监控系统。 日志统一收集、过滤清洗。 生成可视化界面、监控,告警,日志搜索。 功能流程概览 在每个服务节点上埋点,实时采集相关日志。 统一日志收集服务、过滤、清洗日志后生成可视化界面、告警功能。 我们的架构 1、日志文件采集端我们使用filebeat,运维通过我们的后台管理界面化配置,每个机器对应一个filebeat,每个filebeat日志对应的topic可以是一对一、多对一,根据日常的日志量配置不同的策略。 除了采集业务服务日志外,我们还收集了mysql的慢查询日志和错误日志

敖丙8年经验读者,疫情期间面20家大厂总结

谁都会走 提交于 2020-11-01 07:20:36
本文来自一个8年大数据老兵的面试经历投稿,我完完整整的看了一遍,真的很细很细,疫情期间面试各种失败各种总结,最后拿到Offer实属不易,精神很值得大家学习 前言 我不是什么大牛,我只是一个有八年工作经验的互联网老兵,既没有非常亮眼的学历,也没有牛逼大厂的履历。 这个冬天,在孩子得病从急诊转住院的时候,我得到了年前将被优化的消息,作为家里唯一经济来源的我整个人蒙了,一时间茫然和无助差点毁了我。 最后我还是和家人如实说了,受到了他们的极大的鼓励,也找到了重新开始的勇气。 可惜这场疫情来的如此凶猛,职位少、要求高、电话面试、视频面试、在线coding、屡战屡败、屡败屡战,构成了我这两个月的常规生活。 我一开始也焦虑、茫然,甚至对自己的能力和工作经验深深怀疑。 后来经过几个好朋友的鼓励打气,也看了敖丙的很多面试文章,认真总结自己面试中不足的地方,查漏补缺,终于在这周确定了offer。(这是原话,我真没瞎加哈哈) 接下来我就我之前面过的腾讯、高德、京东、美团、饿了么、快手、字节跳动、滴滴、360金融、跟谁学、网联清算、华晨宝马、快看漫画、陌陌、脉脉等等等公司的面试题做一下总结,权当抛砖引玉,希望对大家有帮忙。 面试问题汇总 基础问题 linux和网络基础 (1)linux系统内核态和用户态是什么,有什么区别? (2)BIO、NIO、AIO都是什么,有什么区别? (3)TCP和UDP的区别?