对于生产环境不允许 exec 函数调用外部程序的情况?
以前知道有 goridge 这种东西 需要 go 启动服务并保持常在
php 再用 http get/post 方式调用 go 服务 这样不是很烦?
比如要用 go 爬 1 万条数据 每次都传 1 万条 这样调用的话无法显示进度 比如每隔一秒向浏览器显示爬了多少条数据
1
Rache1 2023-09-27 14:54:44 +08:00
FFI
|
2
maocat 2023-09-27 15:00:39 +08:00
加中间件,消息队列
|
3
codehz 2023-09-27 15:14:57 +08:00
每次开进程损耗更大吧()
|
4
8355 2023-09-27 15:20:55 +08:00
消息队列是主流方案,方便快速扩容,无法独立部署的话可以用 redis stream 5.0 就可以用了。
性能很快,指令都是 o1 ,消息量大的话不如 kafka 或者 mq ,每天百万级没大问题,前期有量可以切独立 redis 便宜的狠。 |
6
Gota 2023-09-27 15:23:53 +08:00 via iPhone
可以放个 Redis 在中间,共享状态,消息队列,广播事件 Redis 都支持,很适合用在爬虫这样的异步任务平台。
|
7
Nazz 2023-09-27 15:33:23 +08:00
使用 sidecar 部署, 通过 http 通信
|
8
QlanQ 2023-09-27 15:38:37 +08:00
你的这种方式,进度条准吗?
进度条是在浏览器显示的与,go 和 php 的交互方式没有什么关系吧 |
9
skiy 2023-09-27 15:47:02 +08:00
走 RPC ?或者走 MQ ( MQTT )。进度条不了解……这东西不要求精准啊。很多熟悉让你进度到 90%,就在那里卡你好久……
|
10
awalkingman 2023-09-27 15:51:17 +08:00
进度条是锦上添花,最核心的是把任务完成了,进度条显示一个大概就好了。
通信的话,找个中间件解耦一下是最方便的。 |
11
zzzkkk OP 进度条就是页面用 ajax 请求一个文本文件
server 端 go 每隔一秒去更新这个文件 爬了多少条 还有另一个文本文件 写了总数 这进度是精准的 就几个用户的系统 同一时间只有一个人执行爬虫 搞什么中间件 消息队列 |
12
zzzkkk OP 还好现在 server 都是我控制
想起刚从业时 往图片写文字 gd 扩展用得焦头烂额 都是因为自己没服务器权限 要是自己能管服务器 用 imagick 扩展一下子就解决了 |
13
Gota 2023-09-27 16:21:48 +08:00 via iPhone
如果是临时用用的项目当然无所谓,正经项目里还是不建议用本地文件存状态。
|
14
devopsdogdog 2023-09-27 16:26:03 +08:00
|
15
sunmoon1983 2023-09-28 08:08:07 +08:00
grpc ?
|
16
dif 2023-09-28 09:47:38 +08:00
跨语言目前我用的是 grpc ,java <> python
|
17
zzzkkk OP java <> python 用 grpc 交互?
|
18
guoguoyu 2023-10-31 09:27:22 +08:00
go -> redis <- php-workerman -> 进度条 搞定
|