自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(294)
  • 资源 (2)
  • 收藏
  • 关注

转载 redis集群ERROR: Error installing redis-4.2.1.gem: redis requires Ruby version >= 2.4.0

错误代码:ERROR: Error installing redis-4.2.1.gem:redis requires Ruby version >= 2.4.0.首先我们查看当前的ruby的版本ruby -v发现为2.0版本。所以需要升级到2.4以上版本安装新的rubygpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 94558F59curl -L get.rvm.io | bash -s stable上面可能会出

2022-02-08 18:29:48 693

原创 redis高可用实战(主从、哨兵、集群)

文章目录redis主从(1)在所有机器上安装redis验证主从服务redis主从下载redis安装文件地址:redis5.0.14下载地址(1)在所有机器上安装redis//1、上传离线包至指定路径cd /usr/software/rz //2、解压文件tar -zxvf redis-5.0.14.tar.gz //3、安装redis编译环境gccyum install -y gcc//4、 安装redismake && make install//5、将

2022-02-07 16:03:34 568

转载 虚拟机中CentOS7 could not reslove host 问题解决方法

解决方案:进入目录进入目录network-scriptscd /etc/sysconfig/network-scripts用vi编辑ifcfg-ens33文件,将ONBOOT属性更改为yesONBOOT=yes重启即可解决问题

2022-02-07 14:47:59 1458

原创 cpu利用率高排查

1、首先使用top命令找到占用Cpu高的进程top相关的操作默认按照CPU利用率排序2、确定进程对应的相关程序:ps 1149623、查看该进程相应的线程的详细数据top -Hp 114962确定该进程中是哪个线程占用的cpu最高4、获取线程十六进制pidprintf "%x\n" 1172145、获取线程状态信息,看是否存在报错jstack 117214|grep -A 30 1c9de若无相关报错信息,则查看相关项目的日志信息和jvm情况查看堆内存使用情况j

2022-02-03 19:03:18 2414

转载 eureka定义

eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。Eureka包含两个组件:Eureka Server和Eureka Client。Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服

2022-01-26 16:56:47 75

原创 为什么要使用注册中心

