延时队列,顾名思义它是一种带有延迟功能的消息队列。下面我们先谈谈延时队列的使用场景。
背景我们先看看如下业务场景:XXX时间之后给用户发送通知;处于未支付状态的订单,一小时之后自动关闭,等等类似场景非常之多,这里不一一列举。为了解决以上问题,最简单直接的办法就是定时去扫表。简单场景下,这种方案还是可行的。但是当我们需要发送大批量的通知,或者需要扫描的表数据量很大时,这无疑会加重DB的负担
Java单机限流可以使用AtomicInteger,RateLimiter或Semaphore来实现,但是上述方案都不支持集群限流。集群限流的应用场景有两个,一个是网关,常用的方案有Nginx限流和Spring Cloud Gateway,另一个场景是与外部或者下游服务接口的交互,因为接口限制必须进行限流。 本文的主要内容为:Redis和Lua的使用场景和注意事项,比如说KEY映射
延迟脚本 HTML 4.01 为 <script> 标签定义了 defer 属性。这个属性的用途是表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕后再运行。因此,在 <script> 元素中设置 defer 属性,相当于告诉浏览器立即下载,
但延迟执行。 <!DOCTYPE html>
<html>
<head&
转载
2024-07-05 21:17:32
27阅读
1、引言Lua是巴西里约热内卢天主教大学里的一个研究小组于1993年基于标准C开发的一个轻量级的嵌入式脚本语言,其设计目的是为了将传统嵌入式程序“编写→编译→链接→运行”的复杂过程简化为“编写→运行”两个环节,从而为嵌入应用程序提供灵活的扩展和定制功能。 Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应
在网游程序里混过一阵子的程序员大都知道,“异步逻辑”是游戏逻辑里最容易失误的地方之一。刷钱、刷经验、不花钱得到道具,然后关服、回档、删号等等等等,其可能造成的危害不胜枚举。而且实际上银行系统之类的地方遇到这种问题就更有趣了:)。 不同团队对此类问题的称呼不同,
转载
2024-03-29 18:46:29
79阅读
函数闭包function createCountdownTimer(second)
local ms=second * 1000;
local function countDown()
ms = ms - 1;
return ms;
end
return countDown;
end
timer1 = createCountdownTimer(1);
for i
转载
2024-04-03 08:51:41
593阅读
Redis提供了Lua脚本功能来让用户实现自己的原子命令,但也存在着风险,编写不当的脚本可能阻塞线程导致整个Redis服务不可用。本文将介绍Redis中Lua脚本的基本用法,以及脚本超时导致的问题和处理方式。EVAL命令简介eval格式Redis 提供了命令EVAL来执行Lua脚本,格式如下EVAL script numkeys key [key …] arg [arg …]其中 script 是
转载
2024-03-23 11:29:48
66阅读
进入vi的命令
vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filen
转载
2024-07-29 18:09:34
232阅读
文章目录nginx速率限流控制作用nginx具体配置实现处理突发流量nginx并发量(连接数)控制描述 nginx速率限流控制作用速率限流可以显示一个接口在1s内的访问频率,提高服务器的可用行,同时限流是解决雪崩的有效手段控制速率的方式之一就是采用漏桶算法。漏桶(Leaky Bucket)算法思路很简单,水(请求)先进入到漏桶里,漏桶以一定的速度出水(接口有响应速率),当水流入速度过大会直接溢出
转载
2024-03-28 13:41:18
430阅读
项目要求对lua脚本进行加密,查了一下相关的资料 ,得知lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密,试了一下,确实可行。
下面是使用原生的lua解释器编译字节码:
1、新建一个名为1.lua的文件,里面只有一句话print("Hello Lua"),新建一个空的out.lua脚本文件
2、开始--运行--cmd
3、luac -o out.lua 1.lu
转载
2024-05-03 14:48:03
98阅读
如何使用LUA脚本动态解析外部智能设备的通信协议LUA调用有数组参数的C函数C调用LUA函数返回的表 有一个项目,需要通过串口或者TCP/IP读取一些设备的运行参数,例如温湿度、发电机等,通信协议一般是MODBUS或者电总协议的帧格式协议。为了使程序使用更多的设备,打算用LUA来解析通信协议。这样子在设备在不同的应用场合时,只需要更新或者增加LUA脚本就可以接入新的设备类型。实现思路每个唯一LU
转载
2024-05-16 07:16:51
150阅读
本文由探探服务端高级技术专家张凯宏分享,原题“探探长链接项目的Go语言实践”,因原文内容有较多错误,有修订和改动。1、引言即时通信长连接服务处于网络接入层,这个领域非常适合用Go语言发挥其多协程并行、异步IO的特点。探探自长连接项目上线以后,对服务进行了多次优化:GC从5ms降到100微秒(Go版本均为1.9以上),主要gRPC接口调用延时p999从300ms下降到5ms。在业内大多把目光聚焦于单
一、引言今天讲一些redis和lua脚本的相关的东西,lua这个脚本是一个好东西,可以运行在任何平台上,也可以嵌入到大多数语言当中,来扩展其功能。lua脚本是用C语言写的,体积很小,运行速度很快,并且每次的执行都是作为一个原子事务来执行的,我们可以在其中做很多的事情。由于篇幅很多,一次无法概述全部,这个系列可能要通过多篇文章的形式来写,好了,今天我们进入正题吧。二、Lua简介Lua 是一个小巧的脚
转载
2024-04-07 10:09:40
167阅读
在互联网应用中,很多场景都会涉及到高并发请求,如果不对这些请求做限制,那么服务器很快就会被挤垮。就像在12306买票一样,如果全国人民都去抢票,服务器是无论如何也扛不住压力的。这是非常现实的而且也是必须要解决的问题。其实,除了反向代理和负载均衡,网络限流也是Nginx的拿手好戏。常用于实现网络限流的两类算法有:1、令牌桶;2、漏桶。而Nginx实现限流的两种方式是:1、限制访问频率,就是限制指定时
文章目录前言一、CSRedis执行Lua脚本实现商品秒杀1.单线程模拟多线程进行秒杀2.多线程进行秒杀 前言下面是Redis分布式锁常用的概念说明:设置、获取、过期时间、删除。1、 Setnx命令:SETNX key value说明:将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。SETNX 是『SET if Not eXi
OpenResty+Lua实现WAF防火墙WAF功能白名单黑名单防止SQL注入防止CC攻击若服务器收到CC攻击,一分钟内请求数大于60,则会将对方ip封进黑名单文件结构waf 项目文件夹
init.lua 初始化函数access.lua 请求入口处lab.lua 工具方法如获取客户端ip,防止GET/POST请求的SQL注入等。config.lua 配置文件white_ip.txt 白名单b
Redis结合LUA脚本实现序列号唯一引发的问题背景项目中使用redis结合lua脚本来获取序列号,保证序列号的唯一,lua脚本是我在网上找的,看好多大神都在用,也就觉得没问题,直接引入了自己的项目。脚本内容如下(本人对脚本内容添加了注释,方便读者理解):-- 获取最大的序列号,样例为16081817202494579
-- 从redis中获取到的序列如果小于传入的序列号,就把redis中的序列号
转载
2023-08-20 20:13:02
192阅读
背景:当前对外api服务的使用者日趋增长,现有系统服务能力有限,需要做对其做容量规划,防止外界系统对当前系统的过渡调用,导致服务超载,影响核心业务的使用,故需对服务做限流措施,了解了几种限流方案,最终选择nginx+lua来实现,对现有系统无侵入,话不多说,切入正题! 1、现有linux系统nginx版本:tengine 2.2.2 服务端:java ,需先对n
转载
2023-06-30 13:21:00
524阅读
一、延时任务
at 命令的用法: at + 某个将来的具体时刻 ##表示将来在某个时刻执行特定的操作 at 参数 at -l  
Wireshark是一款著名的网络协议分析工具,基于GPLv2协议开源,支持Linux、Windows、MacOS等多个操作系统。
Wireshark is the world's foremost network protocol analyzer, and is the de facto (and often de jure) standard across many industries
转载
2024-05-20 11:41:50
62阅读