- 博客(25)
- 收藏
- 关注
原创 分布式事务解决方案-Seata
XA 规范 是 X/Open 组织定义的分布式事务处理(DTP,Distributed Transaction Processing)标准,XA 规范 描述了全局的TM与局部的RM之间的接口,几乎所有主流的数据库都对 XA 规范 提供了支持。分布式事务执行过程中,依次执行各参与者的正向操作,如果所有正向操作均执行成功,那么分布式事务提交。对于已经空回滚的业务,之前被阻塞的try操作恢复,继续执行try,就永远不可能confirm或cancel ,事务一直处于中间状态,这就是。
2023-05-24 17:23:05
2028
1
原创 Redis分片集群搭建及其原理
例如:key是num,那么就根据num计算,如果是{itcast}num,则根据itcast计算。利用cluster failover命令可以手动让集群中的某个master宕机,切换到执行cluster failover命令的这个slave节点,实现无感知的数据迁移。如图,在7001这个节点执行set a 1时,对a做hash运算,对16384取余,得到的结果是15495,因此要存储到103节点。时,对num做hash运算,对16384取余,得到的结果是2765,因此需要切换到7001节点。
2023-05-22 16:31:23
1675
1
原创 Redis哨兵集群搭建及其原理
在Sentinel集群监管下的Redis主从集群,其节点会因为自动故障转移而发生变化,Redis的客户端必须感知这种变化,及时更新连接信息。要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。•客观下线:若超过指定数量(quorum)的sentinel都认为该实例主观下线,则该实例。这里我们搭建一个三节点形成的Sentinel集群,来监管之前的Redis主从集群。•主观下线:如果某sentinel节点发现某实例未在规定时间响应,则认为该实例。
2023-05-22 14:39:43
1059
原创 Redis主从集群搭建及其原理
因为slave原本也是一个master,有自己的replid和offset,当第一次变成slave,与master建立连接时,发送的replid和offset是自己的replid和offset。不过,旧的数据只要是绿色的,说明是已经被同步到slave的数据,即便被覆盖了也没什么影响。master判断发现slave发送来的replid与自己的不一致,说明这是一个全新的slave,就知道要做全量同步了。单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。
2023-05-22 08:45:00
807
原创 Redis持久化
快照文件称为RDB文件,默认是保存在当前运行目录。因为是记录命令,AOF文件会比RDB文件大的多。通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。save命令会导致主进程执行RDB,这个过程中其它所有命令都会被阻塞。这个命令执行后会开启独立进程完成RDB,主进程可以持续处理用户请求,不受影响。都是对num的操作,第二次会覆盖第一次的值,因此第一个命令记录下来没有意义。
2023-05-12 16:32:58
813
原创 Redission实现分布式锁之源码解析
接上篇Redis分布式锁原理之实现秒杀抢优惠卷业务重入问题:重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中,可重入锁的意义在于防止死锁,比如HashTable这样的代码中,他的方法都是使用synchronized修饰的,假如他在一个方法内,调用另一个方法,那么此时如果是不可重入的,不就死锁了吗?所以可重入锁他的主要意义是防止死锁,我们的synchronized和Lock锁都是可重入的。不可重试:是指目前的分布式只能尝试一次,我们认为合理的情况是:当线程在获得锁失败后,他应该能再次尝试获得锁。
2023-05-11 08:00:00
748
原创 RabbitMQ-保证消息可靠性
每个RabbitTemplate只能配置一个ReturnCallback,因此需要在项目加载时配置:// 获取RabbitTemplate RabbitTemplate rabbitTemplate = applicationContext . getBean(RabbitTemplate . class);
2023-05-04 14:58:15
1704
原创 Redis分布式锁原理之实现秒杀抢优惠卷业务
背景优惠券秒杀有两个业务涉及线程并发问题,第一个是库存超卖,第二个是一人一单,这就必须采取锁的方案了。下面根据优惠券秒杀功能一步一步进行展开,利用悲观锁、同步锁、分布式锁等方案循序渐进解决各种问题。
2023-05-03 15:18:36
2659
2
原创 设计模式-单例模式
双重检查锁模式是一种非常好的单例实现模式,解决了单例、性能、线程安全问题,上面的双重检测锁模式看上去完美无缺,其实是存在问题,在多线程的情况下,可能会出现空指针问题,出现问题的原因是JVM在实例化对象的时候会进行优化和指令重排序操作。枚举类实现单例模式是极力推荐的单例实现模式,因为枚举类型是线程安全的,并且只会装载一次,设计者充分的利用了枚举的这个特性来实现单例模式,枚举的写法非常简单,而且枚举类型是所用单例实现中唯一一种不会被破坏的单例实现模式。instance对象是随着类的加载而创建的。
2023-05-02 20:28:21
1239
原创 Redis缓存穿透、击穿、雪崩问题及其解决方法
缓存穿透 :缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。常见的解决方案有两种:* 缓存空对象 * 优点:实现简单,维护方便 * 缺点: * 额外的内存消耗 * 可能造成短期的不一致* 布隆过滤 * 优点:内存占用较少,没有多余key * 缺点: * 实现复杂 * 存在误判可能
2023-05-02 11:48:04
3095
1
原创 Redis缓存(双写一致性问题)
缓存就像自行车,越野车的避震器举个例子:越野车,山地自行车,都拥有"避震器",**防止**车体加速后因惯性,在酷似"U"字母的地形上飞跃,硬着陆导致的**损害**,像个弹簧一样;
2023-05-01 18:51:44
1381
原创 微服务保护-Sentinel(限流、熔断降级、授权)
什么是雪崩问题?微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。限流是对服务的保护,避免因瞬间高并发流量而导致服务故障,进而避免雪崩。是一种预防措施。超时处理、线程隔离、降级熔断是在部分服务故障时,将故障控制在一定范围,避免雪崩。是一种补救措施。Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.htmlSentinel 具有以下特征:•丰富的应用场景。
2023-03-19 19:00:15
2461
1
原创 RabbitMQ技术-初级
基本消息队列的消息发送流程:建立connection创建channel利用channel声明队列利用channel向队列发送消息基本消息队列的消息接收流程:建立connection创建channel利用channel声明队列定义consumer的消费行为handleDelivery()利用channel将消费者与队列绑定多个消费者绑定到一个队列,同一条消息只会被一个消费者处理通过设置prefetch来控制消费者预取的消息数量交换机的作用是什么?接收publisher发送的消息。
2023-03-18 15:19:42
515
原创 RabbitMQ基础理论(入门速看)
RabbitMQ属于消息中间件,是基于队列与消息传递技术,在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统。
2023-03-18 14:16:33
80
原创 Docker基本操作
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
2023-01-24 18:56:02
1309
原创 Docker安装教程(看这篇就够了)
Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。Docker CE 分为 `stable` `test` 和 `nightly` 三个更新频道。官方网站上有各种环境下的 [安装指南](https://docs.docker.com/install/),这里主要介绍 Docker CE 在 CentOS上的安装。
2023-01-24 17:43:55
15595
3
原创 Gateway服务网关
Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。
2023-01-24 16:55:10
1035
原创 Feign远程调用
Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign其作用就是帮助我们优雅的实现http请求的发送.
2023-01-24 15:02:53
1427
原创 Nacos-统一配置中心
Nacos除了可以做注册中心,同样可以做配置管理来使用。当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。
2023-01-22 19:52:32
1017
2
原创 Nacos注册中心
本文记录了阿里巴巴推出的Nacos注册中心。SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。
2023-01-22 18:18:28
965
原创 Mapreduce之wordcount词频统计
Mapreduce之wordcount词频统计一、需求说明1.输入文件图示2.需求二、代码实现1.书写思路2.代码一、需求说明1.输入文件图示2.需求统计数据文件中每个字母出现的次数,以字母-次数的形式输出,例如(a 14)。二、代码实现1.书写思路在map阶段读取每一行以空格分隔的数据,以(字母,1)的形式输出到reduce阶段,在输出之前会底层会实现分区功能,把字母相同的结果分到一个区间,传递到reduce阶段,在reduce阶段统计每一个分区的字母出现次数。最终输出结果到指定文件
2020-10-10 22:20:10
2141
原创 Python简单实现双色球功能
Python简单实现双色球功能一、程序说明二、代码实现三、运行结果一、程序说明还程序简单实现了通过用户输入机选几注后,随机选出双色球结果,且一组结果中的号码不会出现重复现象,对号码也是进行背景颜色标记,有蓝球和红球。二、代码实现import timeimport randomr = []b = []num = int(input("机选几注:"))for i in range(1, num+1): time.sleep(1) blue = [x for x in rang
2020-06-04 19:08:10
3737
3
原创 Python+Mysql实现登录验证程序
Python+Mysql实现登录验证程序一、程序介绍1.模块2.功能二、代码实现一、程序介绍1.模块本程序使用到了random、time和pymysql,pymysql为外置库,需自行下载,安装命令:pip install pymysql。2.功能(1)注册方法:通过用户输出用户名和密码就行注册,对密码的内容和长度进行了限制,并检测用户名有无出现重复情况,满足以上情况则注册成功,写入数据库。(2)登录方法:根据用户输入的用户名和密码与数据库中的数据进行匹配得出登录结果。另外用代码模拟了一个进
2020-06-04 18:40:41
5439
1
原创 搜索关键字爬取前程无忧职位信息,保存至csv文件,并进行数据清洗,可视化(数据清洗+可视化篇)
搜索关键字爬取前程无忧职位信息,保存至csv文件,并进行数据清洗,可视化(数据清洗+可视化篇)一、 数据清洗+可视化篇1.代码部分(pandas+pyecharts)2.可视化结果一、 数据清洗+可视化篇1.代码部分(pandas+pyecharts)以下代码包含数据清洗和可视化内容(1)工资与学历关系:#!/usr/bin/env python# _*_ coding:utf-8 _*_## @Version : 1.0# @Time : xxx# @Author : xxx
2020-06-02 17:47:22
6014
9
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人