Featured image of post 今天完成了使用 Go 重构了 PHP 的所有内网接口

今天完成了使用 Go 重构了 PHP 的所有内网接口

重构一时爽, 一直重构一直爽

之前的接口请求过程是这样的

  1. 用户打开APP请求业务API
  2. 业务API请求推荐算法(容错)
  3. 推荐算法请求内网服务
  4. 内网服务提供一些业务的接口数据给推荐算法(例如运营手动配置的推荐)
user -> API -> recommend service -> inner service
user <- API <- recommend service <- inner service

因为之前APIinner service都是使用Laravel构建, API服务器可以多加几台负载均衡, 但是inner service只有单机, 所以趁现在使用Go重构inner service

引用的库资源

贴一下PHP/LaravelGo/gininner service性能对比

  • PHP已开启OPcache
  • PHP提供服务的端口为8888
  • Go提供服务的端口为9998
# 服务器配置: 两核8G
top
%Cpu0
%Cpu1
KiB Mem :  7645252 total

# 未开启API中间件缓存
#####################
# PHP
ab -n 10000 -c 100 127.0.0.1:8888/api/v0/albums
Requests per second:    107.49 [#/sec] (mean)
# Go
ab -n 10000 -c 100 127.0.0.1:9998/api/v1/albums
Requests per second:    2719.86 [#/sec] (mean)

# 开启API中间件缓存(Redis)
#####################
# PHP
ab -n 10000 -c 100 127.0.0.1:8888/api/v0/albums
Requests per second:    124.89 [#/sec] (mean)
# Go
ab -n 10000 -c 100 127.0.0.1:9998/api/v0/albums
Requests per second:    4191.87 [#/sec] (mean)