毫秒级的多人实时操作后端用什么语言和数据结构比较靠谱?

2015-12-07 13:05:26 +08:00
 ansenlee
目前有个想法,多人的实时操作,每一步都保存到服务器,操作的同时其他人也可以实时看到。

这种项目用什么后端语言性能比较好?

另外,直接写入文件是不是要比写入数据库来的更快?
5606 次点击
所在节点    程序员
39 条回复
lovedboy
2015-12-07 17:12:32 +08:00
Mutoo
2015-12-07 17:16:02 +08:00
典型的网游服务器
mengzhuo
2015-12-07 17:55:35 +08:00
@ansenlee

和语言其实关系不是特别大
而且内存不是缓存!
主要看你的场景,如果是需要大家尽快获得这个变化的结果,只能用内存,任何磁盘 IO 都不能满足需求。
服务器负责锁、校验和广播结果
ansenlee
2015-12-07 18:45:50 +08:00
@mengzhuo 明白啦~~多谢!
loqixh
2015-12-07 19:12:28 +08:00
GC 随便停顿都是 50ms 以上
tennix
2015-12-07 19:52:43 +08:00
不知道这种实时性能不能满足你的要求 http://www.phoenixframework.org/blog/phoenix-10-the-framework-for-the-modern-web-just-landed#the-real-time-web

这是里面的演示 demo ,反正第一次看到这种效果时我是震惊了
<amp-youtube data-videoid="GLa9gtvP13Y" layout="responsive" width="480" height="270"></amp-youtube>不知道 V 站还是不是自动显示油管
ansenlee
2015-12-07 21:42:23 +08:00
@tennix 这个我看过,我们的原理是一样的,但是操作的东西不仅仅是文本了。。。可能是 canvas 绘图
cheng007
2015-12-07 21:45:34 +08:00
@hr6r 毫秒级数据同步啊
Comdex
2015-12-07 22:19:16 +08:00
golang 挺合适的, 1.5 的 gc 已经比较好了
adexbn
2015-12-08 07:54:51 +08:00
来说说我参与过的,
德意志银行外汇清算中心, C++/Oracle
Nortel , C++/Timesten
Blizzard 战网, C++/MM,Oracle
上海地铁清算中心, C++/Oracle
长三角高速公路联网清算中心, C++/Oracle
.......
.......
ansenlee
2015-12-08 11:23:32 +08:00
@adexbn 这略牛逼啊。。。
xiamingchong
2015-12-08 12:08:32 +08:00
golang 不谢
libook
2015-12-08 12:10:14 +08:00
其实用什么语言都好,因为毕竟现在什么都可以用硬件来堆,就看你看重哪一点了,如果想省钱就用高效的编译型语言,如果想开发简捷就用解释型 OO 语言。

实时的话就不要用 HTTP 协议啦,因为一条消息都要重新三次握手建立一个 TCP 连接超级慢,建议用类 Web Socket 技术。

据说 Meteor (后端 Node ,前端跨平台)可以简单快速地开发出实时同步的应用,之前看人演示过,简直就像黑科技。

直接写入文件和直接写入数据库应该速度差别不大,差别有可能在于读,因为数据库是可以检索的。
如果你用 Linux 服务器的话操作系统是会自动使用空闲内存做高速缓存的( free 命令中的 buff/cache 字段),内存大的话无论是写文件还是普通的硬盘数据库也能像内存数据库一样快速响应(在理论命中率高的情况下),如果数据量大用不起太多内存的话可以用 Redis 一类的内存硬盘两栖数据库,将部分数据放到内存里使用,自动同步到硬盘上。

最后在写逻辑的时候不要忘记要处理同时操作的情况,非原子操作可能会导致死锁或脏数据的产生。。。
ansenlee
2015-12-08 13:35:37 +08:00
@libook 这解释解答了大部分问题~~~棒!!!感谢
gkiwi
2015-12-08 14:15:16 +08:00
楼主参考这个下:

想实现一个多人同时协同画画的软件,有木有啥思路?
https://cnodejs.org/topic/54e846168ff821b53f851860

你画我猜?如果是网页端,不晓得 websocket 合不合适,感觉性能各方面可能不是在后端,而是用户前端与后端的网络通信,这个速度不关后端语言的事情
ansenlee
2015-12-08 16:05:16 +08:00
@gkiwi 工作类的,不是游戏和娱乐类的应用。
话说这提问炸出了好多好答案,改天单独整理成一篇实时协作专题
warDoggie
2015-12-08 16:08:37 +08:00
@adexbn 厉害厉害~ 好在意 Blizzard 战网, C++/MM,Oracle 。有相关的资料可以分享吗
cloudzhy
2015-12-10 14:42:26 +08:00
毫秒级就不要用以太网
macliu
2016-02-27 00:44:57 +08:00
用野狗可以很快解决 ( : wilddog.com

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/241688

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX