还是老套路,先来个地址:Puti

背景

4月份正式将 Puti 上线了,其实比预期的晚了很久,不过也算是上线了。这次完全由 Go 语言重构了之前 Phalcon 写的博客系统,目前基本上就是把之前那一套用 Go 重写了一遍。

因为 zPhal 实际上是个半成品,所以 Puti 目前也是一个半成品,而且初次用 Go 语言实现一个项目,代码质量可能还没那么好,不过以后会优化。zPhal发布时,我就说以后会迭代,后来打脸了(尴尬),zPhal 直接被我暂时放弃了,因为在接触了 Go 之后,已经一发不可收拾了。准备全面拥抱 go 语言了。

技术

之前 zPhal 的技术栈是 PHP+MySQL+Redis+Nginx,所以在部署的时候,稍微要求有点高。这次用 Go 重写之后,省掉了 Redis,用 Go 直接提供内存存储服务,不过目前使用的第三方包是基于单机应用的。而 Nginx 也变成可选可不选的了,因为通过 Go 本身就可以提供 HTTP 服务。

而在前端技术方面,后台完全用 Vue 来写了,所以和之前相比,简直是焕然一新,不仅好看了,交互也好了一些。后台是前后端完全分离的,用 JWT 来通信。而前台的展示方面,还是沿用了之前开发主题的方式,用后端渲染的方式,因为博客系统还是需要考虑 SEO 的,如果引入 Node 去做一层渲染,又加大了部署复杂度,所以目前来看没找到更好的方案。

这次完成 Puit 之后,同样我也提供了一套 Docker 部署的脚本,不过这一次比之前更加完善了。而且 Puti 也进行了镜像封装,可以直接拉取镜像使用。

压测

写这篇文章时,Puti 已经跑了几天了,没什么异常,不过,在各项指标上(CPU、内存、系统负载)与 zPhal 对比并没有什么提高,反而内存的消耗稍微高了一丢丢。这让我虎躯一震,没道理啊。Go 还干不过 PHP 了?

于是,我用阿里云的性能测试服务PTS对 Puti 和 zPhal 做了一波压测。并发数设置为100。结果很奇怪啊,zPhal 和 Puti 的压测数据,竟然差不多!说好的 Go 并发是强项呢。虽然 Phalcon 性能也不错,但是也不至于吧。而且还有一点很奇怪,两次压测,都有大量的请求是失败的,不过是因为超时。

请求超时?然后我去看看CPU、内存等各项指标:

Puti 压测指标1
压测过程中,CPU 似乎并没有怎么提高。

Puti 压测指标2
内存看起来更是毫无波动

Puti 压测指标3
系统负载倒是看的出来变化,但是 2核4G 的服务器,还是没压力。

那么结论很明显了,估计是带宽限制了。看来 1M 的小水管,果然不能干大事啊,目前看来 2核4G的配置,在这种应用上跑,是浪费了。所以接下来支持云存储应该是比较重要的事情了。