自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(614)
  • 收藏
  • 关注

转载 数据权限的设计

在项目实际开发中我们不光要控制一个用户能访问哪些资源,还需要控制用户只能访问资源中的某部分数据。控制一个用户能访问哪些资源我们有很成熟的权限管理模型即RBAC,但是控制用户只能访问某部分资源(即我们常说的数据权限)使用RBAC模型是不够的,本文我们尝试在RBAC模型的基础上融入数据权限的管理控制。首先让我们先看下RBAC模型。

2023-03-24 09:24:23 367

转载 linux 忘记root如何解决

在使用linux的过程中有时候会忘记root用户的密码(尤其是进行交接而文档内容不全的时候),这个时候我们就可以进入单用户模式来重置root用户密码。4、在kernel编辑界面,按一下空格键,然后在后面输入single,同时按下回车键enter退出kernel编辑界面。5、退出kernel界面后会回到grub模式界面,在此界面再次将光标移动到kernel那一行,然后按下‘b’来启动系统。6、这个时候系统就会起来到单用户模式,不需要输入任何密码就可以直接进入系统,在单用户模式下,我们就可以直接修改密码。

2023-03-17 10:35:14 871

转载 二维码扫描登录原理

二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。----来自百度百科在商品上,一般都会有条形码,条形码也称为一维码,条形码只能表示一串数字。二维码要比条形码丰富很多,可以存储数字、字符串、图片、文件等,比如我们可以把存储在二维码中,扫码二维码我们就可以获取到百度的地址。

2023-03-15 22:25:07 1812

转载 可达性分析之三色标记算法详解

总之,标记的总体原则就是,“另可放过,不可杀错”。在我们这个例子中,在并发标记阶段,A是一个黑色对象,F是一个白色对象,A引用了F,这个引用关系会被记录下来,然后通过这个记录在重新标记阶段再从A对象开始枚举一次,保证如果A还是保持着F的引用,那么F会被正确标记;正常情况下,一个对象如果是黑色,那么其直接引用的对象要么是黑色,要么是灰色,不可能是白色(如果出现了黑色对象直接引用白色对象的情况,就说明漏标了,就会导致对象误删,后面会介绍如何解决),这个特性也可以说是三色标记算法正确性保障的前提条件。

2023-03-06 22:44:21 440

转载 Raft算法深度剖析,让你远离分布式恐惧

1. 什么是 Raft算法。

2023-03-02 13:27:41 514

转载 Http2中的多路复用

在 HTTP/2 中,有两个非常重要的概念,分别是帧(frame)和流(stream)。帧代表着最小的数据单位,每个帧会标识出该帧属于哪个流,流也就是多个帧组成的数据流。HTTP2 采用二进制数据帧传输,取代了 HTTP1.x 的文本格式,二进制格式解析更高效。多路复用代替了 HTTP1.x 的序列和阻塞机制,所有的相同域名请求都通过同一个 TCP 连接并发完成。同一 Tcp 中可以发送多个请求,对端可以通过帧中的标识知道属于哪个请求。

2023-02-16 14:47:59 700

转载 Hystrix实现线程隔离

@throws HystrixRuntimeException 发生错误或fallback没有挽回(熔断器打开,队列饱和),则抛出异常。* @throws HystrixRuntimeException 发生错误或fallback没有挽回(熔断器打开,队列饱和),则抛出异常。* @throws HystrixRuntimeException 发生错误或fallback没有挽回(熔断器打开,队列饱和),则抛出异常。// BlockingQueue的最大长度,正数:队列将从同步队列改为阻塞队列,默认-1。

2022-11-26 21:27:44 1151 1

转载 zookeeper保证单一视图

