除了语言选择(Scala vs Java)之外,Akka和Netty有哪些区别?

14

我希望了解Akka和Netty之间的区别。我知道它们都可以从Scala和Java中使用。我更想知道Netty在哪些方面更好(如果有的话),以及Akka在哪些方面更好(如果有的话)。换句话说,它们重叠在哪些领域,我在哪些领域可以使用Akka而不能使用Netty,反之亦然。


3
他们几乎没有重叠部分。有太多的差异无法一一列举。你对哪个领域感兴趣? - Peter Lawrey
1
如果有人能用几句话概括一下这两者之间的主要区别,那就太好了。我以为它们都是异步网络I/O框架,但看起来我错了。 - chrisapotek
2
@chrisapotek 实际上,Akka 使用 Netty,所以你的问题很可能类似于“轮子和车辆之间的区别是什么?” - om-nom-nom
1
@om-nom-nom 我曾经想说Akka类似于EJB,Netty则是Socket。但我担心会被抨击。 ;) - Chris K
3
希望大家不要关闭这个问题,因为我认为这是一个非常有价值的问题,很多人会从中受益。 - chrisapotek
1个回答

39

Akka是一个并发框架,建立在演员和可组合的未来概念之上。Akka受到Erlang的启发,后者从一开始就围绕Actor范例构建。它通常用于用更高级别的异步抽象替换阻塞锁,例如synchronized、读写锁等。

Netty是一个异步网络库,用于使Java NIO易于使用。

请注意,它们都采用异步方法,并且可以同时或完全分开使用两者。

重叠之处在于,Akka也有一个IO抽象,可以用于创建在不同机器上的演员之间传递消息的计算集群。从这个角度来看,Akka是一个更高级别的抽象,可以(并且会)在幕后使用Netty。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接