我们公司现在要做一个语音识别相关的API服务,内部调用的是百度语音识别的REST api,然后拿到识别后的文本后,经过自己的其它加工处理,返回一些知识点标签之类的结果给调用方。
由于之前没有做API方面的经验,请教下php适合吗?主要是怕高并发的问题,需不需要考虑多线程之类的?
(主要是想了解下应用程序这边有没有什么问题,硬件服务器环境的高可用架构会做的。)
多谢!
我们公司现在要做一个语音识别相关的API服务,内部调用的是百度语音识别的REST api,然后拿到识别后的文本后,经过自己的其它加工处理,返回一些知识点标签之类的结果给调用方。
由于之前没有做API方面的经验,请教下php适合吗?主要是怕高并发的问题,需不需要考虑多线程之类的?
(主要是想了解下应用程序这边有没有什么问题,硬件服务器环境的高可用架构会做的。)
多谢!
没有合不合适,只有如何去做,PHP也可以做,Java也可以做,Python也可以做,主要看你的业务架构对应的技术架构的设计,你已经做了HA了,所以在流量和可用上至少有个方案处理了,PHP的API设计,大部分是短连接,在逻辑处理上响应速度也比较快,至于性能,可以选择使用PHP7或者HHVM,多线程从业务架构角度来分析看看吧。
并发估计是上不去的 你后台server http 请求百度接口 消耗的资源比较大 估计几百的并发 你就得发送几百个请求到百度接口 服务器可能会瞬间cpu变得很高 因为你调用的接口应该是要传送数据过去 然后对端解析的吧 这种业务耗时不好预估 可能并发量大一点 你发送的出口都会有问题
我觉得折中一点的方案是你这边后台搭一个任务队列服务,从而限制一下并发数,做一下异步的任务进度回显或者提示
这样并发高的时候控制权还在你自己的配置里,可以保证服务至少不会挂掉,只是并发高,大家需要等待的时间长一点
一般调用人次频率不高的话是不需要考虑并发问题的,大并发问题,同时语音识别服务也不是你们真正意义上提供的,所以只用一段小脚本就可以啦。如果觉得用户多,在访问页那里加个CDN就行了。
别动不动就是什么并发,你调百度的接口还扯什么并发,你要不先问问百度给你多少并发,就一个语音接口,而且还是调百度的,我都不想说什么,你既然这样问说明你不会php,与其问这个问题还不如先问问你会啥,swoole说百万并发,你能做的到吗
补充:我希望像题主还有您一样可爱的朋友们提问之前能够先阅读一下sf的一些提示,有些问题建议先自己百度,谷歌钻研一下再来sf提问,现在sf好像已经成了伸手党的天堂了,明明百度,谷歌都能简单解决的问题都来sf提问,毫无营养,sf是技术研讨区,用来填补技术漏洞的,而不是来做伸手党的。
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
3 回答1.1k 阅读
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1.APi 首先注重的是安全方面的信息 所以加key和sign是必须可少的。
2.APi 与对方定义好入参和出参,定义好格式(最好提前书写好wiki)
3.你们这边应该还回有数据库操作,书写业务逻辑,事务和回滚机制要做好
4.要有日志,要有监控,报警系统。
5.写接口,记得连接好PDO的来处理,防止sql注入等问题。
6.至于并发问题,你们可以在nginx层做处理,从DNS方面处理,PHP这块无需过多关注
7.API扩展,把功能模块单独组装,看是否需要redis,memcache,yac这种缓存服务。
8.单独拉出来几台服务器跑API,还有就是做好防止接口被刷,你们监测节点,如果某个IP防止有问题,就引流到独立的一台服务器(这台服务器不参与业务)等等,
9.你们可以考虑下消息队列,同步服务,swoole、rabbitMQ供你参考
总结:最主要来看1.安全 2.日志 3.业务逻辑 4.nginx层处理 5.稳定性