由于ZooKeeper的数据模型简单且全部在内存中,ZooKeeper的速度非常快。它提供了一系列保证(Guarantees):• 顺序一致性(Sequential Consistency)• 原子性(Atomicity)• 单一视图(Single System Image)• 可靠性(Reliability )• 实时性(Timeliness )下面将结合源码(3.4.10版本)介绍下,ZooKeeper如何保证单一视图(Single System Image)。单一视图(Single System Im

2022-06-09 22:37:34 191

转载 ElasticSearch分页解决方案--深分页、浅分页

一、ES 的 from size(浅分页):如果需要搜索分页,可以通过from size组合来进行。from表示从第几行开始,size表示查询多少条文档。from默认为0,size默认为10。1、原理:客户端请求发给某个节点节点转发给个个分片,查询每个分片上的前10条结果返回给节点,整合数据,提取前10条返回给请求客户端2、分析例如现有一个索引T,该索引接收到了一个查询请求,查询第3页,页大小100(也就是想要排序后第三页的100条数据),即设置了 from = 300, size =10

2022-05-20 14:46:45 833

转载 zookeeper的zab协议工作原理之原子广播

说zab协议之前必须提一下 paxos 协议paxos协议主要就是如何保证在分布式环网络环境下,各个服务器如何达成一致最终保证数据的一致性问题ZAB协议,基于paxos协议的一个改进。zab协议为分布式协调服务zookeeper专门设计的一种支持崩溃恢复的原子广播协议zookeeper并没有完全采用paxos算法, 而是采用zabZookeeper atomic broadcastzab协议的原理1.在zookeeper的主备模式下,通过zab协议来保证集群中各个副本数据的一...

2022-05-09 15:32:13 143

转载 zookeeper的zab协议工作原理之 崩溃恢复模式

一、什么情况下zab协议会进入崩溃恢复模式? 1、当服务器启动时 2、当leader服务器出现网络中断,崩溃或者重启的情况 3、当集群中已经不存在过半的服务器与Leader服务器保持正常通信。二、zab协议进入崩溃恢复模式会做什么? 1、当leader出现问题,zab协议进入崩溃恢复模式,并且选举出新的leader。当新的leader选举出来以后,如果集群中已经有过半机器完成了leader服务器的状态同(数据同步),退出崩溃恢复,进入消息广播模式。 2、当新...

2022-05-09 15:29:41 689

转载 ZooKeeper ZAB协议:崩溃恢复、消息广播

ZAB协议ZAB(ZooKeeper Atomic Broadcast 原子广播) 协议是为分布式协调服务ZooKeeper专门设计的一种支持崩溃恢复的原子广播协议。 在ZooKeeper中,主要依赖ZAB协议来实现分布式数据一致性,基于该协议,ZooKeeper实现了一种主备模式的系统架构来保持集群中各个副本之间的数据一致性。ZAB协议包括了两种基本的模式,分别是崩溃恢复和消息广播。消息广播为了保证集群中存在过半的机器能够和Leader服务器的数据状态保持一致,ZAB协议中引入了消息广播模式。

2022-05-09 15:16:32 395

转载 ReentrantLock源码分析

ReentrantLock:表示重入锁,它是唯一一个实现了Lock接口的类。重入锁指的是 线程在获得锁之后,再次获取该锁不需要阻塞,而是直接关联一次计数器增加重入次;syschronized和reenttrantlock都支持重入锁;重入锁的设计目的比如调用demo方法获得了当前的对象锁,然后在这个方法中再去调用 demo2,demo2中的存在同一个实例锁,这个时候当前线程会因为无法获得 demo2的对象锁而阻塞,就会产生死锁。重入锁的设计目的是避免线程的死 锁。Reentran.

2021-11-11 14:17:00 190

转载 搭建MySQL主从集群,主从复制过程中同步延迟问题

解决掉数据同步延迟问题。一、主从优势其中Master主服务器负责写操作的负载,也就是说一切写的操作都在Master上,而读的操作则分摊到Slave从服务器上,这样一来的可以大大提高读取的效率。为什么要分离读和写呢?写操作涉及到锁的问题,不管是行锁还是表锁还是块锁,都是比较降低系统执行效率的事情。我们这样的分离是把写操作集中在一个节点上,而读操作其他的N个节点上进行,有效的提高了读的效率,保证了系统的高可用性。二、复制过程1)、Mysql的主从同步就是当master(主库)发生数据变化

2021-04-09 10:21:00 291

转载 MySQL主从复制配置

1. 环境操作系统:CentOS-7MySQL:mysql-5.6一台虚拟机又克隆了两台192.168.102.31  master192.168.102.56  slave192.168.102.36  slave启动/停止service mysqld start|stop|restartsystemctl start|stop|restart mysqld本机的话,直接mysql就可以进去了2. 主数据库配置第1步:编辑/etc/my.cnf文..

2021-04-09 09:16:47 197 1

转载 mysql主从复制原理

为什么需要主从复制?1、在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。2、做数据的热备3、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。1、什么是mysql的主从复制?MySQL 主从复制是指数据可以从一个MySQL数据库服务器主

2021-04-09 09:06:42 165

