chr*_*ris 5 windows scaling load-balancing amazon-ec2 autoscaling
我第一次开发一个需要相当大规模扩展的应用程序,我以前从来没有一个应用程序需要在多个实例上运行.
这通常是如何实现的?我是否对SQL服务器进行集群,然后在所有服务器上镜像编程并使用负载平衡?
或者我是否将功能分开在一台服务器上运行一些?
另外如何将代码推送到我的所有EC2窗口实例?
这取决于您的要求.但作为一般准则(我假设一个网站),我会将db,webserver,缓存服务器等分离到不同的实例,并使用s3(+ cloudfont)作为静态资产.我还要确保适当的速率限制到位,以便只有合法的负载在基础设施上.
对于RDBMS服务器,我可能会设置主从数据库设置(RDS使这更容易),使用数据库分片等.数据库集群解决方案也存在,设置起来会更复杂,但会简化应用程序员的数据库访问.我还会相应地检查所有数据库查询和调优db/sql查询.在某些情况下,纯粹的NoSQL类型数据库可能比RDBMS更好,或者两者兼而有之,应用程序根据所需数据在它们之间切换.
对于webserver,我将设置一个loadbalancer,然后在loadbalancer后面的webserver实例上使用autoscaling.类似的东西将适用于app服务器(如果有的话).我还将调整Web服务器设置.
缓存服务器也将分离到其实例集群上.ElastiCache似乎是一项很好的服务.Redis具有与memcache相当的性能,但具有更多功能(如列表,集等),在扩展时可能会派上用场.
免责声明 - 我不打算提及任何Windows细节,因为我一直在Unix机器上工作.这些指南非常通用.
这是一个主观问题,每个人都会以独特的风格定制自己的系统.以下是我遵循的一些指导原则.
如果它是Web应用程序,请将表示(前端),中间件(API)和数据库层分开.与单片应用程序相比,切片架构的扩展性最佳.
所有这些都可以使用AWS Elastic Beanstalk与AutoScaling捆绑和部署.它目前支持ASP .NET,PHP,Python,Java和Ruby容器.AWS Elastic Beanstalk仍然有其自身的局限性,但是以最少的监控,扩展和负载平衡的方式管理您的基础架构是一种非常酷的方式.
提示:识别应用程序的读写密集区域有很大帮助.然后,您可以继续相应地对基础架构进行切片,并一次执行读取或写入焦点所需的优化.
总而言之,Amazon AWS几乎可以用来制作服务器拓扑.你可以选择组件.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
2294 次 |
| 最近记录: |