2. 对异步IO的态度不同
3. 消息机制不同
4. Erlang对锁非常反感,认为变量不可变可以很大程度避免锁而Golang的观点是锁确实有很大的负担,但锁基本上是无法避免的,一旦有人共享状态并且互相抢占去改变他,这时候锁是必须存在的。
Erlang服务器是单进程的,是逻辑上没有并发的东西,一个Process就是一个执行体,所以Erlang的服务器和Golang的服务器是不一样的,Golang的服务器是多进程的一起构成的一个服务器,每个请求建立一个独立的进程。
而Erlang不同,一个服务器就是一个单进程的,所以并发的请求都进入到了进程的邮箱,然后这个服务器从进程邮箱里取邮件处理,Erlang的服务器并没有并发的请求,所以不需要锁。
1、erlang有异常成熟、经过电信级别大规模验证的OTP应用库,只需要很简单的代码就能建立起异常稳定、容错性强、扩展性强、高并发的服务器框架,这也是erlang最宝贵的核心价值所在。2、erlang是 天生的并发语言 : erlang的并发特性是语言级别的,从开发伊始就采用了CSP并发模式, 以进程为单位,进程间没有共享内存,变量不可变的实现方式保证了无锁的并发模型,因此也是异常高效的,换句话说:你只要像平常一样写代码就能并发,完全不用操心任何底层实现,你的代码能完美的并行运行在多核服务器上,如果你能写出漂亮的并发级别的算法和代码(尽量少的顺序代码),那在32核机器上就能跑出32倍性能!!!! Go 语言的并发模型也是取经于Erlang,但是我认为Erlang的并发模型更优秀,因为进程间完全没有共享内存,完全无锁。
3、由于Erlang和Go都是非常棒的语言,这里就出现一个问题:二选其一还是物尽其用?经过深思熟虑后,我和团队选择了后者。
erlang有框架,能够满足页游业务的开发需求, 业务简单, 对技术指标要求不高找不到能够hold住c++的程序员, 同时之前经验让他们对c++开发怕了
给不了高工资都请牛逼的程序员, 团队的构成普遍是一个高手带一群新人, 新手写c++都是坑, 失败率极高
erlang对跨服,分布式,热更新解决的比较好,同等的c++开发需要一定架构,技术要求比较高, 很多经验不足的程序员根本不知道c++能做到什么程度, 你让他们找个memory leak都只会打log, 写个aoi同步,只会9宫格同步, 可想而知
c++服务器一般c++代码的check out权限比较高, 带出去比较麻烦,erlang没有这个问题
页游就那么几家公司, 前人用erlang,大家也跟着用, 带出erlang代码跳槽,继续用
开发时间要求, 短平快, 不在乎技术积累.
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)