lua

面试问Redis锁,我脸都绿了......

喜你入骨 提交于 2020-11-29 04:34:34
来自:掘金(作者:Vt 编辑:陶家龙) 原文链接: https://juejin.im/post/5e61a454e51d4526f071e1df 谈起 Redis 锁,下面三个,算是出现最多的高频词汇: Setnx RedLock Redisson Setnx 目前通常所说的 Setnx 命令,并非单指 Redis 的 setnx key value 这条命令。 一般代指 Redis 中对 Set 命令加上 NX 参数进行使用,Set 这个命令,目前已经支持这么多参数可选: SET key value [EX seconds|PX milliseconds] [NX|XX] [KEEPTTL] 当然了,就不在文章中默写 API 了,基础参数还有不清晰的,可以蹦到官网。 上图是笔者画的 Setnx 大致原理,主要依托了它的 Key 不存在才能 Set 成功的特性,进程 A 拿到锁,在没有删除锁的 Key 时,进程 B 自然获取锁就失败了。 那么为什么要使用 PX 30000 去设置一个超时时间? 是怕进程 A 不讲道理啊,锁没等释放呢,万一崩了,直接原地把锁带走了,导致系统中谁也拿不到锁。 就算这样,还是不能保证万无一失。 如果进程 A 又不讲道理,操作锁内资源超过笔者设置的超时时间,那么就会导致其他进程拿到锁,等进程 A 回来了,回手就是把其他进程的锁删了,如图: 还是刚才那张图

面试问Redis锁,我脸都绿了......

倾然丶 夕夏残阳落幕 提交于 2020-11-28 04:16:46
点击上方 “ java大数据修炼之道 ”, 选择“ 置顶或者星标 ” 与你一起成长 作者: Vt juejin.im/post/5e61a454e51d4526f071e1df 谈起 Redis 锁,下面三个,算是出现最多的高频词汇: Setnx RedLock Redisson Setnx 目前通常所说的 Setnx 命令,并非单指 Redis 的 setnx key value 这条命令。 一般代指 Redis 中对 Set 命令加上 NX 参数进行使用,Set 这个命令,目前已经支持这么多参数可选: SET key value [EX seconds|PX milliseconds] [NX|XX] [KEEPTTL] 当然了,就不在文章中默写 API 了,基础参数还有不清晰的,可以蹦到官网。 上图是笔者画的 Setnx 大致原理,主要依托了它的 Key 不存在才能 Set 成功的特性,进程 A 拿到锁,在没有删除锁的 Key 时,进程 B 自然获取锁就失败了。 那么为什么要使用 PX 30000 去设置一个超时时间? 是怕进程 A 不讲道理啊,锁没等释放呢,万一崩了,直接原地把锁带走了,导致系统中谁也拿不到锁。 就算这样,还是不能保证万无一失。 如果进程 A 又不讲道理,操作锁内资源超过笔者设置的超时时间,那么就会导致其他进程拿到锁,等进程 A 回来了

Is it possible to connect Lua and javascript?

橙三吉。 提交于 2020-11-28 02:09:55
问题 I'm not sure if the question is well-posed as english is not my mother tongue. Is it possible to connect lua and javascript together? I did not find anything about that yet. Or is it possible e.g. in a html-file to script with both languages like <html> <head> </head> <body> <script></script> <?lsp ?> </body> </html> and maybe to share information between those languages?! or ist it maybe possible to use lua in js or js in lua? like <script><?lsp ?></script> <?lsp <script></script> ?> 回答1:

统一接入层架构的演进

