首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > 高性能WEB开发 >

怎么在一个web系统中共享大内存进行操作数据

2013-03-13 
如何在一个web系统中共享大内存进行操作数据本帖最后由 zhfkt 于 2013-03-03 02:47:55 编辑需要设计一个we

如何在一个web系统中共享大内存进行操作数据
本帖最后由 zhfkt 于 2013-03-03 02:47:55 编辑 需要设计一个web系统方案,但是完全没有经验,现在打算如下设计:

1.有两台2G内存的机器,一台作web服务器,跑asp.net;一台作为后端,处理前端web客户发送过来的数据。前台的数据发送至后端的asp.net webservice程序,然后后端的web service程序再通过 p/invoke 调用c++ dll,在dll中进行一堆处理之后返回给前台结果。

2.但是现在的问题是,对于连接至后端的每一个用户,单独调用c++ dll的数据处理会占用大量的内存,例如如果有10个用户,每个用户占用100M的话,那么整个后端会占用1000M的内存数据量,而每一个dll所产生的100M内存中的内容都是一样的。

3.因此需要找寻一个解决办法,可以让整个的后端系统仅占用单独一份100M的内存。c++ dll的源码可以自行修改编译,并且对于100M内存,c++ dll只进行读操作,无需写(不用加锁)。

——————————————————————————————————————————

现在想到的方案有:

1.开辟一块c++的共享内存,所有的c++ dll都会调用这块共享内存

2.使用 Memcached存储。将100M放入Memcached中,然后c++ dll调用Memcached的内存内容(但是Memcached key-value的内容上限为1M?)

3.利用redis进行存储,同上(没有key-value的内容上限为1M的限制?)

4.利用asp.net的static和application,将c++代码全部重写为c#(但是工作量增大需要重写代码>500+行)

对于2,3来说,是否可以实行?c++ dll调用的时候是否会从Memcached或redis中再复制一份数据出来,而导致又会如1000M而节省不了内存?

因为没有经验,所以仅想到了不多解决方案,希望可以借鉴论坛的一些建议进行设计~~分不多皆散尽
memcached web c++ dll asp.net
[解决办法]
只读数据的话用1
[解决办法]
我们做过类似的处理,是让 web service 和 C++ 程序做本地通信。C++ 程序编译成 exe 单独运行,只运行一次。

[解决办法]
不过是程序运行后没有退出,在某种意义上也可以说是“驻留内存”吧。

这个程序是真正的后台 server,中间的 web service 扮演代理角色,二者借助 TCP 协议通信。代理把客户端请求转发给 C++ 程序,再把返回的数据转发给客户端。

热点排行