云上搭建高性能和高可用的架构
转载请注明出处!
本文转载至 Prof.Wang站点 https://solution.cloudcare.cn/?p=900
本文转载至 Prof.Wang站点 https://solution.cloudcare.cn/?p=900
本文转载至 Prof.Wang站点 https://solution.cloudcare.cn/?p=900
云上架构的概述
在云上搭建架构的时候,需要从以下五点来进行考虑:
- 弹性:架构能够根据系统的需求进行弹性的伸缩;
- 可用:要能够保证系统运行的连续性,避免出现业务中断的情况;
- 性能:要确保系统能够高效、快速地响应用户的请求;
- 安全:能够保证云上系统的安全,以防止被黑客攻击;
- 可管理性:搭建的架构能够便于后续的管理,节省管理的时间和成本;
传统架构和云上架构的设计方法是有明显不同,主要包括:
- 传统架构:解决有、无的问题,相对厚重,不连续
- 云上架构:解决多、快、好、省的问题,相对轻便,平滑
云上的高性能架构
性能是非功能需求,描述了系统传递服务的实时性:
- 狭义的性能指运行速度的快慢;
- 广义的性能涉及很多内容,如功耗、利用率、性能价格比、速度等;
不同视角看到的性能也是不同的:
高性能架构设计的基本步骤是:性能目标->分析问题->解决问题->性能评估
1.性能目标:制定性能的目标
2.分析问题:分析系统中有哪些问题会影响性能目标的实现
3.解决问题:从硬件和架构两个层次解决影响性能目标的问题
4.性能评估:通过测试工具或者服务验证是否满足性能目标
某客户在阿里云上的高性能架构如下所示:
架构解读:
- 使用CDN加速用户的访问,解决网络延迟的问题
- 对热点数据进行缓存,加快数据的访问速度,并减轻数据库的压力
- 通过DRDS实现数据库的水平扩容,提升数据访问的并发量
云上的高可用架构
高可用是为了减少停工时间,保持服务高度可用性;为了实现高可用,系统应该具备的能力有:自动侦测、自动切换和自动恢复。
- 自动侦测:通过冗余侦测发现运行的情况,将所汇集的讯息记录下来,以供维护参考。
- 自动切换:确认对方故障,则正常主机代替故障主机工作。
- 自动恢复:故障主机修复后,自动切换回修复完成的主机上
层次化和模块化设计是高可用设计的前提:
高可用设计包括三种不同的方式,分别是:主从方式、双机互备和集群工作方式。
高可用架构设计的主要原则包括:
- 假定失效设计:假定任何环节都会出问题,然后倒推设计;
- 多可用区设计:尽最大可能避免架构中的单点故障;
- 自动扩展设计:不进行设计调整,就能满足业务量增长;
- 自我修复设计:内建容错及检查能力,应用能够在部分组件失效时自我修复继续工作;
- 松耦合设计:耦合度越小,扩展性越好,容错能力越强
多可用区设计:
- 在SLB实例下绑定不同可用区的ECS,从而避免因为单个可用区的故障而导致对外服务的不可用
- 多可用区的云服务器RDS可以实现同城的数据灾备
- OSS存储的数据默认会保存在多个不同可用区中
健康检查自我修复:
- 某台ECS实例不健康,导致健康总实例数低于最小值,弹性伸缩(原ESS)会自动创建健康的ECS实例代替不健康的实例
松耦合设计:
- 耦合度与灵活性相反,耦合度越小,扩展性越好,容错能力越大
- 消息解耦将原应用拆分独立的模块,模块间影响小,不会因为部分失效导致整体的不可用
某客户在阿里云上的高可用架构:
架构解读:
- 在阿里云两个不同地域的三个可用区中部署业务系统,实现云端的两地三中心架构
- 通过集群的方式提升系统的可用性:SLB本身是主备的架构、SLB后面挂载多个ECS实例等
- 业务和应用系统分开部署实现系统的解耦
- 通过数据同步的方式将数据备份到异地的存储服务中,提升数据的可靠性
本文转载至 Prof.Wang站点 https://solution.cloudcare.cn/?p=900
本文转载至 Prof.Wang站点 https://solution.cloudcare.cn/?p=900
本文转载至 Prof.Wang站点 https://solution.cloudcare.cn/?p=900
如有版权问题,请给博主留言,博主将第一时间解决。