高性能rtsp服务器

rea*_*jin 3 c java jvm sip rtsp

我想实现一个高性能的rtsp服务器来处理vod请求---它只处理信令请求,它不需要流媒体文件.我已经完成了基于Mina网络框架的用Java编写的版本,并且性能似乎不是很高.

据我所知,高性能SIP服务器(例如VoIP服务器)是用C语言编写的(例如OpenSIPS,Kamailo),我应该在项目中使用C或C++来获得显着的性能提升吗?

BTW.我找到了其作者用C语言编写OpenSER的原因的一些解释:"另一方面,在Java中开发SIP应用程序时,垃圾收集器可能会造成很多麻烦.用Java编写的大量加载的服务器会停止工作垃圾收集器正在清理内存.垃圾收集器造成的延迟甚至可能超过10秒.这种延迟是不可接受的"现在这是否意味着我也应该使用C?

T.J*_*der 5

这里有大量的变量,语言可能不是决定因素.MINA的作者Trustin Lee后来创建了Netty,它确实提供了非常高的性能.Lee本人表示 MINA的"性能相对较差",因为它提供的某些功能的复杂性与核心的关系过于紧密.因此,在完全重写所有内容之前,您可能会先查看Netty.

如果您正在使用Oracle的JVM,那么您将使用极其优化的运行时系统来识别代码中的热点(因此称为"HotSpot"),并在运行时积极优化它们.从你可以说,事实上,Java代码运行速度比C代码慢得多.编写良好的优化 C代码可能在某些选择任务中胜过同等的Java代码,但是从那里推广可能不再合适,当然你的代码必须承担JVM为你带来的一些负担. Java的.另请注意,您可以通过以下几种方法来调整JVM的垃圾收集器,例如,优先考虑一致性和短暂暂停,而不是占用空间和长暂停.

显然,C有几个优势(靠近机器有时候正是你想要的),某些任务的显式内存管理也是如此.