[问题] 一个后端的设计问题?

楼主: embman (无尾熊)   2016-03-11 12:20:11
请问一下:
我在server写一个List,供应很多前端app client取资料,然后我固定半小时才去
数据库更新一次这个List。这是个Restful API。
我会这样做的原因是手机app client端有上万个用户,我不想每次拿资料都要进出
一趟数据库,所以才想弄一个List在server本地端,每半小时再去数据库更新一次
资料。
但我一直有一个疑问,当我去数据库更新的时候,如果那一刻(秒),刚好有前端
Client来取资料,请问这时这个app会:
1.取到旧的资料
2.出错,exception ?
EX:
in some class:
localList = getUpdatedDataFromDatabase();
刚好在做这个动作时,有client要拿资料,此时会怎么样?
要做什么措施避免混乱?还是这个方法根本不好?
感谢!
作者: haha02 (来人!上夹棍!)   2016-03-11 13:05:00
新的list用另外建的然后整个换成新的instace就好 不要去修改旧的List的内容 这样client顶多拿到旧的
楼主: embman (无尾熊)   2016-03-11 13:12:00
感谢楼上大大的回复!
作者: LaPass (LaPass)   2016-03-11 14:37:00
关键字“执行绪安全”主要还是要看你的程式码怎么写这是一个超大的问题课题绝大多数是加个 synchronized 就可以解决掉的状况
作者: gmoz ( This can't do that. )   2016-03-11 17:36:00
CopyOnWriteArrayList如果是用修改的话
作者: dream1124 (全新开始)   2016-03-11 22:53:00
我想你要做的是 in memory cache 吧?你要自己来吗?还是透过第三方 java 函式库?
作者: yyc1217 (somo)   2016-03-12 17:42:00
可以用 Collections.synchronizedList不过直接替换掉比较好就是了
作者: cha122977 (CHA)   2016-03-12 21:31:00
CopyOnWrite +1
作者: dou0228 (7777)   2016-03-13 22:02:00
自己用 List 不一定比较高效率喔...

Links booklink

Contact Us: admin [ a t ] ucptt.com