网上各种介绍注册中心的文章,但是都是只告诉你如何去用它,我们按照方法也一直在用!但是却少有人思考,我们为什么要使用注册中心。接下来我们就来探讨下,为什么要使用注册中心,关于这篇文章,我也是在dubbo的官网(https://dubbo.apache.org/zh/docs/v2.7/user/preface/requirements/)找到的答案。下面我们就来聊一聊;首先我们需要知道互联网架构的一个发展历史:互联网架构发展历史:随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分

2022-01-26 16:19:25 1643

转载 Linux日志筛选

我们在排查问题的的时候经常会用到日志排查,但是可能会经常忘记,下面就总结下:tail -n 10 test.log 查询日志尾部最后10行的日志;tail -n +10 test.log 查询10行之后的所有日志;head -n 10 test.log 查询日志文件中的头10行日志;head -n -10 test.log 查询日志文件除了最后10行的其他所有日志;情况1:需要按照关键字过滤日志文件,并显示日志所在对应的行数cat -n trace.log |grep

2022-01-23 21:57:58 1689

原创 SpringBoot与SpringCloud的版本对应详细版

我们在搭建微服务项目的时候会,经常要关注SpringBoot和Springcloud的版本对应关系,这里有官网版本对应地址共大家参考https://start.spring.io/actuator/info{ "git": { "branch": "af724b5c27a7317a2f111739cf810d9cb526c1e0", "commit": { "id": "af724b5", "time": "2022-01-07T09:27:13Z" } }, "build

2022-01-08 15:22:40 4053

原创 kafka位移提交问题

自动提交(系统默认值为5秒,缩短位移提交间隔,可以更好防止数据丢失和重复消费问题)// 自动提交,默认trueprops.put("enable.auto.commit", "true");// 设置自动每1s提交一次props.put("auto.commit.interval.ms", "1000");自动提交是在轮询中进行,消费者每次轮询时都会检查是否提交该偏移量。这种情况就会发生重复消费和丢失消息的情况。手动提交(consumer.commitSync())// 关闭自动提交pr

2022-01-04 12:49:54 820

原创 kafka生产者、消费者参数

生产者bootstrap.servers该属性指定broker的地址清单,地址的格式为host:port。清单里不需要包含所有的broker地址,生产者会从给定的broker里查询其他broker的信息。不过最少提供2个broker的信息,一旦其中一个宕机,生产者仍能连接到集群上。格式如下:192.168.40.150:9092,192.168.40.151:9092,192.168.40.152:9092key.serializerkey值的序列化方式,常见的序列化方式有StringSerial

2021-12-30 12:41:39 1254

转载 优雅停机(SpringBoot 2.3.0以上新特性)

我们在更新迭代是,可能需要手动发包,在停止包时,切记不要使用(kill -9)强制杀死进程,因为强制杀死进程的话,一些正在执行的请求,或者后台正在处理的逻辑,便会终止。1、例如正准备批量数据写入数据库,被强制杀死(该部分数据丢失)2、kafka消费正在提交位移1000(上次位移500),强行停止后位移提交失败,数据已经消费了,下次就会出现重新消费500-1000之间的数据。那么在不是强制结束进程的情况下,我们如何保证项目中待执行的任务,执行完毕后杀死进程啦。实现这个功能的需求,专业术语为优雅停机如

2021-12-28 16:30:34 1332

原创 kafka中Broker常用配置

broker.id解释:每个Broker的唯一标识,默认为0 建议采用形式host1.xx.com,host2.xx.comlisteners解释:监听端口,默认9092,如果使用1024以下端口,需要使用root权限启动Kafka。num.network.threads解释:服务器用于接收来自网络的请求并向网络发送响应的线程数 默认值为3num.io.threads解释:服务器用于处理I/O请求(可能包括磁盘I/O)的线程数 默认值8socket.send.buffer.bytes解释

2021-12-28 12:33:59 983

原创 kafka日志存储

首先我们来看下kafka消息的储存情况:Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又可以分成几个不同的partition(每个topic有几个partition是在创建topic时指定的),每个partition存储一部分Message。借用官方的一张图,可以直观地看到topic和partition的关系。此外我们知道kafka是顺序的读写的。Partition是以文件的形式存储在文件系统当中,例如创建一个topic名为test-to

2021-12-24 13:15:09 402

原创 kafka集群中zookeeper的作用

1、Broker注册Broker是分布式部署并且相互之间相互独立,但是需要有一个注册系统能够将整个集群中的Broker管理起来,此时就使用到了Zookeeper。在Zookeeper上会有一个专门用来进行Broker服务器列表记录的节点:/brokers/ids每个Broker在启动时,都会到Zookeeper上进行注册,即到/brokers/ids下创建属于自己的节点,如/brokers/ids/[0…N]。Kafka使用了全局唯一的数字来指代每个Broker服务器,不同的Broker必须使用不同

2021-12-23 17:45:58 990

原创 Kafka为什么要抛弃ZooKeeper?

首先我们需要明白zookeeper在kafka中作用1、提供元数据的管理(如一些 Broker 的信息、主题数据、分区数据等等。)2、Broker注册、Consumer注册。3、分区中leader副本的选举。4、生产者和消费者的负载均衡。5、维护消费组和消费者之间关系及每个partition的消费信息。抛弃ZooKeeper理由1:维护成本更高Kafka作为中间件,强依赖于另一个中间件,搭建kafk集群,需要先搭建zookeeper集群。增加运维难度。2、CP,强一致性如果 ZooKe

2021-12-23 17:41:58 1774

原创 kafka重复消费问题

造成消息重复的原因:根本因素:数据已经消费了,但是offset没有提交。1、 程序被kill或者系统宕机、重启,导致offset没有提交。2、 消费数据后,offset还没有提交时,partition就断开连接。max.poll.interval.ms参数定义了两次poll的最大间隔,它的默认值是 5 分钟,表示你的 Consumer 程序如果在 5 分钟之内无法消费完 poll 方法返回的消息,那么 Consumer 会主动发起“离开组”的请求,Coordinator 也会开启新一轮 Rebalan

2021-12-23 12:58:20 1590

原创 kafka数据丢失情况

首先我们需要知道什么情况下kafka会丢失消息,下面我们来分析kafka丢失消息的情况情况一:auto.commit.enable=true时,消息处理时间过长,导致位移先于程序完成前提交auto.commit.enable=true,即消费端自动提交offersets设置为true,当消费者拉到消息之后,还没处理完auto.commit.interval.ms提交时间间隔就到了。提交了offerssets。下次消费是,是从新的offsets开始消## 标题费。部分没处理完的数据,就出现了消息丢失。相

2021-12-22 21:19:29 1760

原创 kafka消费组和分区关系详解

消费组概念:Consumer Group 是 Kafka 提供的可扩展且有容错性的消费者机制。一个组里面有多个消费者实例,这些消费者共享一个ID,称为Group ID。组内的所有消费者协调在一起来消费订阅主题(Subscribed Topics)的所有分区(Partition)下面通过图来解释分组和分区的关系假设某个主题,共有4各分区P0,P1,P2,P3,有两个消费组,消费组A共4各消费者:A0,A1,A2,A3, 消费组B共有2个分组:B0,B1具体分配图如下1、每个分区只能被一个消费组中的

2021-12-16 22:40:48 7016

原创 生产者重要参数

1、acks:这个参数中是用来指定分区中必须要有多少个副本收到这条消息,之后生产者猜会认为这条消息是成功写入的。acks是生产者客户端的一个非常重要的参数。它涉及到消息的可靠性和吞吐量之间的权衡。ack=1:默认值为1.只要leader副本成功写入数据,那么它就会收到服务端的成功响应。是消息可靠性和吞吐量的一个这种方案。如果无法写入leader副本,比如在leader副本奔溃,重新选举新的leader副本的过程中,那么生产者就会收到一个错误的响应。为了避免消息丢失,生产者可以选择重发消息。如果成功写入l

2021-12-13 22:03:32 897

原创 kafka生产者架构

首先,我们先上图。概念解释:生产者拦截器 ProducerInterceptor拦截器(Interceptor)功能最早在kafka0.10.0.0中引入,kafka一共有两种拦截器:生产者拦截器和消费者拦截器。生产者拦截器可以用来在消息发送前做一些处理,例如按照某个规则过滤不符合要求的消息、修改消息的内容等,也可以用来在发送回调逻辑前做一些定制化的需求,比如统计类工作。要实现自定义拦截器,需要实现ProducerInterceptor接口。序列化(Serializer)...

2021-12-13 21:34:06 1594

原创 查看内存及java中JVM参数

1、查看JVM系统默认数据java -XX:+PrintFlagsInitial -version2、查看系统java程序jps -l3、查看内存使用情况free -m4、查看某个指定的java程序的JVM设置jinfo -flags 10936

2021-12-13 17:30:55 288

原创 kafka定义,作用、使用场景和优势

kafka定义Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。kafka的优缺点:优点:1、高吞吐量、低延迟kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒;2、高拓展性:kafka集群支持热扩展;3、持久性、可靠性消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;4、 容错性允许集群中节点故障(若副本数量为n,则允许n-1个节点故障);

2021-12-13 16:45:04 8714

原创 kafka基本名词解释大全

话不多说,线上一张基本名词思维导图Broker:Kafka集群中包含一个或者多个服务器,每个服务器节点称为一个broker。Producer:生产者。即消息的发布者,其会将某topic的消息发布到相应的partition中。Topic:主题、逻辑概念,一类消息的标识。Kafka可以同时负责多个topic的分发。Partition:kafka 中 Topic 被分成多个 Partition 分区。Topic 是一个逻辑概念,Partition 是最小的存储单元,掌握着一个 Topic 的部分

2021-12-13 16:08:10 1328

原创 kafka为什么这么快

1、分区策略(1) Topic中可存在多个Partition(2) 消息是以日志的方式,记录到每个分区。在磁盘中每个Partition单独一个文件夹用于存储该发送到该分区的消息。(3)程序可以并行将消息写入多个分区文件。2、顺序读写日志文件的读写采用了顺序读取方式,极大的提高读写性能。3、零拷贝技术常规拷贝技术零拷贝技术以两图对比,可以发下零拷贝技术减少了用户缓冲区这个中转过程,直接从分页缓存拷贝到了socket缓冲区,一切都发生在内核空间。,加快了文件的拷贝速度。4、充分利用 Pa

2021-12-10 16:28:13 1061

原创 Window+IDEA+Java+protobuf生成

首先需要先下载适用windowcaozuo系统的protobuf安装包,类似于JDK。下载地址:https://github.com/protocolbuffers/protobuf/releases下载如下图所示的安装包解压后,将bin文件夹添加到环境变量windows+r输出cmd打开命令行窗口。输入protoc,出现下图表示安装成功接下来需要打开IDEA安装相应的插件安装以上两个插件既可以开始操作protobuf相关协议...

2021-12-09 10:47:53 684

原创 SpringBoot+MybatisPlu+Druid集成ClickHouse

首先就是引入依赖<!-- 集成clickhouse --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency> <dependency> <groupId>ru.y

2021-11-28 17:43:46 1583

原创 CentOS7安装clickhouse

本文采用采用在线安装的方式安装clickhousesudo yum install yum-utilssudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPGsudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64sudo yum install clickhouse-server clickhouse-client以

2021-11-28 17:23:57 692

转载 RabbitMQ实现多线程消费

本文实现多线程消费,其实原理就在同一个项目中建立多个@RabbitListener(queues = RabbitMqQueueConfig.FANOUT_EMAIL_QUEUE),多个消费者处理统一队列中的消息其利用RabbitMq中SimpleRabbitListenerContainerFactory建立多个同一队列的监听连接@Configurationpublic class RabbitConsumerConfig { //并发数量 public static final i

2021-11-28 17:03:31 4574

转载 docker入门操作及项目jar包部署

Docker简介Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotClouw公司。Docker 自开源后受到广泛的关注和讨论,目前已有多个相关项目,逐断形成了围Docker的生态体系。dotCloud 公司后来也改名为Docker Ine。Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期Do

2021-11-17 20:33:12 583

转载 CentOS7执行ifconfig命令无效的解决办法

问题:ifconfig命令无效安装CentOS7后ifconfig无效,你需要安装net-tools使用命令yum -y install net-tools安装,net-tools工具里带有ifconfig命令,就可以正常使用了在安装net-tools时有可能会报错:can not find a valid baseurl for repo: base/7/x86-64你需要使用命令修改vi /etc/sysconfig/network-scripts/ifcfg-eth0文件,ifcfg-eth0

2021-11-16 21:53:29 2039

转载 MySQL连环问

说下 MySQL 的 redo log 和 binlog?(1)MySQL 分两层:Server 层和引擎层。区别如下:Server 层:主要做的是 MySQL 功能层面的事情。Server 层也有自己的日志,称为 binlog(归档日志)引擎层:负责存储相关的具体事宜。redo log 是 InnoDB 引擎特有的日志。(2)redo log 是物理日志,记录的是“在某个数据页上做了什么修改”;binlog 是逻辑日志,记录的是这个语句的原始逻辑,比如“给 ID=2 这一行的 c 字段加 1 ”。

2021-11-15 21:29:53 101

转载 用kafka踩过的一些非比寻常的坑

我的上家公司是做餐饮系统的,每天中午和晚上用餐高峰期,系统的并发量不容小觑。为了保险起见,公司规定各部门都要在吃饭的时间轮流值班,防止出现线上问题时能够及时处理。我当时在后厨显示系统团队,该系统属于订单的下游业务。用户点完菜下单后,订单系统会通过发kafka消息给我们系统,系统读取消息后,做业务逻辑处理,持久化订单和菜品数据,然后展示到划菜客户端。这样厨师就知道哪个订单要做哪些菜,有些菜做好了,就可以通过该系统出菜。系统自动通知服务员上菜,如果服务员上完菜,修改菜品上菜状态,用户就知道哪些菜已经上了,哪些

2021-11-14 09:55:35 253

转载 kafka相关知识

首先,为什么使用kafka?削峰填谷。缓冲上下游瞬时突发流量,保护“脆弱”的下游系统不被压垮,避免引发全链路服务“雪崩”。系统解耦。发送方和接收方的松耦合,一定程度简化了开发成本,减少了系统间不必要的直接依赖。kafka名词解释**Broker:**接收客户端发送过来的消息,对消息进行持久化**主题:Topic。**主题是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。**分区:Partition。**一个有序不变的消息序列。每个主题下可以有多个分区。**消息:**这里的消息就是指 K

2021-11-11 20:58:07 88

转载 Redis基础知识(二)

MySQL与Redis 如何保证双写一致性缓存延时双删删除缓存重试机制读取biglog异步删除缓存缓存延时双删1、先删除缓存2、再更新数据库3、休眠一会(比如1秒),再次删除缓存。这个休眠一会,一般多久呢?都是1秒?这个休眠时间 = 读业务逻辑数据的耗时 + 几百毫秒。为了确保读请求结束,写请求可以删除读请求可能带来的缓存脏数据。这种方案还算可以,只有休眠那一会(比如就那1秒),可能有脏数据,一般业务也会接受的。但是如果第二次删除缓存失败呢?缓存和数据库的数据还是可能不一致,对吧?给

2021-11-10 21:30:51 263 1

转载 Redis分布式锁实现方式及原理

使用过Redis分布式锁嘛?有哪些注意点呢?分布式锁,是控制分布式系统不同进程共同访问共享资源的一种锁的实现。秒杀下单、抢红包等等业务场景,都需要用到分布式锁,我们项目中经常使用Redis作为分布式锁。选了Redis分布式锁的几种实现方法,大家来讨论下,看有没有啥问题哈。命令setnx + expire分开写setnx + value值是过期时间set的扩展命令(set ex px nx)set ex px nx + 校验唯一随机值,再删除(1) 命令setnx + expire分开写if(

2021-11-10 21:10:46 354 1

转载 redis实现高可用

如何实现redis的高可用我们在项目中使用Redis,肯定不会是单点部署Redis服务的。因为,单点部署一旦宕机,就不可用了。为了实现高可用,通常的做法是,将数据库复制多个副本以部署在不同的服务器上,其中一台挂了也可以继续提供服务。Redis 实现高可用有三种部署模式:主从模式,哨兵模式,集群模式。主从模式主从模式中,Redis部署了多台机器,有主节点,负责读写操作,有从节点,只负责读操作。从节点的数据来自主节点,实现原理就是主从复制机制主从复制包括全量复制,增量复制两种。一般当slave第一次启动

2021-11-09 21:29:18 215

转载 Redist过期策略、应用、持久化

Redis的过期淘汰策略Redis的过期策略我们在set key的时候,可以给它设置一个过期时间,比如expire key 60。指定这key60s后过期,60s后,redis是如何处理的嘛?我们先来介绍几种过期策略:定时过期每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即对key进行清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。惰性过期只有当访问一个key时,才会判断该key是否已过期,过期则清除

2021-11-09 07:58:00 1148

转载 Redis基础和缓存穿透、击穿、雪崩

什么是redis?Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis的数据是存在内存中的。它的读写速度非常快,每秒可以处理超过10万次读写操作。因此redis被广泛应用于缓存,另外,Redis也经常用来做分布式锁。除此之外,Redis支持事务、持久化、LUA 脚本、LRU 驱动事件、多种集群方案。Redis的数据结构(1)St

2021-11-04 18:15:37 193

转载 高并发下秒杀商品设计思路

高并发下如何设计秒杀系统?这是一个高频面试题。这个问题看似简单,但是里面的水很深,它考查的是高并发场景下,从前端到后端多方面的知识。秒杀一般出现在商城的促销活动中,指定了一定数量(比如:10个)的商品(比如:手机),以极低的价格(比如:0.1元),让大量用户参与活动,但只有极少数用户能够购买成功。这类活动商家绝大部分是不赚钱的,说白了是找个噱头宣传自己。虽说秒杀只是一个促销活动,但对技术要求不低。下面给大家总结一下设计秒杀系统需要注意的9个细节1 瞬时高并发一般在秒杀时间点(比如:12点)前几分钟

2021-11-01 14:26:35 354

转载 升级SpringBoot2.4报错问题解决

Unable to locate the default servlet for serving static content. Please set the 'defaultServletName'报错原因:@Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable();}报错原因说明:Spring Boot

2021-10-28 17:32:52 2948 1

mybatis_plu.rar

利用MybatisPlu和Freemarker实现自动生成对数据库单表的CRUD所有接口,直接生成代码就可以和前段联调,包含功能 1、查询所有 2、条件查询(带分页的) 3、简单插入,条件插入,以及批量插入 4、更新(根据条件更新) 5、根据主键删除,根据条件删除,根据ID批量删除

2019-11-12

时间工具类

获取指定时间周一,周日时间,月份的最后一天,秒值转换成对应时分秒,校验字符串是否是日期时间格式(2018-05-06),(2018-05-06 12:00:00),(12:00:00)

2018-09-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除