我们软件环境中的当前方法是在分布式SOA基础架构中拥有多个WCF服务。有多个服务为前端网站提供股票,债券,货币,共同基金等股票交易所的信息。
webservices查询数据库,我们直接从.net框架获得ThreadCache,它将信息缓存3-5分钟。如果缓存过期,则最终用户将调用将从数据库中检索新信息的方法。因此,除了调用带有过期数据的Web服务的网站之外,该网站非常快......该用户的响应时间非常慢......可能大约10-20秒:/
我希望每隔5分钟将此市场信息提供给在Windows服务器上运行的Redis服务。 WCF服务将从REDIS而不是数据库获取信息。
我的一个大问题是如何使用在同一台机器上运行的新信息更新REDIS服务的数据馈送器的最佳方法?
给你意见! :)
答案 0 :(得分:1)
以下是我的意见
webservices查询数据库,我们直接使用ThreadCache 来自.net框架,它将信息缓存3-5分钟。如果 缓存已过期,它将是调用该方法的最终用户 这将从数据库中检索新信息。所以 除了调用webservice的网站之外,网站速度非常快 使用过期的数据......用户的响应时间会很慢...... 可能大约10-20秒:/
为什么需要服务层?如果它只用于缓存数据,我强烈建议您使用AppFabric直接查询分布式缓存或简单地查询Redis。在您的情况下,另一层似乎没用,特别是因为代码似乎与您的网站严重耦合。
- 每5分钟运行一次Windows服务
- 守护进程每5分钟运行一次 工作负载计划程序的分钟数。
- 或许我可以实施一些 Redis中的方法和他自己(REDIS)会检查数据是否有 过期然后调用一些更新REDIS数据的方法 存储
Windows服务或守护程序,它完全相同,这是设置后台处理的推荐方法。我熟悉topshelf,我发现它非常强大。 即使Redis现在支持Keyspace Notifications,也不可能直接调用.net中的内容。
您的数据会在5分钟后过期吗?好的,但是在后台每分钟运行一次任务来预加载/预先缓存数据。对于最终用户来说总是很快,因为你永远不必重新加载它。
最后Redis的另一个重要特征是PubSub。当Redis中的某些内容发生变化时,很容易通知所有订阅者。只需几行,它允许您在所有网站上实现本地缓存失效,并避免不同步的节点。
我想将此市场信息提供给运行的Redis服务 Windows服务器每5分钟一次。获得WCF服务 来自REDIS而非数据库的信息。
目前,Windows上的Redis端口不是生产质量,但可以在Windows(服务器)环境中用于开发目的。我使用它几个月后发现它非常稳定但是建议在Linux环境中运行Redis。