自安装内存缓存 - 它存在吗?

发布于 2024-11-07 06:28:49 字数 467 浏览 1 评论 0原文

我读过各种跨机器缓存机制(Redis、Velocity、nMemCached 等)。它们似乎都需要一个中央机器来管理缓存。

是否存在自动安装的缓存引擎之类的东西 - 例如,如果当前子网上不存在缓存,则会创建一个节点。如果确实存在,是否会将机器加入到缓存池?

上下文:我有一个应用程序,通过 ClickOnce 部署到同一子网内的大约 100 个用户。这些用户中的每一个都通过 WAN(跨越国家/地区,在某些情况下跨越海洋)访问资源,这些资源执行 CPU 密集型计算并需要大量时间才能完成。

结果,该应用程序感觉很迟缓。我已尽我所能通过将长期查询放入单独的线程来缓解这种情况。但这只能带你到目前为止。我添加了本地缓存(通过 SQL Compact DB),效果非常好,但大多数用户访问类似的信息,并且它们一起对计算服务器施加了一些压力。我认为,如果我能够在我的应用程序中提供内存缓存,并且能够与其他计算机无缝协作以创建网络范围的缓存机制,我认为我可以将其提升到一个新的水平。

I've read about various cross-machine caching mechanisms (Redis, Velocity, nMemCached, etc...). They all seem to require a central machine to manage the cache.

Is there such a thing as a cache engine that self installs - e.g. if caching does not exist on the current subnet, it creates a node. If it does exist, it joins the machine to the caching pool?

Context: I have an app that deploys to around 100 users within the same subnet via ClickOnce. Each of these users access a resource via the WAN (across country and in some cases across the ocean) that performs very CPU-intensive computations and takes significant time to complete.

As a result, the app feels sluggish. I've done what I could to alleviate that by throwing long-lived queries onto separate threads. But that only takes you so far. I've added local caching (via a SQL Compact DB) which works pretty good, but most users access the similar information and together they exert a bit of pressure on the computation server. I think I can take it to the next level if I am able to ship an in-memory cache with my app that is able to seemlessly work with other machines to create a network wide caching mechanism.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

傾城如夢未必闌珊 2024-11-14 06:28:49

您是知道什么是最好的人,但是拥有一个可以协调整个过程的“服务器应用程序”可能是一件好事:

  1. 用户 1 询问服务器“我需要 X”。
  2. 服务器告诉用户 1“好吧,向数据库请求它”
  3. 用户 2 询问服务器“我需要 X”。
  4. 服务器告诉 User2“User1 明白了。”
  5. ...
  6. User1 告诉服务器“我不再想要 X 了。”

您还可以将某些类型的数据设置为“不可缓存”,因为它们具有易失性,或者避免堵塞用户之一的连接。当然,服务器会收到很多请求,但如果您必须将其与跨网络解决方案的广播进行比较。如果我没有正确理解您的问题,只需写一条评论,忽略这一点,我将删除答案,以免误导用户。

You're the one who knows what will be the best, but having a "server app" that would coordinate the whole lot might be a good thing :

  1. User1 asks Server "I need X".
  2. Server tells User1 "Well, ask for it to DataBase"
  3. User2 asks Server "I need X."
  4. Server tells User2 "User1 got it."
  5. ...
  6. User1 tells Server "I don't want X anymore."

You could also make some type of data "uncacheable" due to their volatile nature, or to avoid clogging one of the users' connection. Sure the server will get a lot of requests, but if you'd have to compare this with a broadcast across the network solution. If I didn't understand your problematic correctly, just write a comment, disregard this, and I'll remove the answer not to mislead SO Users.

吐个泡泡 2024-11-14 06:28:49

如果您不需要主机,或者不想依赖特定的网络布局/安装,您可以考虑点对点作为一个选项。 WCF 具有本机对等支持。这是一个看起来与您的需求有些相关的链接:如何在 A 中设计状态共享对等网络

If you don't want a master machine, or you don't want to rely on a specific network layout/installation, you could consider Peer to Peer as an option. WCF has native peer to peer support. Here is a link that looks somewhat relevant to your need: How To Design State Sharing In A Peer Network

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文