转载 Kafka学习之Kafka选举机制简述

 Kafka是一个高性能,高容错,多副本,可复制的分布式消息系统。在整个系统中,涉及到多处选举机制,被不少人搞混,这里总结一下,本篇文章大概会从三个方面来讲解。控制器(Broker)选主 分区多副本选主 消费组选主1、控制器(Broker)选举  所谓控制器就是一个Borker,在一个kafka集群中,有多个broker节点,但是它们之间需要选举出一个leader,其他的broker充当follower角色。集群中第一个启动的broker会通过在zookeeper中创建临时节点/cont.

2021-04-06 14:04:28 281

转载 Kafka水位(HW)与leader epoch的讨论

Kafka水位(HW)与leader epoch的讨论转载声明:本文系转载自以下两篇文章:Kafka水位(high watermark)与leader epoch的讨论 作者: huxihx转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。摘要本文主要讨论0.11版本之前Kafka的副本备份机制的设计问题以及0.11是如何解决的。简单来说,0.11之前副本备份机制主要依赖水位(或水印)的概念,而0.11采用了leader epoch来标识备份

2021-04-01 15:23:40 255

转载 Kafka幂等性原理

kafka幂等性Kafka Producer 的幂等性指的是当发送同一条消息时,数据在 Server 端只会被持久化一次,数据不丟不重,但是这里的幂等性是有条件的:只能保证 Producer 在单个会话内不丟不重,如果 Producer 出现意外挂掉再重启是无法保证的(幂等性情况下,是无法获取之前的状态信息,因此是无法做到跨会话级别的不丢不重);幂等性不能跨多个 Topic-Partition,只能保证单个 partition 内的幂等性,当涉及多个 Topic-Partition 时,这中间的状态

2021-03-31 16:33:15 449

转载 linux中三种time(atime,mtime,ctime)

