首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java / Scala与本机用于非阻塞(http) io的Linux

Java / Scala与本机用于非阻塞(http) io的Linux
EN

Stack Overflow用户
提问于 2015-10-12 14:11:29
回答 2查看 274关注 0票数 2

那么,在编写本文时,使用原生于 /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千兆位以太网及更高级别的流媒体视频质疑传统套接字的使用。

EN

回答 2

Stack Overflow用户

发布于 2015-10-12 14:42:48

为Http服务?我想说真的没有什么好处。

网络从一开始就进入了Java,它最初被设想用于机顶盒和嵌入式设备中。对于下一代,您可以通过NIO完全支持非阻塞IO。

所有这些都将委托给您的内核提供的任何IP堆栈,它在尖端内核上运行得很好。

Scala运行在JVM之上,并免费获取所有这些。

如果您想要使用实验性传输协议,或者使用windows的第三方SCTP实现之一,则可能是使用本机代码与网络连接的唯一用例。所有这些都不适用于HTTP + TCP。

票数 2
EN

Stack Overflow用户

发布于 2015-10-12 14:39:48

这取决于您的项目需求。如果你的机器资源有限,要么是因为你起步的时候很小,引擎盖下的马力有限,要么是因为你会变得很大,而且你不想看到你的成本比你的收入增长得更快,那么编程更接近硬件就变得非常重要。

如此接近硬件的编程成本大大增加了开发成本。在支持这一级别的编程方面已经有了一些进展:西斯塔是一个新的库,声称它提供了您所要求的那种功能。

另一方面,带有Akka IO的Scala具有非常高的性能。它允许您编写简洁的代码,清楚地完成您所需要的工作,而无需跨国界抛出数据。

问题的关键在于:在你知道实现的真正成本之前,你是否在优化你的设计?见这种堆叠式的对话

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33083345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档