我正在运行一个 REST API 服务器,我不太确定基础架构。另外,我可以做些什么来进行基准测试和提高速度?
I am running a REST API server and I'm not too sure about the infrastructure. Also what can I do to benchmark and improve speed?
我的基础设施是:gandi 域、aws dns、route53 api.domain cname 指向一个自签名的启用 ssl 的 elb(有 1 个 elasticbeanstalk 实例)。 Elasticbeanstalk 实例是基于 docker 的。这意味着 nginx 转发到 docker 实例。 Docker 实例有提供静态文件的 nginx,以及 golang 的反向代理(fastcgi 到端口 3000)。数据存储在 Amazon RDS 上并使用 go-sql-driver 访问。
看起来太复杂了,最好的简化方法是什么?
您 header 问题 "How do I benchmark (tried ping, traceroute, pingdom) and improve speed?" 的答案可能最好通过搜索 "website benchmarking" 或类似的。那里有许多 网站基准测试工具。 (看看 Siege, ab, boom, boom in Go, or vegeta。还有很多,但那应该可以帮助您入门。)
"It looks overly complicated, what is the best way to simplify?"的答案是:
你需要它做什么?
对于简单的静态站点,您的设置过于复杂。对于分布式、故障冗余、high-availability 站点,它还远远不够。您需要使基础架构满足您的需求。
"route53 api.domain cname pointing to a to self-signed ssl-enabled elb (having 1 elasticbeanstalk instance):" 您需要负载均衡器吗?您要添加更多端点吗?应用程序是否支持这种方式的负载均衡? (是否会以原子方式处理请求,是否所有请求都是唯一的等)
"nginx forwards to docker instance:" 您想在 Go 应用程序或 NginX 配置中管理 SSL 证书吗?您 运行 现在的方式可能是目前最简单的方式,但再次强调,这取决于您的需要。
"Docker instance has nginx which serves static files, and reverse-proxies to golang (fastcgi to port 3000):" 这听起来过于复杂(但是,这取决于你想要什么)。这可以用 nginx 代替,只提供该路径上的静态文件目录吗?您在这里完全需要 fastCGI 吗?
" 数据存储在 Amazon RDS 上并使用 go-sql-driver 访问:" 这对 AWS 来说很好,一次同样,取决于您的要求(性能、合规性等)
希望对您有所帮助。
我的基础设施是:gandi 域、aws dns、route53 api.domain cname 指向一个自签名的启用 ssl 的 elb(有 1 个 elasticbeanstalk 实例)。 Elasticbeanstalk 实例是基于 docker 的。这意味着 nginx 转发到 docker 实例。 Docker 实例有提供静态文件的 nginx,以及 golang 的反向代理(fastcgi 到端口 3000)。数据存储在 Amazon RDS 上并使用 go-sql-driver 访问。
看起来太复杂了,最好的简化方法是什么?
您 header 问题 "How do I benchmark (tried ping, traceroute, pingdom) and improve speed?" 的答案可能最好通过搜索 "website benchmarking" 或类似的。那里有许多 网站基准测试工具。 (看看 Siege, ab, boom, boom in Go, or vegeta。还有很多,但那应该可以帮助您入门。)
"It looks overly complicated, what is the best way to simplify?"的答案是:
你需要它做什么?
对于简单的静态站点,您的设置过于复杂。对于分布式、故障冗余、high-availability 站点,它还远远不够。您需要使基础架构满足您的需求。
"route53 api.domain cname pointing to a to self-signed ssl-enabled elb (having 1 elasticbeanstalk instance):" 您需要负载均衡器吗?您要添加更多端点吗?应用程序是否支持这种方式的负载均衡? (是否会以原子方式处理请求,是否所有请求都是唯一的等)
"nginx forwards to docker instance:" 您想在 Go 应用程序或 NginX 配置中管理 SSL 证书吗?您 运行 现在的方式可能是目前最简单的方式,但再次强调,这取决于您的需要。
"Docker instance has nginx which serves static files, and reverse-proxies to golang (fastcgi to port 3000):" 这听起来过于复杂(但是,这取决于你想要什么)。这可以用 nginx 代替,只提供该路径上的静态文件目录吗?您在这里完全需要 fastCGI 吗?
" 数据存储在 Amazon RDS 上并使用 go-sql-driver 访问:" 这对 AWS 来说很好,一次同样,取决于您的要求(性能、合规性等)
希望对您有所帮助。