在windows下一个文件有三种时间属性:1>创建时间2>修改时间3>访问时间相似的在Linux下一个文件也有三种时间属性:(与windows不同的是linux没有创建时间,而多了个访问时间)1>访问时间(access time 简写为atime)2>修改时间(modify time 简写为mtime)3>状态修改时间(change time 简写为ctime)关于Linux底下三种时间的简单介绍:atime:(access tim

2021-03-30 13:33:36 1159

转载 ZooKeeper的Quorums机制

我们知道ZooKeeper集群中必须超过半数节点(Majority)可用,整个集群才能对外可用。这个说法在大多数情况下是正确的。实际上ZooKeeper提供了几种方式来认定整个集群是否可用,Majority只是其中的一种。1. Majority Quorums2. Weight3. Hierarchy of groups所谓整个集群是否可用,隐含的一个意思就是整个集群还能够选举出一个"Leader"。ZooKeeper默认设置的是采用Majority Qunroms的方式...

2021-03-30 08:40:51 597

转载 Zookeeper集群“脑裂”问题

ZooKeeper是用来协调(同步)分布式进程的服务,提供了一个简单高性能的协调内核,用户可以在此之上构建更多复杂的分布式协调功能。脑裂通常会出现在集群环境中,比如ElasticSearch、Zookeeper集群。而这些集群环境有一个统一的特点,就是它们有一个大脑,比如ElasticSearch集群中有Master节点,Zookeeper集群中有Leader节点。一、 Zookeeper集群节点为什么要部署成奇数Zookeeper容错指的是当宕掉几个Zookeeper节点服务...

2021-03-29 20:17:19 591

转载 推流与拉流简概

推流:将直播内容推送至服务器的过程拉流:为服务器已有直播内容,用指定地址进行拉取的过程推流与拉流示意图推流码:RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。一种设计用来进行实时数据通信的网络协议。每一个推流码地址唯一指向单个的直播活动。它由rtmp://开头,包含了上传服务器地址,上传目录名和上传节点,三部分组成。所有的rtmp地址都是这种结构组成,基本同一个平台不同直播的地址前两部分是不变的。推流码构成推流过

2021-03-25 16:45:59 3924

转载 Elasticsearch倒排序

一、倒排索引是什么?倒排索引是 Elasticsearch 中非常重要的索引结构,从文档单词到文档 ID的过程1.1 通过示例,简单理解下就拿专栏文章来说,我们平时在各大平台根据关键词检索时,使用到的技术就有“倒排序索引”。数据结构假设我们的文章的储存结果如上,对于关系型数据库mysql来说,普通的索引结构就是“id->题目->内容”,在我们搜索的时候,如果我们知道id或者题目,那么检索效率是很高效的,因为“id”、“题目”是很方便创建索引的。正向索引但是..

2021-03-18 14:45:47 1655

转载 Kafka高性能读写原理

一、页缓存技术 + 磁盘顺序写首先Kafka每次接收到数据都会往磁盘上去写,如下图所示。那么在这里我们不禁有一个疑问了,如果把数据基于磁盘来存储,频繁的往磁盘文件里写数据,这个性能会不会很差?大家肯定都觉得磁盘写性能是极差的。没错,要是真的跟上面那个图那么简单的话,那确实这个性能是比较差的。但是实际上Kafka在这里有极为优秀和出色的设计,就是为了保证数据写入性能,首先Kafka是基于操作系统的页缓存来实现文件写入的。操作系统本身有一层缓存,叫做page cache,是在内存里的缓.

2021-03-12 13:46:44 506

转载 Kafka重平衡

一、什么是 Rebalance分区的所有权从一个消费者转移到另一个消费者,这样的行为被称为重平衡(Rebalance)。Rebalance 实现了消费者群组的高可用性和伸缩性。消费者通过向被指派为群组协调器(Coordinator)的 broker 发送心跳来维持它们和群组的从属关系以及它们对分区的所有权。所谓协调者,在 Kafka 中对应的术语是 Coordinator,它专门为 Consumer Group 服务,负责为 Group 执行 Rebalance 以及提供位移管理和组成员管理等

2021-03-12 09:27:59 631

转载 Kafka ISR

ISR(in-sync replica) 就是 Kafka 为某个分区维护的一组同步集合,即每个分区都有自己的一个 ISR 集合,处于 ISR 集合中的副本,意味着 follower 副本与 leader 副本保持同步状态,只有处于 ISR 集合中的副本才有资格被选举为 leader。一条 Kafka 消息,只有被 ISR 中的副本都接收到,才被视为“已同步”状态。这跟 zk 的同步机制不一样,zk 只需要超过半数节点写入,就可被视为已写入成功。follwer 副本与 leader 副本之间的数据同步流

2021-03-05 16:30:28 1547

转载 Kafka副本机制ISR

Topic、Partition、Replica是主题层三要素,每个Topic都有至少一个Partition,而Partition有副本机制,Kafka定义了两类副本:领导者副本和追随者副本。只能有 1 个领导者副本和 N-1 个追随者副本。这些都是你死记硬背出来的,因此你会有很多的疑问:为什么kafka要有副本机制? 为什么要有领导者副本和追随者副本两种角色? 领导者副本和追随者副本之间的关系是什么? 当领导者副本挂了的时候,追随者副本会有怎样的操作?今天我们就让它从概念变成你的玩物副.

2021-02-14 14:52:08 642 1

转载 kafka消息检索原理

1、消息结构体构成2、消息检索的原理读取数据的过程中,数据是属于某一个topic的某一个partition对应的某一个segment文件中的某一条记录。如何高效找到这条消息,决定着kafka的性能。Kafka中数据文件的保存目录,我们可以看到的是这个partition下面有好多组文件,每一组都由一个segment数据文件,一个index索引文件,以及一个timeindex时间戳索引文件构成。Segment就是保存数据的文件,index索引文件每一条消息相对偏移量,也就是一条msg在segme

2021-02-12 19:40:26 370

转载 keepalived之vrrp_script详解

keepalived之vrrp_script详解通常情况下,利用keepalived做热备,其中一台设置为master,一台设置为backup。当master出现异常后,backup自动切换为master。当backup成为master后,master恢复正常后会再次抢占成为master,导致不必要的主备切换。因此可以将两台keepalived初始状态均配置为backup,设置不同的优先级,优先级高的设置nopreempt解决异常恢复后再次抢占的问题。1、vrrp_script能做什么ke.

2021-01-10 22:53:30 615

转载 jconsole远程连接tomcat查看服务器运行情况(jdk1.8+tomcat 8)

1、vi打开catalina.sh 文件,就是在你tomcat路径下的bin文件夹下,在如下位置添加JAVA_OPTS="-Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.port=8099 -Dcom.sun.management.jmxremote.rmi.port=8099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremot

2020-06-06 14:09:39 307

转载 JVM 堆 和 本地内存比较

Java 的类实例一般在 JVM 堆上分配,而 Java 是通过 JNI 调用 C 代码来实现 Socket 通信的,那么 C 代码在运行过程中需要的内存又是从哪里分配的呢?C 代码能否直接操作 Java 堆?为了回答这些问题,我先来说说 JVM 和用户进程的关系。如果你想运行一个 Java 类文件,可以用下面的 Java 命令来执行java my.class这个命令行中的java其实是一个可执行程序,这个程序会创建 JVM 来加载和运行你的 Java 类。操作系统会创建一个进程来.

2020-06-03 00:06:02 1254 2

转载 DMA copy和CPU copy

DMA(Direct Memory Access)直接内存访问,是一种无需CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制。使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的吞吐率。DMA方式的数据传输由DMA控制器(DMAC)控制,在传输期间,CPU可以并发的执行其他任务。当DMA结束后,DMAC通过中断通知CPU数据传输已经结束,由CPU执行相应的中断服务程序进行后续处理。与CPU copy的区别当程序或者操作者对CPU发出指令,这些指令..

2020-05-14 23:02:15 2993

转载 JS中的EventLoop的事件循环浅析

概念JavaScript 是一门单线程语言,即同一时间只能执行一个任务,即代码执行是同步并且阻塞的。eg. 这就像只有一个窗口的银行,客户需要一个一个排队办理业务。只能同步执行肯定是有问题的,所以 JS 有了一个用来实现异步的函数:setTimeout下面要讲的 Event Loop 就是为了确保 异步代码 可以在 同步代码 执行后继续执行的。由于涉及到的相关概念较多,我们先从最简单的来。队列(Queue)队列是一种 FIFO(First In, First Out) 的数...

2020-05-10 21:13:53 211

转载 DNS与HTTPDNS

DNS服务器 根DNS服务器:返回顶级域DNS服务器的IP地址 顶级域DNS服务器:返回权威DNS服务器的IP地址 权威DNS服务器:返回相应主机的IP地址 流程图: 负载均衡内部负载均衡:可以配置域名,每次返回不同的ip 全局负载均衡:高可用,如果某个服务器挂了,在DNS里直接删除对应ip,埃博征访问。示例:DNS访问数据中心中对象存储上的静态资...

2020-04-03 20:34:08 327

转载 centos7 dns(bind)安装配置

yum install -y bind bind-chroot bind-utilschroot是通过相关文件封装在一个伪根目录内,已达到安全防护的目的,一旦程序被攻破,将只能访问伪根目录内的内容,而不是真实的根目录BIND安装好之后不会有预制的配置文件,但是在BIND的文档文件夹内(/usr/share/doc/bind-9.9.4),BIND为我们提供了配置文件模板,我们可以直接拷贝过...

2020-04-01 23:33:50 435

转载 MySQL 5.6版本二进制包多实例安装

一、环境介绍(1)系统环境介绍:[root@linux-node2 ~]# uname -aLinux linux-node2 3.10.0-693.5.2.el7.x86_64 #1 SMP Fri Oct 20 20:32:50 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux[root@linux-node2 ~]# cat /etc/redhat-...

2020-03-19 21:43:32 192

转载 keepalived安装配置

keepalived简介keepalive是一款可以实现高可靠的软件,通常部署在2台服务器上,分为一主一备。Keepalived可以对本机上的进程进行检测,一旦Master(主)检测出某个进程出现问题,将自己切换成Backup(副)状态,然后通知另外一个节点切换成Master(主)状态。下载、安装# 将keepalived解压到/usr/local目录下 tar -zxvf ...

2020-03-16 23:45:42 578

转载 已安装nginx动态添加模块

说明:已经安装好的nginx,需要添加一个未被编译安装的模块,需要怎么弄呢?具体:这里以安装第三方ngx_http_google_filter_module模块为例nginx的模块是需要重新编译nginx,而不是像apache一样配置文件引用.so1. 下载第三方扩展模块ngx_http_google_filter_module# cd /data/software/# git...

2020-03-13 22:03:42 131

转载 Mysql 二进制包安装

1、上传二进制文件包[root@DB02_52 /application]# lsmysql-5.7.20-linux-glibc2.12-x86_64.tar[root@DB02_52 /application]# 2、解包及解压缩[root@DB02_52 /application]# tar xf mysql-5.7.20-linux-glibc2.12-x...

2020-03-12 14:19:34 146

空空如也

空空如也

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

TA关注的人

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