我正在构建一个简单的REST-API,它有一个端点,它将被严重渗透。我们叫它POST /message
吧。我必须决定是使用Node还是PHP。数据库是MySQL。
在此路由内发生的事情:-凭据通过HTTP将通过从数据库中读取它们来检查。-请求另一个REST-API。-将执行另一个写数据库操作。
因此,有两个数据库连接和一个指向另一个REST-API的http请求。路线应该都是关于速度的。我会选择PHP,因为当前的系统是基于PHP的,但是路由内的请求使我感到害怕,因为在使用PHP时它不是异步发出的。我不关心这个请求的结果,在节点中,我只需检查凭据并返回success
,异步发送请求,并在请求返回后执行数据库写性能。我认为我无法在PHP中做到这一点,因为当我用success
返回REST调用时,所有的事情都必须先做,对吗?
选择PHP还是节点?
发布于 2017-02-09 13:53:43
你写道:
因为它不是在使用PHP时异步生成的
你确定那不可能吗?即使用Guzzle异步请求也不行
无论如何,我用几种语言实现了相同的REST服务器,并在同一台计算机(UbuntuLinux16.04、i7 Intel、16 found)上进行了测试,发现:
请注意,Node.js是唯一不能有效使用多核的平台。
为了模拟您的需求,我尝试在PHP中添加一个15 ms的usleep,在Node.js中添加一个15 ms的Node.js,发现当使用2000并发请求时,Node.js具有更高的吞吐量(4300 vs 1800 req/秒),但也有更高的延迟(450 vs 130 ms/req)。可能是因为它只使用了一个核心,并且不得不对许多事件做出反应。这种具有较高吞吐量的较高延迟可能是由于使用事件循环造成的。使用Apache (Pre)叉可能更昂贵,但能够实现更高的并发性。
我不确定所有这些都能直接帮助你,但这可能给你自己的研究提供一个起点。玩得开心!
https://stackoverflow.com/questions/41789080
复制