背景是这样的
公司内部主要语言是C++/PHP, C++一般包裹成一个个服务的方式,处理后台逻辑,PHP作为中间层,接受web请求,扔给后端的C server,通讯采用的是RPC+内部的二进制的序列化方式
目前有一些算法模块涉及到一些机器学习/数据挖掘的算法,方便起见,主要使用python开发的(主要是一些计算依赖于numpy/scipy/sklearn,完全重新自己写不太现实),部分计算密集的逻辑用C完成,封装成了so来供python调用。
现在期望将这部分计算逻辑包装成一个服务(server), 来供前台的PHP调用,我个人对网络通讯相关了解不太多,我了解的这种调用只有rpc/http
现在问题是
1. 使用RPC还是HTTP更合适?如果使用HTTP的话,是不是最好以REST这种方式对外提供接口?
2. 如果使用RPC的话,python自带一个xmlrpclib,但是xml这种格式比较冗长,pip里边还有jsonrpc,请问更推荐哪种?
3. 如果使用HTTP的话,python自带一个simpleHTTPserver, 但是看名字是不是一般仅作为测试使用,不应该放到实际的生产环境里(比如生产环境里可能会涉及基本的并发,吞吐的要求),
4. HTTP的话,我之前简单了解过Flask,用Flask来对外提供REST接口靠谱吗?比如它的内部是异步的吗?一个请求阻塞住会影响其他请求吗?
5. 还有没其他推荐的方式,最好是一些业界成熟的做法,谢谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.