Proxy 出站请求的缓存服务
我的应用程序中有各种各样的服务,它们向web发出外部请求以获取一些数据,比如服务A向imdb.com/query发出请求,服务B向reddit.com/query发出请求。我想在这些服务和web服务之间为这些传出请求添加一个服务,以便Proxy 出站请求的缓存服务,proxy,architecture,microservices,http-proxy,Proxy,Architecture,Microservices,Http Proxy,我的应用程序中有各种各样的服务,它们向web发出外部请求以获取一些数据,比如服务A向imdb.com/query发出请求,服务B向reddit.com/query发出请求。我想在这些服务和web服务之间为这些传出请求添加一个服务,以便 服务可以使用可配置的缓存周期缓存响应 服务是可检查的,它可以记录请求、响应时间和与请求相关的各种元数据,可能还可以选择缓存后端(内存数据库、关系数据库、文件?) 服务不应该关心请求的模式,除非它们是出站http/https请求(客户端接口不应该更改,除非它发送请
- 服务可以使用可配置的缓存周期缓存响应
- 服务是可检查的,它可以记录请求、响应时间和与请求相关的各种元数据,可能还可以选择缓存后端(内存数据库、关系数据库、文件?)
- 服务不应该关心请求的模式,除非它们是出站http/https请求(客户端接口不应该更改,除非它发送请求的目标)
这两个选项是否满足您的特定用例?不确定您为什么需要为此提供服务。如果将数据链接到Redis,您几乎可以编写自己的缓存服务 Redis是一个内存中的数据库,具有出色的响应时间。唯一的问题是,您需要一个相同数据的永久存储库,以防redis崩溃,您仍然需要访问数据 提供一个nodeJS示例,希望对您有所帮助。是的,如果需要,您还可以在那里配置时间段
module.exports.findURlDataCached = function (db, redis, url, callback) {
redis.get(title, function (err, reply) {
if (err) callback(null);
else if (reply) //Url and response exists in cache
callback(JSON.parse(reply));
else {
//Url doesn't exist in cache - we need to query the main database
db.collection('text').findOne({
title: title
}, function (err, doc) {
if (err || !doc) callback(null);
else {\\Url found in database, save to cache and
return to client
redis.set(url, JSON.stringify(doc), function () {
// Sets the expiry time by 24 hours from current time
redis.expireat(url, parseInt((+new Date)/1000) + 86400);
callback(doc);
});
}
});
}
});
};
不知道你为什么需要这方面的服务。如果将数据链接到Redis,您几乎可以编写自己的缓存服务 Redis是一个内存中的数据库,具有出色的响应时间。唯一的问题是,您需要一个相同数据的永久存储库,以防redis崩溃,您仍然需要访问数据 提供一个nodeJS示例,希望对您有所帮助。是的,如果需要,您还可以在那里配置时间段
module.exports.findURlDataCached = function (db, redis, url, callback) {
redis.get(title, function (err, reply) {
if (err) callback(null);
else if (reply) //Url and response exists in cache
callback(JSON.parse(reply));
else {
//Url doesn't exist in cache - we need to query the main database
db.collection('text').findOne({
title: title
}, function (err, doc) {
if (err || !doc) callback(null);
else {\\Url found in database, save to cache and
return to client
redis.set(url, JSON.stringify(doc), function () {
// Sets the expiry time by 24 hours from current time
redis.expireat(url, parseInt((+new Date)/1000) + 86400);
callback(doc);
});
}
});
}
});
};