Golang Go语言中2024年基于AWS的web服务架构该怎么做
小公司,有七八个微服务,两三个对外的 http 服务,其余都是内部处理 rpc 请求的服务。 没啥架构经验,想到几个方案 a.自己搞个 nginx 在 ec2 上,去做负载均衡和反向代理,那这样前面是不是得搞个防火墙什么的(这里不知道怎么搞 b.直接把 cloudfront 当 nginx 用 c.干脆直接用 cloudfront+ALB,静态资源经 cloudfront 就走 s3 了,接口访问就直接去 ALB,在那里做负载均衡和反向代理 ...还有其它靠谱的方案吗,大家平时在用的 还有一个,上面的都没考虑费用的问题
Golang Go语言中2024年基于AWS的web服务架构该怎么做
更多关于Golang Go语言中2024年基于AWS的web服务架构该怎么做的实战教程也可以访问 https://www.itying.com/category-94-b0.html
优先考虑可靠性的情况下,应该选择 B 方案。自建 EC2 负载均衡稳定性不够也不容易观察流量数据,自身就是单点风险。
更多关于Golang Go语言中2024年基于AWS的web服务架构该怎么做的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
我们是 EC2 前有 ALB EC2 里 Web Server 前面再来个 HAProxy
aws 里有个叫 elb 的东西
楼主提到的 ALB 就是 ELB 的一种
感谢回答 还想问一下
那这样每台 EC2 都需要装 HAProxy 服务,这个我没用过,可靠吗?
EC2 前面都有 ALB 了,web server 前面的 HAProxy 用途是
还有你们有没有静态资源放 s3 的情况,这种如何提供对外访问
C ,这是 AWS 最佳实践。
上面选 B 的哥们,你们 CF 的上游直接怼 EC2 上吗?基于域名/IP 分流,你其中一台机器要是挂了不直接影响到用户了吗。
HA 是用于在一台机器上部署多个服务实例的吧?
静态资源放 S3 之后直接挂到 CF 上就行。EC2 要不要带 HA/NGINX 取决于你们的部署模式。
比如最简单的一台机器每个服务都部署一个实例的方式,直接 ALB SG 指定端口号就行了,不需要反代。
c.
aws 有各种 lb 了。还要 haproxy 干啥?
另外量少可以试试 Lambda 。
在实例级别终止 SSL URL 改写 访问日志 简化单实例多后端的情况等等 确实跟 ALB 有一部分功能是重合的 是否采用根据实际情况来就行 S3 外部访问应该没涉及到 不太清楚
已经是 go 了, aws 上直接 EKS 就行了
静态资源 cloudfront + s3
在Golang中构建基于AWS的Web服务架构,可以遵循以下步骤:
-
基础设施选择:
- 利用AWS的EC2服务创建并运行Go应用程序所需的虚拟机。
- 使用Elastic Load Balancing(ELB)实现负载均衡,将流量分散到多个EC2实例上。
-
存储与数据库:
- 选择Amazon S3进行静态存储和备份,适用于图像、视频等静态资产。
- 使用Amazon RDS托管数据库,根据需求选择适合的数据库引擎,如MySQL、PostgreSQL等。
-
安全与防护:
- 利用Amazon Route 53的DNS服务简化域管理。
- 使用AWS WAF和Amazon CloudFront提供边缘安全和边缘缓存,减少延迟并保护应用免受恶意流量攻击。
- 配置AWS Shield实现DDoS防护,确保基础设施安全。
-
应用部署与管理:
- 考虑使用AWS Serverless Application Repository或Elastic Beanstalk等PaaS服务简化应用部署和管理。
- 对于需要高度可扩展性和灵活性的场景,可以使用AWS Lambda和AWS Fargate等无服务器服务。
-
监控与日志:
- 利用AWS CloudWatch进行应用监控和日志收集,确保应用运行稳定。
综上所述,基于AWS的Go语言Web服务架构需要综合考虑基础设施、存储、安全、应用部署以及监控等多个方面。通过合理规划和配置这些服务,可以构建出高效、稳定且安全的Web服务。