kafka从入门到实践

kafka从入门到实践_第1张图片

题图:pixabay

上周在公上周在公司做了一次内部分享,关于kafka科普相关的。总结输出一下:

kafka从入门到实践_第2张图片

kafka 是什么?

开源的消息引擎系统。流处理平台。我们说的更多的是"消息队列"。

流处理是什么?

流是数据。处理是动作。流处理就是不断对数据进行结果计算的动作。它的适用场景更多的是:

  • 监控告警

  • 日志流处理

  • BI模型训练

  • ...

kafka从入门到实践_第3张图片

我们常说的mq是什么?

message queue。消息队列

消息即数据。队列即存放消息的容器。那种先进先出的数据结构,大家应该再熟悉不过了。

那么它的本质是什么?

发-存-收

kafka从入门到实践_第4张图片

kafka 在mq中的优劣?

引用自 mq对比选型

特性 ActiveMQ RabbitMQ RocketMQ Kafka
单机吞吐量 万级,吞吐量比RocketMQ和Kafka要低一个数量级 万级,吞吐量比RocketMQ和Kafka要低一个数量级 十万级,RocketMQ也是可以支撑高吞吐的一种MQ 十万级别,Kafka最大优点就是吞吐量大,一般配合大数据类的系统来进行实时数据计算、日志采集等场景
Topic数量对吞吐量的影响 - - Topic可以达到几百、几千个的级别,吞吐量会有小幅度的下降。这是RocketMQ的一大优势,可在同等数量机器下支撑大量的Topic Topic从几十个到几百个的时候,吞吐量会大幅下降。所以在同等机器数量下,Kafka尽量保证Topic数量不要过多。如果支撑大规模Topic需要增加更多的机器
时效性 ms级 微秒级,这是rabbitmq的一大特点,延迟是最低的 ms级 延迟在ms级以内
可用性 高,基于主从架构实现可用性 高,基于主从架构实现可用性 非常高,分布式架构 非常高,Kafka是分布式的,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用
消息可靠性 有较低的概率丢失数据 - 经过参数优化配置,可以做到零丢失 经过参数配置,消息可以做到零丢失
功能支持 MQ领域的功能及其完备 基于erlang开发,所以并发性能极强,性能极好,延时低 MQ功能较为完备,分布式扩展性好 功能较为简单,主要支持加单MQ功能
优势 非常成熟,功能强大,在业内大量公司和项目中都有应用 erlang语言开发,性能极好、延时很低,吞吐量万级、MQ功能完备,管理界面非常好,社区活跃;互联网公司使用较多 接口简单易用,阿里出品有保障,吞吐量大,分布式扩展方便、社区比较活跃,支持大规模的Topic、支持复杂的业务场景,可以基于源码进行定制开发 超高吞吐量,ms级的时延,极高的可用性和可靠性,分布式扩展方便
劣势 偶尔有较低概率丢失消息,社区活跃度不高 吞吐量较低,erlang语音开发不容易进行定制开发,集群动态扩展麻烦 接口不是按照标准JMS规范走的,有的系统迁移要修改大量的代码,技术有被抛弃的风险 有可能进行消息的重复消费
应用 主要用于解耦和异

你可能感兴趣的:(服务端,中间件,kafka)