通过HTTP请求相关、缓存相关和数据库查询相关等组件编排一个具有查询缓存功能的API,通过配置缓存可以加快API请求的响应,提升用户体验
模板示例
组件配置说明
HandleHttpRequest
启动HTTP服务器并监听HTTP请求
- 监听端口:配置监听端口
- HTTP会话服务:配置HTTP控制器服务,用于缓存HTTP请求信息,与HandleHttpResponse需共用同一个控制器服务
- 请求路径:配置URL中请求路径,可以带参数,支持正则表达式
- 以上部分是必须配置项,其余部分可以按需进行配置
FetchDistributedMapCache
通过指定键名在缓存中查询数据
- 缓存标识符:指定查询数据实体的缓存键,可以是数据流属性或者是一个表达式,多个值以逗号分隔
- 分布式缓存服务:指定用于缓存数据流的控制器服务DistributedMapCacheClient,本流程中需与PutDistributedMapCache、DeleteDistributedMapCache组件共用同一个控制器服务
- 以上部分是必须配置项,其余部分可以按需进行配置
ExecuteSQL
查询数据库数据
- 数据库连接池服务:配置数据库连接信息
- 数据库查询:配置数据库查询SQL语句
- 以上部分是必须配置项,其余部分可以按需进行配置
ConvertAvroToJSON
ExecuteSQL组件查询到的数据输出格式为Avro,不便于查看,通过ConvertAvroToJSON将数据转换为JSON格式
- 输出选项:配置输出结果为JSON数组
- 以上部分是必须配置项,其余部分可以按需进行配置
PutDistributedMapCache
将数据库查询到的信息写入缓存中
- 缓存实体键:指定写入数据实体的缓存键,可以是数据流属性或者是一个表达式
- 缓存服务:指定用于缓存数据流的控制器服务DistributedMapCacheClient,本流程中需与FetchDistributedMapCache、DeleteDistributedMapCache组件共用同一个控制器服务
- 更新策略:指定如何更新缓存中实体内容的策略
- cleanCacheTime:该属性是新增的自定义属性,通过该属性记录删除缓存的时间,也即是缓存的有效时间,本流程中设置为30s
- 以上部分是必须配置项,其余部分可以按需进行配置
RouteOnAttribute
RouteOnAttribute组件用来配置缓存删除,通过表达式来达到一个循环的效果
- TimeOut:该属性是新增的自定义属性,该属性通过表达式来比较当前时间和之前写入缓存是设置的删除缓存时间,若当前时间大于缓存删除时间,则调用清理缓存的组件,否则进入循环
- 以上部分是必须配置项,其余部分可以按需进行配置
DeleteDistributedMapCache
清楚指定缓存
- 缓存条目标识符:指定删除数据实体的缓存键,可以是数据流属性或者是一个表达式,多个值以逗号分隔
- 分布式缓存服务:指定用于缓存数据流的控制器服务DistributedMapCacheClient,本流程中需与FetchDistributedMapCache、PutDistributedMapCache组件共用同一个控制器服务
HandleHttpResponse
发送HTTP响应给输入数据流的请求者,此组件需与HandleHttpRequest结合使用
- HTTP状态码:响应HTTP请求时使用的HTTP状态代码,本流程中设置为200
- HTTP会话服务:用于缓存HTTP请求信息的HTTP会话服务,需与HandleHttpRequest共用同一个控制器服务
- Content-Type:新增自定义属性,配置该属性可以避免响应信息中文乱码问题
流程说明
此流程中,用户请求过来,首先查询缓存,如果缓存中有相关数据,则直接从缓存中获取数据响应给用户;若缓存中没有数据,则去数据库中查询,查询结果进行数据格式转换以后写入缓存中,同时设定缓存的过期时间,当时间超过缓存过期时间,删除该缓存。
注意
:
此流程中需要在模板的配置页面中新增一个DistributedMapCacheServer服务端控制器服务
流程模板
参见:模板文件