那么,在编写本文时,使用原生于 /Scala的Linux编写非阻塞io?的工具是如何比较的呢?我只是在学习如何编写Http。所以,如果我在知识上有一些基本的差距,那就先道歉。它目前都是用Scala编写的,使用的是流io。如果我在系统调用中使用本机代码,那么显然我必须在本机C /C++和我的Scala代码之间进行通信。我以前做过一些JNI,我也对在单独的过程中运行本机代码感兴趣。
不过,我想强调的是,我的问题不是Scala / Java本机接口,而是纯粹关于如果使用本机系统调用库而不是Scala / Java生态系统来提供Http服务的好处。如果使用本机,我可以使用最新的内核。在某些方面,这个问题是关于学习的,是将我的学习时间投入到Linux生态系统中,还是投入到Java和无阻塞的/Scala生态系统中。我知道有一种将TCP分流到用户空间的举动,这可能提供一些有趣的可能性。
我最初关注的是TCP/IP服务器,这无疑是一个主要的用例,但也关注其他io (如数据库访问)。
编辑扩展:是完全异步的,还是实际上在幕后使用轮询的形式?是否可以使用本机实现完全异步,还是始终依赖于某种形式的轮询?java.nio是否充分利用了现代内核的异步io功能?本文还激发了我的问题:10千兆位以太网及更高级别的流媒体视频质疑传统套接字的使用。
发布于 2015-10-12 14:42:48
为Http服务?我想说真的没有什么好处。
网络从一开始就进入了Java,它最初被设想用于机顶盒和嵌入式设备中。对于下一代,您可以通过NIO完全支持非阻塞IO。
所有这些都将委托给您的内核提供的任何IP堆栈,它在尖端内核上运行得很好。
Scala运行在JVM之上,并免费获取所有这些。
如果您想要使用实验性传输协议,或者使用windows的第三方SCTP实现之一,则可能是使用本机代码与网络连接的唯一用例。所有这些都不适用于HTTP + TCP。
发布于 2015-10-12 14:39:48
https://stackoverflow.com/questions/33083345
复制相似问题