左心房为你撑大大i 提交于 2020-11-25 14:38:56
本文系云原生应用最佳实践杭州站活动演讲稿整理。杭州站活动邀请了 Apache APISIX 项目 VP 温铭、又拍云平台开发部高级工程师莫红波、蚂蚁金服技术专家王发康、有赞中间件开发工程师张超,分享云原生落地应用的经验心得,以下是张超《有赞统一接入层架构演进》分享内容。 张超,有赞中间件团队开发工程师,网关、Service Mesh 领域的专家,热衷技术,对 Golang、Nginx、Ruby 语言等有深入的研究。 大家好,我是来自有赞的张超,有赞中间件团队的开发工程师。今天给大家带来有赞接入层架构演进的分享。 先简单给大家介绍下有赞接入层,内部名为 YZ7,从概念来讲它与网关比较接近,是基于 OpenResty 和 Nginx 来实现的,主要是有标准 C 模块,自研发的 Nginx C 模块,以及基于 lua 实现的模块。它作为有赞业务流量的公网入口,提供 Traffic Shaping,包括限流、安全相关的像 WAF、请求路由等功能,请求路由包含标准的蓝绿发布、灰色发布功能,负载均衡等方面的功能。今天的分享,主要是从下面从三个方面来深入解析: 旧版接入层架构痛点 新架构设计分析 新架构设计总结 旧版接入层架构痛点 首先从旧版接入层架构的相关痛点出发,开始新架构的设计分析。 上图是旧版接入层架构的纵向切面,方案是早几年之前的。当时流行用 redis 做配置同步

弄懂这些redis分布式锁知识点,明天就去跟老板谈涨薪!(建议收藏)

白昼怎懂夜的黑 提交于 2020-11-25 13:47:48
1 介绍 这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁。会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁。 本篇文章会将分布式锁的实现分为两部分,一个是单机环境,另一个是集群环境下的Redis锁实现。在介绍分布式锁的实现之前,先来了解下分布式锁的一些信息。 开始之前,记得点赞收藏加关注哦 ,需要下载PDF版本和获取更多知识点、面试题的朋友可以点一点下方链接免费领取 链接: 点这里!!! 799215493 暗号:CSDN 2 分布式锁 2.1 什么是分布式锁? 分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现,如果不同的系统或同一个系统的不同主机之间共享了某个资源时,往往需要互斥来防止彼此干扰来保证一致性。 2.2 分布式锁需要具备哪些条件 互斥性:在任意一个时刻,只有一个客户端持有锁。 无死锁:即便持有锁的客户端崩溃或者其他意外事件,锁仍然可以被获取。 容错:只要大部分Redis节点都活着,客户端就可以获取和释放锁 2.3 分布式锁的实现有哪些? 数据库 Memcached(add命令) Redis(setnx命令) Zookeeper(临时节点) 等等 3 单机Redis的分布式锁 3.1 准备工作 3.1.1 定义常量类 public class LockConstants { public static final

spring cloud gateway

荒凉一梦 提交于 2020-11-25 07:13:59
Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。 网关作为流量的,在微服务系统中有着非常作用。 网关常见的功能有:   1、路由转发、   2、权限校验、   3、限流控制、   4、日志监控   5、协议转换   6、网关层缓存 总结:   网关的本质,就是它可以实现功能的集合。 概览图:    关键的类:   1、RouteLocator 路由的转发。   2、predicate 请求与路由进行匹配       3、filter 过滤与修改     3.1、GatewayFilter : 需要通过spring.cloud.routes.filters 配置在具体路由下,只作用在当前路由上或通过spring.cloud.default-filters配置在全局,作用在所有路由上。       3.2、GlobalFilter : 全局过滤器,不需要在配置文件中配置,作用在所有的路由上,最终通过GatewayFilterAdapter包装成GatewayFilterChain可识别的过滤器,它为请求业务以及路由的URI转换为真实业务服务的请求地址的核心过滤器,不需要配置,系统初始化时加载,并作用在每个路由上。        4、自定义过滤器,需要实现以下两个接口 :GatewayFilter, Ordered   5

面试问Redis锁,我脸都绿了......

痞子三分冷 提交于 2020-11-25 03:19:04
来自:掘金(作者:Vt 编辑:陶家龙) 原文链接: https://juejin.im/post/5e61a454e51d4526f071e1df 谈起 Redis 锁,下面三个,算是出现最多的高频词汇: Setnx RedLock Redisson Setnx 目前通常所说的 Setnx 命令,并非单指 Redis 的 setnx key value 这条命令。 一般代指 Redis 中对 Set 命令加上 NX 参数进行使用,Set 这个命令,目前已经支持这么多参数可选: SET key value [EX seconds|PX milliseconds] [NX|XX] [KEEPTTL] 当然了,就不在文章中默写 API 了,基础参数还有不清晰的,可以蹦到官网。 上图是笔者画的 Setnx 大致原理,主要依托了它的 Key 不存在才能 Set 成功的特性,进程 A 拿到锁,在没有删除锁的 Key 时,进程 B 自然获取锁就失败了。 那么为什么要使用 PX 30000 去设置一个超时时间? 是怕进程 A 不讲道理啊,锁没等释放呢,万一崩了,直接原地把锁带走了,导致系统中谁也拿不到锁。 就算这样,还是不能保证万无一失。 如果进程 A 又不讲道理,操作锁内资源超过笔者设置的超时时间,那么就会导致其他进程拿到锁,等进程 A 回来了,回手就是把其他进程的锁删了,如图: 还是刚才那张图

redis-分布式布隆过滤器(Bloom Filter)详解(初版)

随声附和 提交于 2020-11-23 19:38:59
redis-分布式布隆过滤器(Bloom Filter)详解(初版) 1 布隆过滤器(Bloom Filter)原理以及应用 假设现在有50亿个电话号码,现在有1万个电话号码,需要快速判断这些电话号码是否已经存在? 现在有3中途径 1 通过数据库查询,但是不能快速查询。 2 把电话号码预先放在一个集合中,如果用long类型存储的话,50亿 * 8字节 = 大于需要40GB(内存浪费或者严重不够) 3 使用redis的hyperloglog,但是准确度不高。 类似的问题: 垃圾邮件过滤 文字处理中的错误单词检测 网络爬虫重复URL检测 会员抽奖 判断一个元素在亿级数据中是否存在 缓存穿透 而布隆过滤器则可以解决上述问题 1 什么是布隆过滤器 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。 当一个元素被加入集合时,通过 K 个 Hash 函数将这个元素映射成一个位阵列(Bit array)中的 K 个点,把它们置为 1。检索时,我们只要看看这些点是不是都是 1 就(大约)知道集合中有没有它了: 如果这些点有任何一个 0,则被检索元素一定不在; 如果都是 1,则被检索元素很可能在。

[记录]MySQL读写分离(Atlas和MySQL-proxy)

狂风中的少年 提交于 2020-11-21 14:37:41
MySQL读写分离(Atlas和MySQL-proxy) 一、阿里云使用Atlas从外网访问MySQL(RDS) (同样的方式修改配置文件可以实现代理也可以实现读写分离,具体看使用场景) 1.在跳板机上使用Atals中转访问RDS不会影响效率,不要认为使用Atals后连接数据库会慢,连接数会疯狂占用,事实情况是刚好相反。 Atlas不处理主从数据库数据同步,只是个负载均衡的连接池工具,主从同步请使用其他工具另行实现,本文只为了外网访问RDS(流量免费),实现连接池,有效利用RDS连接数。 Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平 台,每天承载的读写请求数达几十亿条。 主要功能: 1)读写分离 2)从库负载均衡 3)IP过滤 4)自动分表 5)DBA可平滑上下线DB 6)自动摘除宕机的DB 2.下载: centos 5.x/6.x: https://github.com/Qihoo360/Atlas/releases/download/2.1/Atlas-2.1.el5.x86_64.rpm (centos5.x)

