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

2023-12-18 14:49:44 浏览数 (2)

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

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

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

引用的库资源

  • https://github.com/gin-gonic/gin
  • https://github.com/go-gorm/gorm
  • 缓存中间件 https://github.com/gin-contrib/cache
  • http 测试 https://github.com/gavv/httpexpect
  • 环境变量载入 https://github.com/joho/godotenv
  • 解析环境变量 https://github.com/joeshaw/envdecode
  • 热加载代码 https://github.com/cosmtrek/air

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

  • PHP已开启OPcache
  • PHP提供服务的端口为8888
  • Go提供服务的端口为9998
代码语言:javascript复制
# 服务器配置: 两核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)

0 人点赞