• 初识kafka


    初识kafka心中有太多的疑惑,什么是kafka ? 它是用来做什么的 ?

    Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。
    简单地说,Kafka就相比是一个邮箱,生产者是发送邮件的人,消费者是接收邮件的人,Kafka就是用来存东西的,只不过它提供了一些处理邮件的机制。

    一、Kafka的优势如下:

           高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒;

           可扩展性:kafka集群支持热扩展;

           持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;

           容错性:允许集群中节点故障(若副本数量为n,则允许n-1个节点故障);

           高并发:支持数千个客户端同时读写。

    二、kafka机制

      1) 消息传输流程

      

      Producer即生产者,向Kafka集群发送消息,在发送消息之前,会对消息进行分类,即Topic,上图展示了两个producer发送了分类为topic1的消息,另外一个发送了topic2的消息。

      Topic即主题,通过对消息指定主题可以将消息分类,消费者可以只关注自己需要的Topic中的消息

      Consumer即消费者,消费者通过与kafka集群建立长连接的方式,不断地从集群中拉取消息,然后可以对这些消息进行处理。

      从上图中就可以看出同一个Topic下的消费者和生产者的数量并不是对应的。

      2) kafka服务器消息存储策略

      谈到kafka的存储,就不得不提到分区,即partitions,创建一个topic时,同时可以指定分区数目,分区数越多,其吞吐量也越大,但是需要的资源也越多,同时也会导致更高的不可用性,kafka在接收到生产者发送的消息之后,会根据均衡策略将消息存储到不同的分区中。

     

       在每个分区中,消息以顺序存储,最晚接收的的消息会最后被消费。

      3) 与生产者的交互

      

       

        生产者在向kafka集群发送消息的时候,可以通过指定分区来发送到指定的分区中

        也可以通过指定均衡策略来将消息发送到不同的分区中

        如果不指定,就会采用默认的随机均衡策略,将消息随机的存储到不同的分区中

      4)与消费者的交互

      

        在消费者消费消息时,kafka使用offset来记录当前消费的位置

        在kafka的设计中,可以有多个不同的group来同时消费同一个topic下的消息,如图,我们有两个不同的group同时消费,他们的的消费的记录位置offset各不项目,不互相干扰。

        对于一个group而言,消费者的数量不应该多余分区的数量,因为在一个group中,每个分区至多只能绑定到一个消费者上,即一个消费者可以消费多个分区,一个分区只能给一个消费者消费

        因此,若一个group中的消费者数量大于分区数量的话,多余的消费者将不会收到任何消息。

    三、Kafka适合以下应用场景:

           日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer;

           消息系统:解耦生产者和消费者、缓存消息等;

            用户活动跟踪:kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后消费者通过订阅这些topic来做实时的监控分析,亦可保存到数据库;

           运营指标:kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告;

           流式处理:比如spark streaming和storm。

      
     
     
     
    kafka收到的数据又存在哪里?  如何查历史接收的数据?
     
     


    参考地址:
    https://www.jianshu.com/p/6ac4dcfcdccf
    https://blog.csdn.net/u012129558/article/details/80065869
    https://www.cnblogs.com/flaming/p/11304278.html
     
  • 相关阅读:
    学习ExtJS(十一) accordion布局
    学习ExtJS(十) form布局
    使用PS保存PDF为图片(JPG)
    问题12:能否说:“电路交换和面向连接是等同的,而分组交换和无连接是等同的”? 答:不行。这在概念上是很不一样的。这点可举例说明如下。
    使用matlab判断CDMA接收码片
    问题115:什么是“无缝的”、“透明的”和“虚拟的”?
    百度域名信息
    问题110:有这样的说法:习惯上,人们都将网络的“带宽”作为网络所能传送的“最高数据率”的同义语。这样的说法有何根据?
    问题111:有时可听到人们将“带宽为10 Mb/s的以太网”说成是“速率(或速度)为10 Mb/s的以太网”或“10兆速率(或速度)的以太网”。试问这样的说法正确否?
    Tomcat中显示目录的配置
  • 原文地址:https://www.cnblogs.com/JoeYD/p/13962313.html
Copyright © 2020-2023  润新知