[随意调侃]erlang,golang,nodejs 都为html5来奔跑之我见。

jackxiang 2013-1-11 17:22 | |
   node.js解决了异步问题,但没解决并行问题,于是有疯子想把node.js用C扩展方式做成并行,为什么呢?
是因为Erlang和Golang是未来的主流语言,而nodejs是单线程而不能很好利用多核CPU的问题,于是有人想给它增强能力(尽管有cluster),
也想学go和erlang从语言层面上来解决问题。
但是现在GO语言和erlang已经在语言层面解决了并行问题,我觉得主要是多核心的利用,并行是必然趋势。
自己要做这些事情得自己学会进程调度,队列,信号等,像erlang和go,程序员不需要关心进程线程调度的问题,它在底层就封装好了。
之所以node.js有很多人学是因为,node.js主要是语言是JS。这让很多有前端经验的人可以很空易掌握。但是node.js也有些问题的,比如网络模块缓冲区总是64k。
如果要对核心的东西做调整还是挺麻烦的。你可用js写游戏可以跨所有的手机平台包括网页版,所以node.js也是个工具,不是语言。不是node.js火,是js火,搭了html5的顺风车。
新在啊儿呢,这个Nodejs:js基本上一个有任意语言经验的coder可以在一周内上手做项目。只要提供好项目管理,把规范之类的做好。成本之低。如果是c++:c++我花了两周一路是坑。
都是在html5上下功夫,不过问题是, html5游戏的商业模式好像不太清晰。个人觉得吧,做终端, 老老实实用原生语言去做, html5带来的好处好像意义没那么大。
现在html5这个工作组在做一个事情就是给-x绑定一个js引擎。用c++提供图形渲染。js处理业务逻辑。我跑过几个demo,性能还不错。
所以,我一直对html5持谨慎态度,技术也不热衷,看了看概念,大概了解了下。然后结论是:观望,还不成熟。

     有人说最近几年游戏火,lua脚本就火了,和js一样很像python那样的胶水语言,能在线更新更能兼容浏览器,lua跟我刚说的Js一样的概念。 lua去调原生的c++,lua只是执行逻辑处理。他也是在app里集成了一个lua的引擎,还给lua绑定了一些cocos2d的接口,。lua现在用的已经很成熟了,多如牛毛,不多讲。

                                                                                                        Writen by :jackxiang   2013-01-11 17:30:00


附录:
嗯,node.js可以实现那个http王浏览器推数据么?
跟nodejs没太大关系吧。都可以实现
那前端怎么搞?取数据时我一直觉得是个难题。
一个长链接挂着。
有数据来就处理罗
浏览器那边也这样子搞?
websocket  向浏览器推 后端可以使用nodejs 加前端使用socket.io 可以实现

如果php用的多 后端可以使用  https://github.com/bergie/dnode-php  也是事件模型 跟node一样
也可以使用 https://github.com/cboden/Ratchet  用php实现的websocket server,通信协议使用wamp
http://socketo.me/ http://wamp.ws/  可以看看

如果真的要实现 server->client传数据,不建议直接采用socket.me上面的js库,desktop上面浏览器对web socket支持的不错,但是无法兼容android浏览器,所以可以使用socket 支持flash socket.
socket.io

启一个socket tcp 也没什么,XMPP的server,openfire 号称单机支持30万长连接
看到composer.json了吗
去查查 是什么东西
一个php的标准库
很好很强大的
这是个好玩意儿,比pear 强几百倍
现在多数优秀开源库都能用 composer 装
我还没用完全采用composer  
是用libevent + stream扩展函数来实现底层的

网络编程不熟悉的  建议还是不要使用事件模型写程序
几个核几个worker,就像nginx一样。
好好研究下nginx source
我主要是从 下面的员工说的  因为事件的机制不好控制,没有顺序执行起来方便易编写,需要员工的水平比较高。

的nodejs 用了下,有好的地方 也有让人很不爽的地方。感觉不是很稳定,多线程fork出来的程序,采用net网络操作时,经常会崩掉

写一个高性能的Server还是挺困难的,像Nginx都用了很多atomic库操作,还有内嵌很多汇编

目前不需要高性能,用做游戏服务端,维护一二千人在线。
足够了
go语言看起来不错,没有广泛使用案例呀。

个人感觉,server再强悍,如果后面挂的业务逻辑卡一点,优势一下就木有了

Go底层是基于epoll的全异步模式,但上层是同步的语法,阻塞时自动切换协程

像我写的swoole这个Server,虽然性能很高,其实极端情况下可能会出错。node.js问题也是有的,这里坑很多的。什么时候把这些填平了,才比较安全  socket都是带缓存区的,假设某个fd缓冲区满了,就要丢数据了
这里缓冲区设大会有问题,设小了丢数据。
呵呵,事件通知机制在更高并发的Server里就是累赘了
所以我们有的Server是直接轮询的,不做通知机制

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/5931/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2013-1-14 17:56
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]