论坛首页 综合技术论坛

如何把erlang应用在项目中?

浏览 30839 次
该帖已经被评为良好帖
作者 正文
   发表时间:2007-07-17  
有个疑问:
Erlang高并发性能的主要思想来自于 独立于操作系统的本身自带的进程调度系统,Erlang的进程切换非常高效,
现在你的设计 是 C node 大量系统线程切换+Erlang的高并发服务器。 前者会不会是个瓶颈所在? 使得系统退化回了 传统的服务器设计?  传统设计上的进程/线程 切换开销太大了。
0 请登录后投票
   发表时间:2007-07-17  
firebody 写道
有个疑问:
Erlang高并发性能的主要思想来自于 独立于操作系统的本身自带的进程调度系统,Erlang的进程切换非常高效,
现在你的设计 是 C node 大量系统线程切换+Erlang的高并发服务器。 前者会不会是个瓶颈所在? 使得系统退化回了 传统的服务器设计?  传统设计上的进程/线程 切换开销太大了。

可以设置成erlang使用一个线程,C node开3线程,一共4个,在4CPU上运行,目前使用的服务器都是4CPU的,部分高档货8CPU。通常运行时线程数会更多,因为各种IO都会影响,我测试线程数达到十几个才会明显感觉到线程切换的影响,这个数字也和测试的具体业务相关,通常是根据测试情况来配置。
0 请登录后投票
   发表时间:2007-07-17  
个人感觉是cnode是做些比较难用erlang实现的东西如和操作系统或者硬件交互之类的事情,调用的频率不是很高。 但是实现和调试起来又比较麻烦的场合。
0 请登录后投票
   发表时间:2007-07-18  
qiezi 写道
firebody 写道
有个疑问:
Erlang高并发性能的主要思想来自于 独立于操作系统的本身自带的进程调度系统,Erlang的进程切换非常高效,
现在你的设计 是 C node 大量系统线程切换+Erlang的高并发服务器。 前者会不会是个瓶颈所在? 使得系统退化回了 传统的服务器设计?  传统设计上的进程/线程 切换开销太大了。

可以设置成erlang使用一个线程,C node开3线程,一共4个,在4CPU上运行,目前使用的服务器都是4CPU的,部分高档货8CPU。通常运行时线程数会更多,因为各种IO都会影响,我测试线程数达到十几个才会明显感觉到线程切换的影响,这个数字也和测试的具体业务相关,通常是根据测试情况来配置。


赫赫,跟我猜测的不大一样,没做过实际测试,原来估计 两个线程的切换和 四个线程的切换,系统在切换上所花的时间应该差别不大,照你实际情况来看,我的估计还是错误的。
0 请登录后投票
   发表时间:2007-07-18  
firebody 写道


赫赫,跟我猜测的不大一样,没做过实际测试,原来估计 两个线程的切换和 四个线程的切换,系统在切换上所花的时间应该差别不大,照你实际情况来看,我的估计还是错误的。

看具体情况吧,网游这种计算集中的,数据都从外部主动输入,当然是线程数少比较好,目前很多网游都是单线程跑逻辑。一些中间层服务封装数据库、远程服务调用和事务的,通常IO延时会比较明显,这时候多个线程效果比较好。这2种情况下erlang都是适用的。
0 请登录后投票
   发表时间:2007-07-19  
以前potain提醒过,cnode非常不稳定.运行几天就会有没有原因的内核crash.
0 请登录后投票
   发表时间:2007-07-21  
cnode的实现非常薄 没有任何防护措施 这不是erl_interface的错。 ei的价值在于给你一把匕首 你能够很方便地切肉吃 当然有可能伤到手。
0 请登录后投票
   发表时间:2007-07-25  
There are two different interfaces, the old 'erl_interface' and 'ei'.
The old interface is to depend on the new one, not the other way arount.

Erl_interface should bze "thread safe", i.e. you should be able to
handle connections, convert data etc from different threads.

