- 博客(82)
- 资源 (6)
- 收藏
- 关注
原创 rancher部署nacos集群
1、先创建nacos数据库/* * Copyright 1999-2018 Alibaba Group Holding Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *
2022-04-21 10:23:21
3265
1
原创 Kafka一些非比寻常的坑
前言我的上家公司是做餐饮系统的,每天中午和晚上用餐高峰期,系统的并发量不容小觑。为了保险起见,公司规定各部门都要在吃饭的时间轮流值班,防止出现线上问题时能够及时处理。我当时在后厨显示系统团队,该系统属于订单的下游业务。 用户点完菜下单后,订单系统会通过发 Kafka 消息给我们系统; 系统读取消息后,做业务逻辑处理,持久化订单和菜品数据,然后展示到划菜客户端; 这样厨师就知道哪个订单要做哪些菜,有些菜做好了,就可以通过该系统出菜; 系统自动通知服务员上菜;
2022-03-02 17:07:21
599
原创 Kafka 宕机后不再高可用?探究 Kafka 高可用实现
问题出在了 __consumer_offset 上, __consumer_offset 是一个 Kafka 自动创建的 Topic,用来存储消费者消费的 offset (偏移量)信息,默认 Partition 数为50。而就是这个Topic,它的默认副本数为1。如果所有的 Partition 都存在于同一台机器上,那就是很明显的单点故障了!当将存储 __consumer_offset 的 Partition 的 Broker 给 Kill 后,会发现所有的消费者都停止消费了。第一点 ,需要将 __
2022-02-25 14:35:11
1170
原创 消息重复消费及消息丢失解决办法
解决办法: 针对消息丢失:同步模式下,确认机制设置为-1,即让消息写入Leader和Follower之后再确认消息发送成功;异步模式下,为防止缓冲区满,可以在配置文件设置不限制阻塞超时时间,当缓冲区满时让生产者一直处于阻塞状态; 针对消息重复:将消息的唯一标识保存到外部介质中,每次消费时判断是否处理过即可。...
2022-02-25 09:35:29
1134
原创 将pem证书转换为crt和key
1.pem转crt格式openssl x509 -in fullchain.pem -out fullchain.crt具体用法为:cd ..opensslx509 -in /etc/letsencrypt/archive/domain/fullchain1.pem -out /etc/letsencrypt/archive/domain/fullchain1.crt然后在这个路径找到转换好的证书/etc/letsencrypt/archive/domain2.pem转key格式op
2021-11-08 16:18:26
3660
原创 redis缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
一、缓存雪崩缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。缓存失效时的雪崩效应对底层系统的冲击非常可怕!大多数系统设计者考虑用加锁或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落到底层存储系统上。还有一个简单方案就时讲缓
2021-10-26 17:54:51
223
原创 kafka笔记之如何保证数据不丢失
kafka笔记之如何保证数据不丢失Kafka是一种高吞吐量的分布式发布订阅消息系统。在使用过程中如果使用不当,经常会出现消息丢失的情况,这是业务系统不能容忍的,消息系统最重要的是保证数据不丢失。本文主要记录kafka是如何保证数据不丢失的,主要从三方面来介绍,消息发送端保证数据不丢失,kafka服务保证消息不丢失,消费者保证消息不丢失。基础知识kafka 可以保证分区消息的顺序,同一个分区,先发送到kafka分区的消息,会被先消费掉。 kafka 是通过一个集群对外提供服务,只要是集群中多个副本
2021-10-26 17:40:56
443
原创 Kafka如何保证数据可靠性
Kafka的数据可靠性保证副本数据同步策略ISR机制ack应答机制故障处理:HW、LEO副本数据同步策略两种副本数据同步策略(Kafka选择第二种)方案 优点 缺点 半数以上完成同步,就发送ack 延迟低 选举新的leader时,容忍n台节点的故障,需要2n+1个副本 全部完成同步,才发送ack 选举新的leader时,容忍n台节点的故障,需要n+1个副本 延迟高 Kafka选择了第二种方案,原因如下:为了容忍n台节点的故障,第一种方案需要2n+1个副本,而第二种方案只需.
2021-10-26 17:39:24
1283
原创 springboot+redis+redisson 分布式锁 续期 秒杀场景
pom.xml配置文件 <!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions>
2021-08-27 15:51:54
900
原创 MySql 数据类
4.1.1.1. 有无符号 在项目中使用 BIGINT,而且是有符号的。演示create table test_unsigned(a int unsigned, b int unsigned);insert into test_unsigned values(1, 2);select b - a from test_unsigned;select a - b from test_unsigned; --运行出错...
2021-06-11 09:39:25
183
原创 mysql权限
不错,可以链接,也可以执行 select,这个时候还想删库?做梦吧~ 3.2.深入研究下 MySQL 权限 3.2.1. 用户标识是什么 上面一句简单的 SQL 堪称完美的解决了程序员新手的删库跑路的问题,高兴吧,你学到了新 姿势,但是如果想面试给面试管留下好映像,上面的知识好像还不够,有必要好好深入研究 下 MySql 的权限了。 这里有个小的知识点需要先具备,在 mysql 中的权限不是单纯的赋予给用户的,而是赋予给” 用户+IP”的 比如 dev 用户是否能登陆,用什么密码登陆,并且能访问什么数据库等
2021-06-10 09:41:52
752
原创 mysql单实例和多实例安装
安装前步骤一、添加MySQL用户groupadd mysqluseradd -g mysql -s /sbin/nologin mysql
2021-06-10 08:50:12
347
原创 mysql安装登录错误提示
Linux连接mysql提示Can'tconnecttolocalMySQLserverthroughsocket'/tmp/mysql.sock' (2)2021-01-15 PM03:08:42一、代码[root@bogon ~]#mysql-uroot -pEnter password:ERROR 2002 (HY000):Can'tconnecttolocalMySQLserverthroughsocket'/tmp/mysql.soc...
2021-06-09 10:14:54
449
原创 布隆过滤器原理和基于BloomFilter的误判率展示
布隆过滤器原理和基于BloomFilter的误判率展示布隆过滤器布隆过滤器原理布隆过滤器是由n个Hash函数和一个二进制数组组成。如图所示(参考,hash函数可以多个)1.保存操作发来一个请求数据hello 对数据hello经过三次hash运算,分别得到三个值(假设1,3,5)。 在对应的二进制数组里,将下标为1,3,5的值置为1。 这样hello数据就保存了。2.查询操作发来一个请求数据hello 对数据hello经过三次hash运算,分别得到三个值(假设1,3,.
2021-06-03 09:42:25
727
原创 redis系列(1):redis常用问题
一、Redis 持久化机制Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。实现:单独创建fork()一个子进程,将当前父进程的数据库数据复制到子进程的内存中,然后由子进程写入到临时文件中,持久化的过程结束了,再用这个临时文件替换上次的快照文件,然后子进程退出,内存释放。RDB是Redis默认的持久化方式。按照一定的时间周期策略把内存的数据以快照的形式保存到硬盘的二进制文件。
2021-06-03 09:07:52
237
原创 redis系列(1):redis基础入门、特性、应用场景
redis常见应用场景redis应用场景总结redis平时我们用到的地方蛮多的,下面就了解的应用场景做个总结:1、热点数据的缓存2、限时业务的运用3、计数器相关问题4、排行榜相关问题5、分布式锁6、延时操作7、分页、模糊搜索8、点赞、好友等相互关系的存储9、队列...
2021-06-02 11:32:56
290
原创 redis系列(8):Redis持久化,RDB和AOF 的区别、混合持久化
redis常见应用场景redis应用场景总结redis平时我们用到的地方蛮多的,下面就了解的应用场景做个总结:1、热点数据的缓存由于redis访问速度块、支持的数据类型比较丰富,所以redis很适合用来存储热点数据,另外结合expire,我们可以设置过期时间然后再进行缓存更新操作,这个功能最为常见,我们几乎所有的项目都有所运用。2、限时业务的运用redis中可以使用expire命令设置一个键的生存时间,到时间后redis会删除它。利用这一特性可以运用在限时的优惠活动信息、手机验证码等业务
2021-06-02 11:09:32
295
原创 redis系列(7):redis 集群
RedisCluster 是 redis 的分布式解决方案,在 3.0 版本后推出的方案,有效地解决了 Redis 分布式的需求,当遇到单机内存、并发等瓶颈时,可使用此方案来解决这些问题1 分布式数据库概念:1,分布式数据库把整个数据按分区规则映射到多个节点,即把数据划分到多个节 点上,每个节点负责整体数据的一个子集 比如我们库有 900 条用户数据,有 3 个 redis 节点,将 900 条分成 3 份,分别存入 到 3个 redis 节点2,分区规则:常见的分区规则哈希分区和顺序分区,r
2021-06-01 09:25:30
376
原创 ps + grep + awk相结合杀死进程
ps -ef | grepredis-server| grep -v grep | awk '{print $2}' | xargs kill -9红色字体为需要杀死的进程
2021-05-28 15:53:43
311
原创 kafka系列(15):集群配置参数server.properties
offsets.topic.replication.factor=3解释:该值默认为1。表示kafka的内部topic consumer_offsets副本数。当该副本所在的broker宕机,consumer_offsets只有一份副本,该分区宕机。使用该分区存储消费分组offset位置的消费者均会收到影响,offset无法提交,从而导致生产者可以发送消息但消费者不可用。所以需要设置该字段的值大于1。...
2021-05-28 10:13:54
4514
原创 kafka系列(13):kafka 工作机制、处理请求的内部机制
处理请求的内部机制 broker 的大部分工作是处理客户端、分区副本和控制器发送给分区首领的请求。 Kafka 提供了一个二进制协议(基于 TCP),指定了请求消息的格式以及 broker 如何对请求作出响应——包括成功处理请求或在处理请求过程中遇到错误。 客户端发起连接并发送请求,broker 处理请求并作出响应。 broker 按照请求到达的顺序来处理它们这种顺序保证让 Kaka 具有了消息队列的特性,同时 保证保存的消息也是有序的。 所有的请求消息都...
2021-05-28 09:13:59
290
原创 kafka系列(12):kafka复制-Kafka 的核心、副本类型
复制-Kafka 的核心 复制功能是 Kafka 架构的核心。在 Kafka 的文档里, Kafka 把自己描述成“一个分布式的、可分区的、可复制的提交日志服务”。复制之所以这么关键, 是因为它可以在个别节点失效时仍能保证 Kafka 的可用性和持久性。 Kafka 使用主题来组织数据, 每个主题被分为若干个分区,每个分区有多个副本。那些副本被保存在 broker 上, 每个 broker 可以保存成百上千个属于 不同主题和分区的副本。...
2021-05-28 09:06:20
332
原创 kafka系列(11):kafka集群的成员关系、控制器
集群的成员关系Kafka 使用 zookeeper 来维护集群成员的信息。每个 broker 都有个唯一标识符, 这个标识符可以在配置文件里指定, 也可以自动生成。 在 broker 启 动的时候, 它通过创建临时节点把自己的 ID 注册到 zoo-keeper。 Kafka 组件订阅 Zookeeper 的/brokers/ids 路径(broker 在 zookeeper 上的注册路径) , 当 有 broker 加入集群或退出集群时, 这些组件就可以获得通知 。 如果你要启动另一个具有相同 ID
2021-05-28 09:03:55
283
原创 redis系列(6):哨兵机制
1,为什么要讲哨兵机制?A,我们学习了 redis 的主从复制,但如果说主节点出现问题不能提供服务, 需要人工重新把从节点设为主节点,还要通知我们的应用程序更新了主节点的地址,这 种处理方式不是科学的,耗时费事B,同时主节点的写能力是单机的,能力能限C,而且主节点是单机的,存储能力也有限其中 2,3 的问题在后面 redis 集群课会讲,第 1 个问题我们用哨兵机制来解决2,主从故障如何故障转移(不满足高可用):A,主节点(master)故障,从节点 slave-1 端执行 slav
2021-05-27 11:12:35
478
原创 kafka系列(14):kafka物理存储机制、分区分配
1.kafka分区机制分区机制是kafka实现高吞吐的秘密武器,但这个武器用得不好的话也容易出问题,今天主要就来介绍分区的机制以及相关的部分配置。首先,从数据组织形式来说,kafka有三层形式,kafka有多个主题,每个主题有多个分区,每个分区又有多条消息。而每个分区可以分布到不同的机器上,这样一来,从服务端来说,分区可以实现高伸缩性,以及负载均衡,动态调节的能力。当然多分区就意味着每条消息都难以按照顺序存储,那么是不是意味着这样的业务场景kafka就无能为力呢?不是的,最简单的做法可以使用
2021-05-27 11:04:42
386
原创 redis系列(3):Redis 单例、主从模式、sentinel 以及集群的配置方式及优缺点对比
摘要: redis作为一种NoSql数据库,其提供了一种高效的缓存方案,本文则主要对其单例,主从模式,sentinel以及集群的配置方式进行说明,对比其优缺点,阐述redis作为一种缓存框架的高可用性。redis作为一种高效的缓存框架,使用是非常广泛的,在数据存储上,在运行时其将数据存储在内存中,以实现数据的高效读写,并且根据定制的持久化规则不同,其会不定期的将数据持久化到硬盘中。另外相较于其他的NoSql数据库,redis提供了非常丰富的数据结构,如dict,sds,linkedlist,zipl
2021-05-27 09:44:44
874
2
原创 redis系列(5):redis主从复制
一、复制:1. 主从复制a,方式一、新增 redis6380.conf, 加入 slaveof 192.168.42.111 6379, 在 6379 启动完 后再启 6380,完成配置;b,方式二、redis-server --slaveof 192.168.42.111 6379c,查看状态:info replicationd,断开主从复制:在 slave 节点,执行 6380:>slaveof no onee,断开后再变成主从复制:6380:> slaveof 19
2021-05-27 09:27:57
206
原创 redis系列-redis哨兵安装步骤
Redis哨兵安装步骤----------------------------------之前的redis6379.conf的配置不变,做为主节占,并且复制出两个配置文件redis6380.conf, redis6381.conf,这两个配置文件启动后的redis做为6379节点的从节点。:注意:redis6380.conf和redis6381.conf 加上slaveof 127.0.0.1 6379 修改 requirepass 12345678 ,注释掉bind 1...
2021-05-27 08:56:22
630
原创 redis系列(4):redis单节点配置文件说明
1,在redis.conf第89行,将protected-mode no2,在redis.conf第71行修改下bind 192.168.42.111 (ip为你linux的ip);3,在redis.conf第502行,加上 requirepass "12345678", 登录密码测试:1,启动redis: ./redis-server redis.conf &2, 连接redis: ./redis-cli -h 192.168.42.111 -p 6379 -a 12345...
2021-05-26 17:17:10
396
原创 idea生成实体类
import com.intellij.database.model.DasTableimport com.intellij.database.util.Caseimport com.intellij.database.util.DasUtil/* * Available context bindings: * SELECTION Iterable<DasObject> * PROJECT project * FILES files hel.
2021-05-25 11:22:47
245
原创 kafka系列-ack机制
1.ack机制request.required.acks参数表示的是生产者生产消息时,写入到副本的严格程度,决定了生产者如何在性能和可靠性之间做取舍。acks参数有三个值 :acks为1时(默认),表示数据发送到Kafka后,经过leader成功接收消息的的确认,才算发送成功,如果leader宕机了,就会丢失数据。acks为0时, 表示生产者将数据发送出去就不管了,不等待任何返回。这种情况下数据传输效率最高,但是数据可靠性最低,当 server挂掉的时候就会丢数据;acks为-1/all时,表
2021-05-24 09:59:21
4153
原创 kafka系列(10):Kafka生产者事务和幂等性
1 生产者幂等性1.1 引入幂等性引入目的:生产者重复生产消息。生产者进行retry会产生重试时,会重复产生消息。有了幂等性之后,在进行retry重试时,只会生成一个消息。1.2 幂等性实现1.2.1 PID 和 Sequence Number为了实现Producer的幂等性,Kafka引入了Producer ID(即PID)和Sequence Number。PID。每个新的Producer在初始化的时候会被分配一个唯一的PID,这个PID对用户是不可见的。 Sequence N
2021-05-24 08:22:22
522
原创 kafka系列(09):SpringBoot 中使用@KafkaListener详解与使用
说明从2.2.4版开始,您可以直接在注释上指定Kafka使用者属性,这些属性将覆盖在使用者工厂中配置的具有相同名称的所有属性。您不能通过这种方式指定group.id和client.id属性。他们将被忽略;可以使用#{…}或属性占位符(${…})在SpEL上配置注释上的大多数属性。比如:@KafkaListener(id = "consumer-id",topics = "SHI_TOPIC1",concurrency = "${listen.concurrency:3}", .
2021-05-20 10:12:51
12121
1
原创 kafka系列(08):Kafka的消费者
消费者的入门消费者的含义,同一般消息中间件中消费者的概念。在高并发的情况下,生产者产生消息的速度是远大于消费者消费的速度,单个消费者很可能会 负担不起,此时有必要对消费者进行横向伸缩,于是我们可以使用多个消费者从同一个主题读取消息,对消息进行分流。(买单的故事,群组,消费者的一群人, 消费者:买单的,分区:一笔单,一笔单能被买单一次,当然一个消费者可以买多个单,如果有一个消 费者挂掉了,另外的消费者接上)消费者群组Kafka 里消费者从属于消费者群组,一个群组里的消费者订阅的都是同一个.
2021-05-19 14:00:35
803
原创 kafka系列(07):Kafka 的生产者
产者发送消息的基本流程从创建一个 ProducerRecord 对象开始, Producer Record 对象需要包含目标主题和要发送的内容。我们还可以指定键或分区。在发送 ProducerRecord 对象时,生产者要先把键和值对象序列化成字节数组,这样它们才能够在网络上传输。接下来,数据被传给分区器。如果之前在 Producer Record 对象里指定了分区,那么分区器就不会再做任何事情,直接把指定的分区返回。如果没有 指定分区,那么分区器会根据 Producer Record 对象的键
2021-05-19 11:12:56
349
原创 kafka系列(06):Kafka 的集群
为何需要 Kafka 集群本地开发,一台 Kafka 足够使用。在实际生产中,集群可以跨服务器进行负载均衡,再则可以使用复制功能来避免单独故障造成的数据丢失。同时集 群可以提供高可用性。如何估算 Kafka 集群中 Broker 的数量要估量以下几个因素:需要多少磁盘空间保留数据,和每个 broker 上有多少空间可以用。比如,如果一个集群有 10TB 的数据需要保留,而每个 broker 可以存储 2TB,那么 至少需要 5 个 broker。如果启用了数据复制,则还需要一倍的空...
2021-05-19 11:04:45
330
原创 kafka系列(05):Kafka 的安装、管理和配置
kafka 基本的操作和管理##列出所有主题kafka-topics.bat --zookeeper localhost:2181 --list##列出所有主题的详细信息kafka-topics.bat --zookeeper localhost:2181 --describe##创建主题 主题名 my-topic,1 副本,8 分区kafka-topics.bat --zookeeper localhost:2181 --create --topic my-topic --repl
2021-05-19 08:32:48
444
1
log4j jar包和配置文件
2017-10-28
jackson-all-1.8.1.jar
2017-10-28
base64包,decodeBase64包,encodeBase64String包
2015-09-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人