能否讨论以下,网关最适合用什么语言开发?

2014-01-13 20:57:16 +08:00
 webgeekman
不讨论编程语言的优劣,毕竟各种语言都有其适合的场景。
那么对于需要高处理性能,响应速度,流量大,并且有一些业务逻辑的网关来说,用什么语言编写最好呢?

开始尝试用Java,基于Mina做二次开发,加上redis作为缓存,虽然性能还不错,但是对于网关来说,跟客户讲用java做的往往缺少一点说服力。

想听听大家的意见,对于网关来说,那种语言更合适,更能在网关这种场景下发挥语言本身的优势?
6122 次点击
所在节点    问与答
26 条回复
lightening
2014-01-13 21:10:44 +08:00
Erlang?
clino
2014-01-13 21:18:59 +08:00
golang ?
语言层面就支持coroutine,觉得这种场合挺合适的
lidashuang
2014-01-13 21:20:28 +08:00
golang
yangff
2014-01-13 21:24:45 +08:00
不要怀疑是c……你需要榨取他的每一分效率。
sinxccc
2014-01-13 21:26:13 +08:00
大部分都是 C,小部分是 C 和 C++ 的混合。
min
2014-01-13 21:28:55 +08:00
客户如果指定语言就用指定的
如果只指定了性能指标,你能满足就好了嘛
webgeekman
2014-01-13 21:37:55 +08:00
@lightening
@clino
@lidashuang 感谢推荐。查了一下,Erlang和Golang在特性上还真差不多,有待进一步对比。
webgeekman
2014-01-13 21:41:25 +08:00
@yangff
@sinxccc
@min
难就难在并非客户指定,而是公司内部自行研发的产品,后续要投入到多个项目里面使用。
做这种事情,C固然是最有说服力的,但是在一个较为大的团队里,加上成员多半C经验不行,很难执行下去。并且的确面对太多的工作量。所以Erlang和Golang这样的语言就容易成为首选了。
yangff
2014-01-13 21:57:59 +08:00
@webgeekman 那就换成员,换成C适用的成员。基本上这些东西都是写在操作系统/固件里面的,erlang和golang根本不适用。
而且网关需要多复杂的逻辑?就是一个大门而已,更多复杂事情赞先别管了,放进来再说不行吗?后面还好多人呢!
yangff
2014-01-13 21:59:39 +08:00
或许叫做大门不严谨吧……但是,我的意思是更复杂的逻辑请先放进来在弄。
yangff
2014-01-13 22:02:58 +08:00
不过如果要说未来的趋势的话,如果能在可以接受的范围内让这些设备性能过剩的话,用erlang或者golang当然就都没有问题了。。
guotie
2014-01-13 22:04:05 +08:00
golang
dhysum
2014-01-13 22:04:29 +08:00
Erlang和Golang什么时候开始这么受欢迎了? 网关一类的,目前还没有能替代C的吧?

招一些做嵌入式的就好了
clino
2014-01-13 22:07:01 +08:00
@yangff "基本上这些东西都是写在操作系统/固件里面的"
看起来楼主并不是运行在固件里的
yangff
2014-01-13 22:11:29 +08:00
@clino 所以我也很奇怪啊,难道他用Windows Server做网关?
pindleskin
2014-01-13 22:30:22 +08:00
取决于对性能,延迟,可靠性等的要求。如果要达到百千兆路由器的性能和低延迟,只能用c或c++吧,其他需要运行在vm里或用垃圾回收的都不合适,vm太复杂,各种意外有可能发生,垃圾回收在高负载下需要大量的内存,有时候还需要把整个vm停下来几到几百毫秒。如果是应用网关,偶尔几十到几百毫秒的延迟可以忍受,那选择就多了。
nsa
2014-01-13 22:35:00 +08:00
C, 毫无疑问
sinxccc
2014-01-13 23:30:52 +08:00
@webgeekman 恕我直言,那你的团队里有没有对 Erlang 或者 Go 足够精通的人呢?

网络设备上选择 C 居多而避开虚拟机,动态内存回收之类的高级功能的一个原因也是 C 在语言层面上简单,不会因为不熟悉而掉进语言自己的坑。
tangzx
2014-01-13 23:51:42 +08:00
用c在nginx上做二次开发吧
clino
2014-01-14 08:40:22 +08:00
@yangff 为什么一定要windows? 用linux一样可以用应用的方式来写网关的吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/96863

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX