前提: 因近段时间,我在考虑新的工作机会,并在自己的以往的工作内容做了一些简单的总结,以及部分在面试过程当中遇到了一些新的问题,总结一篇关于Golang工程师针对后端开发的一些知识点。 本文仅作为参考,只是知识点,有些点不会说的很详细,也有一些其他的工具或者知识没有放入本文中,如您有意见或建议,请提出,后面会对文章内容进行更新。本文会从以下几个方面阐述数据结构算法网络系统内核数据库架构Golang            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-01 10:54:14
                            
                                57阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1. go实现分布式锁通过 golang 实现一个简单的分布式锁,包括锁续约、重试机制、singleflght机制的使用1.1 redis_lock.gopackage redis_lock
import (
	"context"
	_ "embed"
	"errors"
	"github.com/go-redis/redis/v9"
	"github.com/google/uuid"
	"go            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-08 23:44:33
                            
                                378阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            分布式锁应该具备哪些条件:1、在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行; 2、高可用的获取锁与释放锁; 3、高性能的获取锁与释放锁; 4、具备可重入特性; 5、具备锁失效机制,防止死锁; 6、具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败。 常见的分布式锁解决方案如下:基于数据库实现分布式锁 基于ZooKeeper实现分布锁 基于缓存(Redis等)实现分布式锁 1            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-02 22:33:48
                            
                                95阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            使用MySQL实现分布式锁简而言之,使用表锁或者行锁创建锁表:在MySQL中创建一个表,用于存储锁的信息,包括锁名称、锁状态、持有锁的客户端ID等。获取锁:当一个客户端需要获取锁时,向MySQL发送一个INSERT语句,将锁信息插入到锁表中。如果INSERT语句返回了成功的结果,则表示该客户端已经成功获取了锁。释放锁:当一个客户端需要释放锁时,向MySQL发送一个DELETE语句,将锁信息从锁表中            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-01 20:02:15
                            
                                108阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            随机value 防止释放其他服务的锁 import ( "crypto/rand" "encoding/base64" "errors" "fmt" "github.com/go-redis/redis/v7" "time" ) //分布式锁实现(不可重入) type RedisLock struc ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-06-02 23:37:00
                            
                                305阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            在系统开发中,有一类任务不是立即执行,而是在未来某个时间点或者按照一定间隔去执行,比如日志定期压缩、报表制作、过期数据清理等,这就是定时任务。在单机中,定时任务通常需要实现一个类似crontab的系统,一般有两种方式:最小堆,按照任务执行时间建堆,每次取最近的任务执行时间轮,将任务放到时间轮列表中,每次转动取对应的任务列表执行最小堆最小堆是一种特殊的完全二叉树,任意非叶子节点的值不大于其子节点,如            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-18 08:11:44
                            
                                109阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            技术背景首先我们需要先来了解下什么是分布式锁,以及为什么需要分布式锁。对于这个问题,我们可以简单将锁分为两种——内存级锁以及分布式锁,内存级锁即我们在 Java 中的 synchronized 关键字(或许加上进程级锁修饰更恰当些),而分布式锁则是应用在分布式系统中的一种锁机制。分布式锁的应用场景举例以下几种:互联网秒杀抢优惠卷接口幂等校验我们接下来以一段简单的秒杀系统中的判断库存及减库存来描述下            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-06-05 21:45:36
                            
                                184阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            许多场景中,数据一致性是一个比较重要的话题,在单机环境中,我们可以通过Java提供的并发API来解决;而在分布式环境(会遇到网络故障、消息重复、消息丢失等各种问题)下要复杂得多,常见的解决方案是分布式事务、分布式锁等。本文主要探讨如何利用Zookeeper来实现分布式锁。关于分布式锁分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在实现分布式锁的过程中需要注意的:锁的可重入性(递归调用不应            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-06-08 14:50:33
                            
                                297阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            前言大家好,我是飓风,今天我们来聊聊分布式锁的原理、以及基于 mysql 怎么来实现分布式锁。那么大家现在能不能想一想,分布式锁的使用场景都有哪些呢?下面我列举一些分布式锁的场景:记住一点,一定是在分布式的环境下,所以肯定是多个服务,或者多个进程来操作一个共享资源。扣减库存订单支付,检查订单是否进行了重复支付的操作缓存击穿/缓存雪崩,防止大并发对 DB 的操作上面的场景大家有没有发现一个共同点,那            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-19 17:12:58
                            
                                115阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Java利用MySQL实现分布式锁的详细指南
在微服务架构和分布式系统中,常常需要确保多个服务之间对共享资源的访问是互斥的。分布式锁便是为了解决这个问题而设计的。本文将讲述如何使用Java与MySQL实现分布式锁的机制。
## 整体流程
下面是实现分布式锁的基本流程:
| 步骤 | 描述                     |
| ---- | ------------------            
                
         
            
            
            
            在微服务的docker容器中,多个pod抢占一套资源时,需要用到全局锁,一般使用redis可以很好的实现保护功能。安装redis-server:apt install redis-serve            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-12-21 10:42:53
                            
                                613阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            分布式锁,顾名思义,在分布式环境中解决并发问题而采用的锁。这里要说的几种分布式锁的实现方式分别是基于数据库实现、基于redis实现以及基于ZooKeeper实现。业务场景商城抢单,下单后,判断商品库存是否大于0,若大于0,库存减1,不然,抢单失败。这里模拟的就是判断库存以及更新库存的逻辑。表结构字段注释idIDgoods_name商品名称goods_no商品编号goods_stock商品剩余库存v            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-29 11:00:03
                            
                                107阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            te-lock-over-etcd/ By zieckey · 2016年02月24日 · 1205 Words · ~3min reading time | 编辑这个页面 | Tags: Golan            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2016-06-21 15:03:00
                            
                                152阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            分布式锁mysql实现方式 方式1:唯一索引创建锁表,内部存在字段表示资源名及资源描述,同一资源名使用数据库唯一性限制。多个进程同时往数据库锁表中写入对某个资源的占有记录,当某个进程成功写入时则表示其获取锁成功其他进程由于资源字段唯一性限制插入失败陷入自旋并且失败重试。当执行完业务后持有该锁的进程则删除该表内的记录,此时回到步骤一。 表数据create table `database_lock`(            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-22 17:52:19
                            
                                324阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1.背景介绍  在多线程高并发场景下,为了保证资源的线程安全问题, 
 jdk 
 为我们提供了 
 synchronized 
 关键字和  ReentrantLock 
 可重入锁,但是它们只能保证一个 
 jvm 
 内的线程安全。在分布式集群、微服务、云原生  横行的当下,如何保证不同进程、不同服务、不同机器的线程安全问题, 
 jdk 
 并没有给我们提供既有的 解决方案。此时            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-13 09:39:33
                            
                                88阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1.使用数据库进行分布式加锁行锁以mysql为例,进行举例 :1.1 for update在mysql中使用for update获得行锁。for update是一种行级锁,又叫排它锁,一旦用户对某个行施加了行级锁,则该用户可以更新也可以查询也可以更新被加锁的数据行,其他用户只能查询,不能更新被加锁的数据行,如果其他用户想更新该表中的数据行,则也必须对表施加行级锁。释放行级:1.执行提交commit            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-13 18:15:01
                            
                                333阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Redis Golang分布式锁
分布式锁是在分布式系统中常用的一种机制,用于控制并发访问共享资源的问题。在Golang中,我们可以使用Redis来实现分布式锁。Redis是一个高性能的键值存储数据库,支持多种数据结构,也支持分布式锁的实现。
## Redis分布式锁原理
在Redis中,可以利用SETNX命令来设置一个key,如果key不存在,则设置成功,可以获取到锁;如果key已经存            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-05-09 05:15:09
                            
                                112阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            01为什么要有分布式锁JUC提供的锁机制,可以保证在同一个JVM进程中同一时刻只有一个线程执行操作逻辑;多服务多节点的情况下,就意味着有多个JVM进程,要做到这样,就需要有一个中间人;分布式锁就是用来保证在同一时刻,仅有一个JVM进程中的一个线程在执行操作逻辑;JUC的锁和分布式锁都是一种保护系统资源的措施。尽可能将并发带来的不确定性转换为同步的确定性;02分布式锁特性特性1:互斥性。在任意时刻,            
                
         
            
            
            
            前言无论是单机锁还是分布式锁,原理都是基于共享的数据,判断当前操作的行为。对于单机则是共享RAM内存,对于集群则可以借助Redis,ZK,DB等第三方组件来实现。Redis,ZK对分布式锁提供了很好的支持,基本上开箱即用,然而这些组件本身要高可用,系统也需要强依赖这些组件,额外增加了不少成本。DB对于系统来说本身就默认为高可用组件,针对一些低频的业务使用DB实现分布式锁也是一个不错的解决方案,比如            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-05 16:09:01
                            
                                135阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # Redis分布式锁实现
## 1. 简介
在分布式系统中,为了保证共享资源的一致性和并发访问的正确性,我们通常需要使用分布式锁。Redis是一个高性能的内存存储系统,它提供了一种简单而可靠的方式来实现分布式锁。
本文将教你如何使用Golang来实现Redis分布式锁。我们将通过以下步骤来完成这个任务:
1. 连接Redis服务器
2. 生成唯一的锁标识符
3. 尝试获取锁
4. 执行业务            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-12-10 13:51:59
                            
                                59阅读