Redis分布式锁同步问题-Redlock 2024-07-10 分布式锁知识回顾 业务场景 优惠券领券限制张数 商品库存超卖 …… 起因 为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度 利用互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题 实现目标 保证同一时间只有一个客户端可以对共享资源进行操作。 解决方案 Redis+Lua脚本 使用Redission框架(底层也是Lua+WatchDog机制) Redis主从架构下的锁同步问题 生产环境下一般都是集群部署,则存在主从架构下的锁同步问题。 节点一在主节点获取分布式锁成功。 Redis主节点再同步数据到从节点时宕机,数据没同步成功。 高可用机制则Redis从节点升级为主节点(但是没有锁信息)。 节点二在新的Redis上也成功获取分布式锁。 导致一个锁资源同时被两个节点获取,这个就出现了问题。 Redlock算法 官方文档 Redis从3.0版本开始支持 Redlock算法,通过在多个 Redis 节点上创建同一个锁来防止主从节点之间出现的数据不一致的问题。 在 Redlock 算法中,需要从多个Redis节点获取锁,并对取锁结果进行校验,从而避免....
Vue3 2024-10-26 Node.js环境安装 Node版本选择 下载地址:https://nodejs.org/en/download Windows11安装Node.js参考步骤 切换镜像测试 # 切换镜像源 npm config set registry https://registry.npmmirror.com # 查看是否生效 npm config get registry # 进行安装测试 npm install -g express VScode(Visual Studio Code) 下载地址:https://code.visualstudio.com/Download Vue官网 快速上手 通过CDN使用Vue <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</t....
Selenium 2024-06-29 Web UI 自动化测试 利用软件工具模拟用户在图形界面上与应用程序交互的过程,自动执行测试用例并验证 UI 的功能是否符合预期 使用自动化工具来打开网站/定位页面元素、操作元素(如输入文本、点击按钮等)模拟用户行为(如下拉菜单、滑动页面等) 通过 UI 自动化测试可以 提高测试效率、确保回归测试的全面性,减少重复工作,且对持续集成和持续部署过程帮助很大 UI 自动化技术也可以爬取网页的核心内容,并且结合数据处理,存储到数据库和二次使用,即爬虫应用 优点: 高效率 可以在较短时间内执行大量的测试用例,提高测试效率,对于回归测试,可以显著减少测试所需的时间和人力。 减少人为错误 自动化测试脚本是由代码控制的,相比于人工测试,可以减少由于人为因素导致的错误。 可重复性和一致性 自动化测试脚本可以反复执行,每次测试的条件和步骤都是一致的,保证测试的一致性和可重复性。 更好的资源利用 自动化测试可以在非工作时间执行,如夜间,充分利用无人值守时间,提高了资源的利用率。 缺点: 不能完全取代手工测试 自动化测试虽然可以执行大量的测试用例,但对于一些需要人脑判断结果的测试用例 或者对于新功能的首次测....
RBAC 2024-03-02 RBAC RBAC 就是一个权限控制模型,这个模型是经过时间沉淀之后,相当通用、成熟且被大众接受认可的一个模型。我的理解是 RBAC 和数学公式是一个道理,数学题可以套用数学公式,而权限系统也可以套用 RBAC 权限模型。 RBAC(Role-Based Access Control)权限模型的概念,即:基于角色的权限控制。通过角色关联用户,角色关联权限的方式间接赋予用户权限。 利用 MySQL 数据库实现了 RBAC 权限模型。因为 MySQL 支持 JSON 类型的字段,所以我们定义多对多关系的时候,可以使用 JSON 数组字段。虽然 Phoenix 也支持 JSON 类型字段,但是相关的函数较少,而且 JSON 类型字段不支持表连接。所以在 Phoenix 中,我们只能用交叉表记录多对多关系了。 一、IDEA 连接 Phoenix 由于 Phoenix 自带的命令行客户端没有图形界面直观,所....
SaToken 2024-03-02 JWT JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。 下列场景中使用 JSON Web Token 是很有用的: Authorization (授权) : 这是使用 JWT 的最常见场景。一旦用户登录,后续每个请求都将包含 JWT,允许用户访问该令牌允许的路由、服务和资源。单点登录是现在广泛使用的 JWT 的一个特性,因为它的开销很小,并且可以轻松地跨域使用。 Information Exchange (信息交换) : 对于安全的在各方之间传输信息而言,JSON Web Tokens 无疑是一种很好的方式。因为 JWT 可以被签名,例如,用公钥/私钥对,你可以确定发送人就是它们所说的那个人。另外,由于签名是使用头和有效负载计算的,您还可以验证内容没有被篡改。 传统的单体 JavaW....
Hbase+Phoenix 2024-03-02 背景 mysql 单表数据量超过 2000W,CRUD 性能会极具下降。需要 DBA 或自动化脚本定期归档(半年或一年数据迁移到归档数据库中),以起到缩表的目的。电商项目一两个月就能积累几千万条数据。在这种情况下,要么频繁的做归档,要么选择可以容乃数百 TB 而不需要归档的大数据平台(降低运维成本)。 HBase HBase 是一种构建在 HDFS 之上的分布式、面向列(但不是列存储)的存储系统。 在需要实时读写 、随机访问 超大规模数据集时,可以使用 HBase。 HBase 可以通过线性方式增加节点来进行扩展 。HBase 不是关系型数据库,自身不支持 SQL 查询引擎,HBase 适合将大而稀疏的表放在分布式集群上。 HBase 是 Google Bigtable 的开源实现,利用 Hadoop HDFS 作为其文件存储系统;利用 Hadoop MapReduce(或其他计算引擎) 来处理 HBase 中的海量数据;使用 Zookeeper 作为协同服务。 HBase 的特点 容量大:一个表可以有上亿行,上百万列 面向列:面向列的存储(但不是列存储,参考 HBase 数据存储)....