[触动精灵]零基础小白学触动5-8

荒凉一梦 提交于 2020-11-21 04:00:43
零基础小白学触动 - 05 - 触动常用函数 点击 滑动 原理 其实都可以分解成 按下=》 等待一定时间或者移动动作=》 松开 点击: tSLib库的函数tap(x,y) 后面还有2个参数 可以自己看手册 https://www.zybuluo.com/miniknife/note/293935#函数tap-点击 滑动 moveTo(x1,y1,x2,y2,step) 详细的 https://www.zybuluo.com/miniknife/note/293935#函数moveto-滑动 ?如何实现精确滑动 https://zimaoxy.com/b/t-860-1-3.html 深入研究 暂时还没理解思路 而触动手册里面给的例子测试过 无法做到完美的精确滑动 就不用了 还有其他模式的滑动 在当前滑动无效的情况下 延时 mSleep() 坐标初始化函数 init(0) 没什么说的 0是home在下 1是home在右 2是home在左 脚本开始要坐标初始化下 而且不能把init() 放到其他文件然后require导入 是对main.lua无效的 血泪的教训 小知识:require 调用文件的使用注意 require会自动判断当前原码是否已经载入该文件 如果已经载入这个文件就不会再继续载入 给我们一个省事的用法 无法叠加require 比如说 我在主脚本里面调用自己的模版