纯Lua模拟出oenrestry+lua下Hash一致性闭环代理分发
时间:2022-07-22
本文章向大家介绍纯Lua模拟出oenrestry+lua下Hash一致性闭环代理分发,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原理
Lua模拟脚本
1. 配置文件
---
--- Generated by EmmyLua(https://github.com/EmmyLua)
--- Created by parker.
--- DateTime: 2020/5/6 11:19 下午
--- 配置类
---
server = {}
server.address = {
"192.0.0.1",
"192.0.0.2",
"192.0.0.3",
"192.0.0.4",
"192.0.0.5"
}
return server
2. Hash一致性闭环分发算法
---
--- Generated by EmmyLua(https://github.com/EmmyLua)
--- Created by parker.
--- DateTime: 2020/5/6 11:17 下午
--- 纯Lua模拟出oenrestry+lua下Hash一致性闭环代理分发
---
local hashRequestInfo = {}
--- 初始化
hashRequestInfo.init = function()
local that = hashRequestInfo
--- 获得配置服务器地址
local serverArr = require("config.ServerLocal")
--- 保存服务器数组
that.ipAddress = serverArr.address
--- 模拟执行 用户访问
that.requestMode()
end
--- 获得服务器索引 取模
hashRequestInfo.getServerIndex = function(args)
local that = hashRequestInfo
local count = #that.ipAddress
local index = args % count + 1
return index
end
--- 获得对应服务器映射地址
hashRequestInfo.getServerAddress = function(args)
local that = hashRequestInfo
local index = that.getServerIndex(args)
local serverIpAddress = that.ipAddress[index]
return serverIpAddress
end
--- 模拟执行
hashRequestInfo.requestMode = function()
local that = hashRequestInfo
--- 模拟 1000 个 用户访问
for i = 1, 1000 do
local randomNum = math.random(1000,100000)
local serverAddress = that.getServerAddress(randomNum)
print("访问服务器地址:http://"..serverAddress)
end
end
--- 执行
hashRequestInfo.init()
- PN结加正向偏置电压 其空间电荷区为何变窄
- Thrift入门实践
- Centos7下部署两套python版本并存环境的操作记录
- MapX中取得图元操作的速度测试
- FluorineFx:基于RSO(远程共享对象)的文本聊天室
- 扫盲文章:AMF,RTMP,RTMPT,RTMPS
- "操作必须使用一个可更新的查询"问题
- 利用fluorineFx将DataTable从.Net传递到Flash
- Linux服务器性能压力测试
- linq to sql中的自动缓存(对象跟踪)
- php5.6安装Zend Opcache扩展
- 图片相似检测:三行代码实现
- Gitlab备份和恢复操作记录
- 利用图形界面对Sql2008做日志收缩
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MySQL复制全解析 Part 5 MySQL GTID的格式和存储
- MySQL复制全解析 Part 6 MySQL GTID 生命周期
- MySQL复制全解析 Part 7 gtid_next和gtid_purged系统变量解析
- MySQL复制全解析 Part 8 GTID Auto-Positioning
- 红队之windows用户和组
- MySQL 复制全解析 Part10 基于GTID的MySQL复制的一些限制
- MySQL 复制全解析 Part 11 使用xtrabackup建立MySQL复制
- windows之NTLM认证
- 3A之自动白平衡(AWB)篇
- 欧拉角旋转
- matplotlib中文乱码的两种解决方案
- MySQL MHA部署 Part 3 MHA软件安装
- 自然语言处理的基本要义:向量表示法
- MySQL MHA部署 Part 4 MHA部署前准备
- 【NPM库】- 0x04 - Mock Data