gpt4 book ai didi

c# - C# 中的快速分布式内存访问

转载 作者:太空宇宙 更新时间:2023-11-03 13:41:43 24 4
gpt4 key购买 nike

我有一个 C# WCF 服务,它在 Dictionary<File,byte[]> 中托管 120 GB 内存。用于非常快速地访问文件内容,这对我来说真的很管用。访问时,文件内容被包装在 MemoryStream 中并读取

此服务需要每天重新启动,以从数据库中加载一些每天可能发生变化的静态数据。由于需要重新加载内存中的大量数据,因此重新启动花费了很多时间

所以我决定在同一台机器上的不同进程中托管这段内存,并通过套接字访问它。数据进程将始终启动并运行。 TcpListener/Client 和 NetworkStream 的使用方式与以下类似

memoryStream.Read(position.PositionData, 0, position.SizeOfData);

position.NetworkStream.Write(position.PositionData, 0, position.SizeOfData);

问题是:这比在同一进程中托管内存慢 10 倍。预计会放缓,但 10 倍太多了。

我想到了 MemoryMappedFiles,但它们对于随机访问文件的特定 View 更有用。我的文件访问是从头到尾按顺序进行的。

是否有其他技术或库可用于我的案例?或者这是意料之中的事情?

最佳答案

我假设您使用的是 SQLServer。如果是这样,Service Broker & SQLNotificaiton或者 Query notification可能是你在这里的 friend 。我想,您需要更多的推送消息传递模型,它会自动将更改传播回服务(如果数据库中发生某些更改)。因此,避免重新启动内存/资源密集型进程,因此无需重新映射您的重量级字典。

关于c# - C# 中的快速分布式内存访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16772716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com