关于web架构技术方案的讨论整理
Sonictl 2014年1月25日10:05:52
本着“三人行必有我师”的学习态度,我在近期跟x老师做了大量沟通,结合我们单位对于“xxx”项目的推进情况,整理一下有关技术方案的讨论结果。
讨论背景:某单位希望把他们在PC上的某算法包DLL封装成WebService服务。
X老师主张用c++ 来封装web service, 原因如下:
1、测试 DLL 性能时将外围性能影响降到最低,C++封的包可以做到这一点。而使用 Ruby/Python/.net 封包以后,Ruby/Python/.net调用DLL的性能会更大程度地影响到整体web service的性能,测试结果会包含Ruby/Python/.net调用DLL的性能和DLL本身的性能,两方面。
2、C++ 轻量、灵活、可扩展、与 nginx 配合良好。封装出来的接口,完全是单纯的计算任务,与前端的商业业务逻辑毫不相干,架构设计非常容易,几乎零技术成本的就能组装出 1台 WEB 服务器 + 1台数据库服务器 + N 台算法服务器的架构来。
3、Ruby/Python/.net 调用DLL,确实搭建很快,很容易,可以说没有神马技术含量。ruby或是python,当然是web开发的首选,但我们“xxx”项目是要把一个本地的算法程序转换为web服务。虽然ruby和python都可以调用DLL,但效率都很低。在windows平台下ruby是否靠谱?老师测了一下,单纯构建一个字符串json返回给客户端,他的机器上,ruby方案是500多请求每秒,而c++ rest是2500多每秒,虽然都不是很高,但这么看来,ruby