kafka基本信息 1、基本信息 1)Kafka组成:zk里面存储broker信息 消费者信息 唯独没有生产者信息。 2)搭建多少台Kafka:2(生产者峰值生产速率 * 副本/100)+1 =3 2 * ( 生产者峰值生产速率* 2/100)+1=3 =>生产者峰值生产速率<50m/s 50m/s*60秒=3g 3)副本数:2个居多、3个 好处:提高可靠性;坏处:增加了网络IO...
垃圾回收机制策略 垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。标记清除算法概念该算法有两个阶段。1. 标记阶段:找到所有可访问的对象,做个标记2. 清除阶段:遍历堆,把未被标记的对象回收应用场景该算法一般应用于老年代,因为老年代的对象生命周期比较长。优缺点标记清除算法的优点和缺点1. 优点- 是可以解决循环引用的问...
java中String、StringBuffer和StringBuilder的区别 java中String、StringBuffer和StringBuilder的区别java中用于处理字符串常用的有三个类:1、java.lang.String2、java.lang.StringBuffer3、java.lang.StrungBuilder三者共同之处:都是final类,不允许被继承,主要是从性能和安全性上考虑的,因为这几个类都是经常被使用着,且考虑到防止其中的参数被参数修改影响到其他的应用。StringBuffer是线程安全,可以不需要额外的同步用于多线程中;Strin
Elasticsearch分片设置 es number_of_shards和number_of_replicas 1、分片是什么?一个索引可以存储超出单个节点硬件限制的大量数据。比如,一个具有10亿文档的索引占据1TB的磁盘空间,而任一节点都没有这样大的磁盘空间;或者单个节点处理搜索请求,响应太慢。为了解决这个问题,Elasticsearch提供了将索引划分成多份的能力,每一份就是一个分片。当你创建一个索引的时候,你可以指定你想要的分片的数量。每个分片本身也是一个功能完善并且独立的"索引",这个"索引"可以被放置到集群中的任何节点上。2、分片为什么重要?分片之所以重要,主要有两方面的原因:(1)允许
消息中间件对比 Kafka采用拉取(Pull)方式消费消息,吞吐量相对更高,适用于海量数据收集与传递场景,例如日志采集和集中分析。RabbitMQ在吞吐量方面略有逊色,但支持更多的消息队列功能。RocketMQ出自 阿里公司的开源产品,用 Java 语言实现,在设计时参考了 Kafka,并做出了自己的一些改进。在阿里集团被广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog分发等场景。为什么使用消息队列其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景
zookeeper节点类型详解 今天小编就为大家分享一篇关于zookeeper节点类型详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧1)Znode有两种类型:短暂(ephemeral):客户端和服务器端断开连接后,创建的节点自己删除 持久(persistent):客户端和服务器端断开连接后,创建的节点不删除2)Znode有四种形式的目录节点(默认是persistent )(1)持久化目录节点(PERSISTENT)客户端与zookeeper断开连接后,该节点依旧存..
单个索引与联合索引 联合索引和单个索引的区别:如果我们创建了(area, age,salary)的复合索引,那么其实相当于创建了:(area,age,salary),(area,age)、(area)三个索引,这被称为最佳左前缀特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。例:select * from test where area='11'select * from test where area='11' and age=1select * from test
Redis缓存击穿、穿透、雪崩解决办法 1、缓存处理流程接收到查询数据请求时,优先从缓存中查询,若缓存中有数据,则直接返回,若缓存中查不到则从DB中查询,将查询的结果更新到缓存中,并返回查询结果,若DB中查不到,则返回空数据 Redis 缓存处理流程.png2、缓存穿透当缓存与数据库中都不存在该数据时,由于当数据库查询不到数据就不会写入缓存,这个时候如果用户不断的恶意发起请求,就会导致这个不存在的数据每...
SpringBoot 全局异常捕获 首先还是Maven的相关依赖: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <maven.compiler.source>1.8</maven.compiler.source>
Redis持久化存储 为什么要做持久化存储?持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的丢失,因为当服务器关机等一些异常情况都会导致存储在内存中的数据丢失。持久化存储分类在 Redis 中,持久化存储分为两种。一种是 aof 日志追加的方式,另外一种是 rdb 数据快照的方式。RDB持久化存储什么是RDB持久化存储RDB持久化存储即是将redis存在内存中的数据以快照的形式保...
flink-watermark 概念流处理从事件产生,到流经source,再到operator,中间是有一个过程和时间的,虽然大部分情况下,流到operator的数据都是按照事件产生的时间顺序来的,但是也不排除由于网络、分布式等原因,导致乱序的产生,所谓乱序,就是指Flink接收到的事件的先后顺序不是严格按照事件的EventTime顺序排列的。流处理从事件产生,到流经source,再到operator,中间是有一个过程和时间的,虽然大部分情况下,流到operator的数据都是按照事件产生的时间顺序来的,但是也不排除由...
蓝鲸-监控告警 目前覆盖的监控对象包含主机层、组件层、服务拨测,对于无法开箱即用的监控对象可以使用脚本采集、日志采集以及组件二次开发,通过仪表盘实现自定义可视化视图呈现,基于iPaaS的产品设计(关联CMDB、作业执行、数据平台等)天然打破"竖井式"产品设计理念,依托于故障自愈实现告警的无人值守!主机监控支持以主机为单元的基础性能指标查看、告警策略配置、告警记录等功能。指标支持CPU、内存、磁盘、网络、进...
CentOS 7 开放防火墙端口 命令 最近公司新的server要求用CentOS7, 发现以前CentOS 6 系列中的 iptables 相关命令不能用了,查了下,发现Centos 7使用firewalld代替了原来的iptables。使用方法如下:>>> 关闭防火墙systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动...
CentOS7.5安装GitLab 一、GitLab英文版安装 1.下载gitlab安装包,然后安装wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm/download.rpmyum install policycoreutils-python 2.下载安装python 3.安装gitlabrpm -ivh.
rabbitmq的延迟消息队列实现 第一部分:延迟消息的实现原理和知识点使用RabbitMQ来实现延迟任务必须先了解RabbitMQ的两个概念:消息的TTL和死信Exchange,通过这两者的组合来实现上述需求。消息的TTL(Time To Live)消息的TTL就是消息的存活时间。RabbitMQ可以对队列和消息分别设置TTL。对队列设置就是队列没有消费者连着的保留时间,也可以对每一个单独的消息做单独的设置。超过了这个时间,我们认为这个消息就死了,称之为死信。如果队列设置了,消息也设置了,那么会取小的。所以一个消息如果被路由到不
linux命令用来查看日志关键字 1、查看日志前 n行: cat 文件名 | head -n 数量 demo: cat test.log | head -n 200 # 查看test.log前200行2、查看日志尾 n行: cat 文件名 | tail -n 数量 demo: cat test.log | tail -n 200 # 查看test.log倒数200行3、根据关键词查看日志 并返回关键词所在行: 方法一:cat 路径/文件名 | grep 关键词 ...
Netty原理-Reactor 1.原生 NIO 存在的问题NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、 SocketChannel、ByteBuffer等。 需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须 对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。 开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥 塞和异常流的处理等等。 JDK NI
BIO、NIO、AIO的区别和原理 一、IO模型的知识JAVA BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程并处理,如果这个连接不做任何事情会造成不必要的开销,当然可以通过线程池机制改善JAVA NIO:同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有IO请求时才启动一个线程进行处理JAVA AIO(NIO2):异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应
Java零拷贝 1、摘要零拷贝的“零”是指用户态和内核态间copy数据的次数为零。传统的数据copy(文件到文件、client到server等)涉及到四次用户态内核态切换、四次copy。四次copy中,两次在用户态和内核态间copy需要CPU参与、两次在内核态与IO设备间copy为DMA方式不需要CPU参与。零拷贝避免了用户态和内核态间的copy、减少了两次用户态内核态间的切换。零拷贝可以提高数据传输效率,但对于需要在用户传输过程中对数据进行加工的场景(如加密)就不适合使用零拷贝。使用Zero Copy
《RabbitMQ》如何保证消息不被重复消费 一 重复消息为什么会出现消息重复?消息重复的原因有两个:1.生产时消息重复,2.消费时消息重复。1.1 生产时消息重复由于生产者发送消息给MQ,在MQ确认的时候出现了网络波动,生产者没有收到确认,实际上MQ已经接收到了消息。这时候生产者就会重新发送一遍这条消息。生产者中如果消息未被确认,或确认失败,我们可以使用定时任务+(redis/db)来进行消息重试。@Component@Slf4Jpublic class SendMessage { @Autowired pr