Web 框架 = LinkedIn 工程师的观点

youtube上有一个LinkedIn 工程师介绍Play Framework的视频(https://www.youtube.com/watch?v=8z3h4Uv9YbE),他对比Java,ROR,NodeJS以及Play Framework,说出了实质的问题,Java 采用的是线程池的结构,基本上线程是同步的,也就是说,只要结果没有返回,下一条语句就无法执行,这带来一个问题,大型的Web是基于SOA的结构,采用了很多Service,这些Service一般通过RPC来通信,如果其中一个阻塞了,那么,这样的延迟就会散步到其他的Service上面,导致Latency扩散到整个系统,结果所有受影响的部分都开始变慢。更悲剧的是Java的线程很难管理,通常有一个叫做Thread Hell的噩梦。

简单的例子,诸如:

A = CallServiceA

B = CallServiceB

如果A阻塞了,B是无法执行的。

诸如Spring等框架都存在类似的问题。

所以必须要用NIO,非阻塞的IO,非阻塞的IO里面,最显著的就是NodeJS,NodeJS的问题是,NodeJS很棒,但是NodeJS的大量的库都非常的不成熟,还有兼容的问题,所以NodeJS很难有成熟的Web 框架。

ROR的问题是,ROR很慢,而且实际上ROR是不支持线程的,不过现在可能有了,但是ROR的优点是,ROR写起来很快,有很多模块可以使用,社区很活跃,可能是写Web最快的语言。

Play 相对来说平衡最好的框架,但是相对于初学者而言,Scala的语法写的SBT看起来很糟糕,很难阅读和理解,而且基本上在搜索引擎上查不到解释。

个人觉得说的有道理,所以简单介绍一下,有兴趣应该翻过去看看原始的视频,讲的很好,特别是后半部分对比各种框架的时候。

你可能感兴趣的:(Web 框架 = LinkedIn 工程师的观点)