Ei should be "reentrant" or "async safe", i.e. no locks should be set
so that if an ei function is called inside an signal handler there
could be a deadlock.

VxWorks call the operating processes "tasks". These are to be handled the
same way as Unix threads, i.e. there can only be one C node for all tasks
using the old interface.
0 请登录后投票
   发表时间:2007-07-27  
dustinth 写道

那估计你们公司没什么希望. 不考虑以后维护性方面的问题. 我自己也挺讨厌想LZ这种所谓的"牛人", 自己随自己喜欢, 那公司的东西做实验, 做烂了就拍拍屁股走人.


python应用这么广,公司大部分人都会,会C++的学python几天就可以上手,而且公司目前大力推广C++配合脚本语言开发业务逻辑,我带个头而已。erlang我还没应用到项目中呢,用的人毕竟是少,很多时候有些项目都是临时性的,解决一时的问题,过渡性方案,要求快速开发,用完就没什么用了,所以我经常会在各个项目里临时救一下火,或者是要快速做一下原型,你不得找个开发效率和运行效率都过得去的东西?另外模块化的开发很容易维护,都是分布式系统,协议兼容就可以了。倒是公司现有的很多C++项目,明显是生手的练习,各种漏洞一大堆,几乎所有的项目都被补过一遍了,可维护性是有,却是很需要维护啊,而且维护的成本也不低。

我在公司基本上所有时间都在写代码,这是唯一爱好,一个项目完了如果有其它可选方案我肯定会试试,或者是其它语言来实现,你经常会看到我说用什么语言做项目,那是因为我完成了现有项目,多出来的时间我做些尝试而已,其他同事完成项目后都在聊天或看网站,我不过是做点不同的事而已。几乎每个项目我都实现过多种可选方案,然后进行比较,再找一下各种方案的差异,当然最后上线的肯定是C++版本的,每种方案都做完了,都是可以上线的版本,上哪个版本正是考虑到以后的维护性问题。你说做实验也可以,至少我没搞砸过一个项目,否则我早被开掉了。关于公司,在不到2年时间里,日浏览量目前已经接近搜狐,你要说没什么希望我也不需要反驳。。。每种公司都有自己的文化氛围,越是成功的公司越会鼓励员工尝试新技术,而不是以各种理由去阻碍。拍拍屁股走人更不是我的风格,我在过去工作过的地方时间都很长,不要拿自己的习惯去猜度别人。

又要成吵架帖了。最后说几句:
1、怀疑别人的人品的话不要说,除非你有证据证明我人品有问题。
2、明确的对别人说你讨厌他这种类型,很明显是一种挑衅行为,版规所不容。
0 请登录后投票
   发表时间:2007-07-28  
qiezi 写道
倒是公司现有的很多C++项目,明显是生手的练习,各种漏洞一大堆,几乎所有的项目都被补过一遍了,可维护性是有,却是很需要维护啊,而且维护的成本也不低。


我遇到的情况也类似。最常见的情况是长函数一大堆,或者因为模块划分不好,导致循环依赖。在这个坛子里,大多数人都认为 c++ 难学难精,但是在我遇到的情况中,好像是反过来,反而好像认为随便一个人都是 c++ 高手,有些重要的关于项目方面的决策也没怎么讨论,随便就交给了一个新手,结果就像 qiezi 说的:“很多C++项目,明显是生手的练习,各种漏洞一大堆”。

qiezi 写道
几乎每个项目我都实现过多种可选方案,然后进行比较,再找一下各种方案的差异,当然最后上线的肯定是C++版本的,每种方案都做完了,都是可以上线的版本,上哪个版本正是考虑到以后的维护性问题。


呵呵,公司有那么宽松的时间给你? 口水ing 。。。。。。
我经常也有这样的想法,不过公司基本上不会答应。所以只好自己业余时间来试了。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics