# spongeRedis **Repository Path**: du-hanlin/spongeRedis ## Basic Information - **Project Name**: spongeRedis - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-08-24 - **Last Updated**: 2024-04-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 信息高铁Sponge及GUID设计
先进计算机系统研究中心 系统软件组 杜翰霖
# 1 Sponge 逻辑设计 ## 1.1 Sponge 功能1 - **接入资源注册与管理** ### 1) **设备注册方法** register | 方法名称 | 参数 | 返回值 | 功能 | | ----- | ----- | ----- | ----- | | register | info | GUID | 为接入信息高铁的资源注册,并分发GUID | > /** * 在黑板中注册一个新设备 * @param info: 设备标识信息 * @return ID: 信息高铁中的设备ID */ String register(String info); * 说明 接入信息高铁的资源的管理结构,Sponge系统和ID系统连接的关键方法。 该方法发现接入信息高铁的资源,并将其注册进数据库,供Octopus系统进行资源测调管理;该方法接收资源的标识信息,并调用GUID生成方法生成该资源所属的唯一标识GUID。 * 参数 `info`:包含接入资源身份标识信息的JSON字符串,示例如下: ```json {"type":"physical_device","identity_info":"11:22:33:44:55:66+00000-AAAAA-22222","other_info":""} ``` 上面的JSON字符串 **不带换行符** ,传入时必需和可选的字段如下所示: ```json { "type":"xxx", //*必需,接入对象类型,只能写特定的名称,见第2节 "identity_info":"xx", //*必需,接入对象的唯一标识信息,传入规则见第2节 "other_info":"", // 可为空,接入时,希望Sponge记录的其他信息,格式为json字符串 } ``` * 返回值: `ID` 由 Sponge 调用GUID生成功能生成的 ID,该ID与调用本方法注册进 Sponge 的资源一一对应,**具有唯一性,在该设备彻底注销前不再改变**。 生成失败时,返回空串。 ### 2) 设备注销方法 delete | 方法名称 | 参数 | 返回值 | 功能 | | ----- | ----- | ----- | ----- | | delete | GUID | status | 从Sponge中删除已注册的资源 | > /** * 在黑板中删除一个新设备 * @param ID 信息高铁中的设备ID * @return 执行状态 */ InteractiveStatusEnum delete(String ID); * 说明 删除已注册资源的方法。 该方法在对应资源彻底不再使用信息高铁时,从Sponge中删除对应资源。除非是硬件原因导致的不再使用,否则不建议调用本方法。 * 参数: `GUID` 设备 ID,由上述注册函数得到。如果不再特别强调,其他相关方法的参数也唯一是该 ID。 * 返回值: `status` 函数执行状态,字段类型为枚举类: ```java enum InteractiveStatusEnum { Success, // 执行成功 IDNotFound, // ID未找到 IDAlreadyExist, // ID重复存在 Activate, // 不在本方法使用 Inactivate, // 不在本方法使用 NotExist, // 不在本方法使用 Unknown; // 未知错误 } ``` 如果不再特别强调,其他相关方法的返回值也是该枚举类 ### 3) 设备心跳方法 renewal | 方法名称 | 参数 | 返回值 | 功能 | | ----- | ----- | ----- | ----- | | renewal | GUID | status | 向Sponge中对应资源发送心跳信息 | > /** * 已存在设备的心跳 * 建议续约时间: 2s * @param ID 信息高铁中的设备ID * @return 执行状态 */ InteractiveStatusEnum renewalDevice(String ID); * 说明 告知 Sponge 该资源处于活跃状态 由于不确定接入Sponge的资源是否长期活跃,每个接入资源在Sponge中都拥有一个TTL(默认值为5s)。心跳方法需要被反复调用,以确认该设备的活跃状态。建议在设备初始化时,在线程中循环调用该方法。该循环调用与Octopus-agent相关联。 ### 4) 断线后重连方法 reconnect | 方法名称 | 参数 | 返回值 | 功能 | | ----- | ----- | ----- | ----- | | reconnect | GUID | status | 在设备重新连接后,向Sponge发送重连请求,使其重新变为活跃状态 | > /** * 重新连接到黑板 * @param ID 信息高铁中的设备ID * @return 执行状态 */ InteractiveStatusEnum reconnect(String ID); * 说明 断线后Sponge内对应设备会由于收不到心跳而变为断线状态,需要通过本方法重连。‘ ## 1.2 Sponge 功能2 - **资源查询和统计** ### 1) 指定资源查询 | 方法名称 | 参数 | 返回值 | 功能 | | ----- | ----- | ----- | ----- | | getResource | infoType | resource | 查询所请求的资源 | > /** * 查询所请求的资源 * @param infoType 希望查询的资源类别 * @return 资源信息Json字符串 */ String getResource(String infoType); * 说明 根据传入的请求,查询所需资源。 不同种类的查询请求(如查询指定ID的资源是否可用,与查询指定种类的可用资源列表),会根据传入的infoType进行分类。 * 参数: `infoType` 查询请求类别,有限的json字符串,key限定为下列之一: ```java "type" // 对应于第2节-deviceInfo数据段-设备主类型 所规定的type "ID" // 已知的资源ID "keyword" // 对应于注册时,“other_info”所传入的json键值对的key。当发现key匹配时,成功返回 ``` * 返回值: `resource` 对于不同的参数,有不同种类的返回值 ```java "type":ArrayList