纯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()
- 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 数组属性和方法