Kafka是高吞吐低延迟的高并发.高性能的消息中间件,在大数据领域有极为广泛的运用.配置良好的Kafka集群甚至可以做到每秒几十万.上百万的超高并发写入. 那么Kafka到底是如何做到这么高的吞吐量和性能的呢?这篇文章我们来一点一点说一下. 一.页缓存技术 + 磁盘顺序写 首先Kafka每次接收到数据都会往磁盘上去写,如下图所示: 那么在这里我们不禁有一个疑问了,如果把数据基于磁盘来存储,频繁的往磁盘文件里写数据,这个性能会不会很差?大家肯定都觉得磁盘写性能是极差的. 没错,要是真的跟上面那个图…
一.性能调优系列 1.Tomcat性能调优 JVM参数调优: -Xms 表示JVM初始化堆的大小, -Xmx表示JVM堆的最大值.这两个值的大小一般根据需要进行设置. 当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃. 因此- -般建议堆的最大值设置为可用内存的最大值的80%. 在catalina.bat中,设置JAVA _0PTS='-Xms256m-Xmx512m',表示初始化内存为256MB,可以使用的最大内存512MB. 2.JVM性能调优 Java类加载…
本期内容包括 JUC多线程并发.JVM和GC等目前大厂笔试中会考.面试中会问.工作中会用的高频难点知识.斩offer.拿高薪.跳槽神器,对标阿里P6的<尚硅谷_互联网大厂高频重点面试题(第2季)>发布.本套课程总结分析了2019年大厂互联网公司常见常考的技术点,通过对40多个题目共计120集视频详细全面的讲解,让大家深刻掌握.扎实吃透当前的主流Java高级技术. NoSQL数据库Redis 消息中间件MQ JUC多线程及高并发并发和并行有什么区别并发:多个线程去访问同一个资源并行:各种事情同时…
项目中的MQ: #rabbitmq spring.rabbitmq.host=127.0.0.1 主机 spring.rabbitmq.port=5672 端口 spring.rabbitmq.username=guest 用户名 spring.rabbitmq.password=guest 密码 spring.rabbitmq.virtual-host=/ #\u6D88\u8D39\u8005\u6570\u91CF spring.rabbitmq.listener.simple.concu…
福哥答案2020-05-25: 应用场景:解耦.异步.削峰.区别如下:特性 ActiveMQ RabbitMQ RocketMQ Kafka单机吞吐量 万级,比 RocketMQ.Kafka 低一个数量级 同 ActiveMQ 10 万级,支撑高吞吐 10 万级,高吞吐,一般配合大数据类的系统来进行实时数据计算.日志采集等场景topic 数量对吞吐量的影响 topic 可以达到几百/几千的级别,吞吐量会有较小幅度的下降,这是 RocketMQ 的一大优势,在同等机器下,可以支撑大量的 topic…
阿里太注重原理了:阿里问kafka如何实现高并发存储-如何找到一条需要消费的数据,kafka用了稀疏索引的方式,使用了二分查找法,其实很多索引都是二分查找法  二分查找法的时间复杂度:O(logn) redis,kafka,B+树的底层都采用了二分查找法 参考:二分查找法 redis的索引底层的 跳表原理 实现 聊聊Mysql索引和redis跳表 ---redis的跳表原理 时间复杂度O(logn)(阿里) 参考:二分查找法 mysql索引原理:一步步分析为什么B+树适合作为索引的结构 以及索引…
1.为什么MQ能解决高并发环境下的消息堆积问题? MQ消息如果堆积,消费者不会立马消费所有的消息,不具有实时性,所以可以解决高并发的问题. 性能比较好的消息中间件:Kafka.RabbitMQ,RocketMQ. 2.什么情况下会产生消息丢失的现象? 消息队列满了的情况下. 3.如何解决消息丢失的问题? (1)生产者可以采用重试机制.因为消费者会不停的消费消息,可以重试将消息放入队列. 如果还是不行,可以将消息记录到数据库,后期做补偿.(不太推荐,不方便) (2)死信队列,可以理解为备胎.(推荐…
消息队列已经逐渐成为分布式应用场景.内部通信.以及秒杀等高并发业务场景的核心手段,它具有低耦合.可靠投递.广播.流量控制.最终一致性 等一系列功能. 无论是 RabbitMQ.RocketMQ.ActiveMQ.Kafka还是其它等,都有的一些基本原理.术语.机制等,总结分享出来,希望大家在使用消息队列技术的时候能够快速理解. 1. 消息生产者.消息者.队列 消息生产者Producer:发送消息到消息队列 消息消费者Consumer:从消息队列接收消息. Broker:概念来自与Apache A…
前言 纵观几年来的Java面试题,你会发现每家都差不多.你仔细观察就会发现,HashMap的出现几率未免也太高了吧!连考察的知识点都一样,什么hash碰撞啊,并发问题啊!再比如JVM,无外乎考内存结构,GC算法等!因此,如果是为了面试,完全是有套路可以准备的!记住,基础再好,也架不住面试官天马行空的问,所以刷面试题还是很有必要的! 1.Map 的底层结构?(HashMap) 评注:老题目了,各位面试的人员必须熟记! 回答:Map是以键值对来存储对象的,它的底层实际上是数组和链表来组成的,经典的一…
面试题: Nginx 是如何实现并发的?为什么 Nginx 不使用多线程?Nginx常见的优化手段有哪些?502错误可能原因有哪些? 面试官心理分析 主要是看应聘人员的对NGINX的基本原理是否熟悉,因为大多数运维人员多多少少都懂点NGINX,但是真正其明白原理的可能少之又少.明白其原理,才能做优化,否则只能照样搬样,出了问题也无从下手. 懂皮毛的人,一般会做个 Web Server,搭建一个 Web 站点;初级运维可能搞个 HTTPS .配置一个反向代理; 中级运维定义个 upstream.写…