记一次踩坑hyperf/gotask,最后放弃
需求背景
- 现在业务用mongodb存储聊天记录,每月需要承受1200万行聊天记录,希望更高效更稳定承接mongoclient
- swoole本身是协程,但mongodb官方无法被Hook,导致无法使用协程mongo client
- 想要方便的做phpunit test
- 使用第三方,无需修改三方源码,开箱即用.
调研对象
- hyperf/gotask
- 采用golang1.14写的,作者利用golang协程作为辅助mongodb client,并通过sideload侧载实现。
踩过的坑
- hyperf/gotask 文档不太细,但很多细节并没有抛出来,可能只是作者边缘业务在用,在或者用它的人很少。
- ext-mongodb-1.20.0,不再支持fromPHP,提示错误
Function MongoDB\BSON\fromPHP() is deprecated
,在php内除非降级ext-mongodb,但是实际上生产环境不可能因为这个组件而降级,所以定性“放弃gotask” - gotask本身有3套,核心/go2php/mongoclient, 这里在文档里并没有讲解,需要看golang源码example,才能定位。
- mongoclient,实际读取配置,是从system env环境里读取MONGO_URI,(//user:password@ip:port/?adminSource=admin),等等.问题来了,多库多server情况,怎么办? 跨机器设备怎么办? 所以定性“放弃gotask”
再针对GoTask打个总结
- hyperf/gotask,github star很少
- 使用hyperf/gotask,使用生产的也很少,暴露出来的问题少
- 没有可持续性维护
版权申明
本文系作者 @ninja911 原创发布在NinJa911 Blog站点。未经许可,禁止转载。
暂无评论数据