问题描述
第一次做服务器,有几本是一个人奋战,请各大侠赐教。用C#.NET做服务器,应用架构基本就是:用户--自定义组-->设备,即及用户登录后可以查看每组下面的设备信息。服务器上这个用户的在线状态信息(登录IP,登录时间,时长等)和设备最新信息(运动状态,最新跟新时间等)这些信息在设计时是直接放在内存变量(栈)里还是放到数据库表里啊?如果放到内存里仍然需要对应数据库表来记录,那么这个从内存更新到数据表里周期一般定义到多久?用户的设备是通过TCP连接到服务器后台定时(10秒)上传数据。
解决方案
解决方案二:
用户的设备是通过TCP连接到服务器后台定时(10秒)上传数据。都有这个了。你获取这个数据不就解决了你所有问题了这些信息在设计时是直接放在内存变量(栈)里还是放到数据库表里啊?数据你总得读出来吧=>读出来放变量=>inserttosql如果放到内存里仍然需要对应数据库表来记录,那么这个从内存更新到数据表里周期一般定义到多久?立马更新呗
解决方案三:
我的意思所有用户或设备的这个在线列表。后台是有记录所有数据的,但还有个最新状态或数据的给前台显示的。后台更新时是把最新状态记录到数据库,然后前台页面需要时是从数据库读取出来?还是后台更新时把最新状态放在内存,然后前台需要时直接从变量取?
解决方案四:
用户登录的数量不多,可以让后台把数据写入数据库时保留一份在缓存里,用户登录时从缓存读取信息给他。用户数量较多,应用服务器内存不够但数据库性能足够,直接从数据库读取用户数量较多,应用服务器内存不够但数据库性能也不够,可以考虑后台把数据写入数据库时拷贝一份写入xml文件,用户登录从xml文件读出设备信息。
解决方案五:
引用3楼lindping的回复:
用户数量较多,应用服务器内存不够但数据库性能也不够,可以考虑后台把数据写入数据库时拷贝一份写入xml文件,用户登录从xml文件读出设备信息。
后台设备有1万,每10秒更新数据,用户登录数不定。登录时读取,那登录后的实时数据显示给用呢,还是从xml读取会不会也很慢和费资源?是不是最好就用大内存放在缓存里?
解决方案六:
尽量放内存,性能好1万数据其实不大,一条1K的话才10M而已
解决方案七:
放表里,这种东西放内存不适合,如果真要设计成放内存,你得考虑回收和自动回收同在线和超时的定义,还得修改IIS,当然,如果是按大型项目来算,有专业人员部署维护,那可以这样设计,如果是自己维护,没必要给自己找麻烦。