kafka等,今天面试了

今天,参加了一个面试,被问到了为什么要使用kafka,有那种场景下需要使用jms,我突然疑惑了,实习了四个月,断断续续的接触了kafka,elasticsearch等等,居然没有想过为甚么要用这些眼花缭乱的消息系统,各种数据库。
现在,消息中间件种类繁多,而且各种大厂的也逐渐开源了,每个企业都开始二次加工自己的消息中间件以满足自己的内部需求。其实,无论什么系统,框架,最值钱的就是为了保存和应用数据,保存各种数据以应付后期的调优,统计使用等。现在由于都是出于高并发环境下, 由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达Mysql ,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。
kafka是一个发布订阅消息系统,由topic区分消息种类,每个topic中可以有多个partition,每个kafka集群有一个多个broker服务器组成,producer可以发布消息到kafka中,consumer可以消费kafka中的数据。kafka就是生产者和消费者中间的一个暂存区,可以保存一段时间的数据保证使用。
  • 优点:
  • 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
  • 高吞吐量 :即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。
  • 支持通过Kafka服务器和消费机集群来分区消息。
  • 支持Hadoop并行数据加载。
  • kafka依赖zk,kafka的集群管理,负载均衡由zk实现。
  • kafka的应用场景:
  • 日志收集:一个公司的各种应用都可以作为生产者将日志吐到kafka,再由hbase,solr,es等来消费kafka的日志作统计,查错。
  • 消息系统:解耦和生产者和消费者、缓存消息等。
  • 用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
    运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告

消息系统的使用
1.解耦:在开始开发时,可以将产出的不一定明确的数据放入消息系统,这样可以保证最大程度的解耦和性,如果事soa或者微服务架构的话,其他模块想要有交集的时候直接去访问消息系统就可以,两个系统之间会保证独立,不回产生交集。
2.缓冲:数据可以不必直接存入数据库,这样减少了数据库的压力,小程度的减少了成本。
3.异步:生产者可以直接将数据放入消息系统不必立即处理,等待其他消费者来接收和处理数据。
4.顺序保证:大多数消息队列都是顺序的,保证了数据的顺序性。

各种消息系统
kafka:快速持久化,高可用,分布式,订阅式,高吞吐量,系统开销据说是0(1),我也看不出来。。。是由zk管理的,zk会从所有节点中选出一个leader来,负载均衡估计做的也很好,每个partition中的消息是顺序消费的。
activeMq:没用过,
rabbitMq:对路由比较好吧,封装好之后由用户去配置路由,消息会达到指定的地方。
redis:一个内存数据库,kv型的,轻量级的,如果数据个体小应该会很快。

现在很迷茫,以后的java路,当时也没有去个培训




  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值