课程源地址
[2.1-云架构设计原则] (cloud.tencent.com/edu/learnin…)
1.1 为什么做架构设计
云架构设计的目的:采用合理的成本来选择和组合云产品,以满足业务的需求的同时,提高系统的可用性、可扩展性以及安全性。
1.2.1 高可用的概念
可用性:计算机系统能够持续无故障正常运作的概率,再互联网业务里面,一般指平均能够正常的为用户提供服务的概率。
衡量标准:MTTF/(MTTF+MTTR)*100%。
MTTF=平均无故障时间
MTTR=平均维护时间
高可用设计:即通过一定的系统设计和系统功能支持,大幅提高计算机系统持续无故障运行的概率。
可用性分级:
| 描述 | 通俗叫法 | 可用性级别 | 年度停机时间 |
|---|---|---|---|
| 基本可用性 | 2个9 | 99% | 87.6小时 |
| 较高可用性 | 3个9 | 99.9% | 8.8小时 |
| 具有故障自动恢复能力的可用性 | 4个9 | 99.99% | 53分钟 |
| 极高可用性 | 5个9 | 99.999% | 5分钟 |
1.2.2 高可用设计原则
高可用的设计核心目标是提高 MTTF 和降低 MTTR。
- 要有合理的评估分级
- 通过冗余设计来提高容错性
- 利用伸缩性来降低高峰期以及业务增长期的压力
评估分级
灾难恢复能力国家标准等级
| 灾难恢复等级 | RTO | RPO |
|---|---|---|
| 第1级 | ≥2天 | 1至7天 |
| 第2级 | ≥24小时 | 1至7天 |
| 第3级 | ≥12小时 | 数小时至1天 |
| 第4级 | 数小时至2天 | 数小时至1天 |
| 第5级 | 数分钟至2天 | 0至30分钟 |
| 第6级 | 数分钟 | 0 |
RTO=恢复的时间目标,代表的是信息系统从灾难状态恢复到可运行状态所需要的时间,用来衡量的是容灾系统的业务恢复能力 RPO=数据在灾难过程当中的最大数据丢失量,它用来衡量容灾系统的数据冗余和灾备能力
在灾难等级的提高中,RTO 体现为降低所需要的时间, RPO 体现为降低能被恢复的数据和发生灾难时的时差。而提高这两个指标的代价是成本将递增,所以更多的是结合实际情况定义合理的灾难恢复等级。
提高 RTO 的方法有:扩展的集群、磁带恢复等 提高 RPO 的方法有:定期复制、同步复制等
冗余设计
冗余的设计体现在从单节点、单通道提升为多节点、多通道,实现的方式有:
主从方式:在单体实例性能足以支撑业务负载的情况下,采取主从方式,主机故障时,备机马上接管主机(腾讯云数据库CDB默认双击热备,用户无需要设置)
双机双工:存在两个应用,每个应用两个实例做高可用,资源较浪费,两个应用各占用一个实例,互为备份实现高可用
集群方式:业务对于性能要求高,单机难以承载,可采用集群方式,一方面实现高可用,一方面突破单机性能瓶颈(可以使用负载均衡配置,腾讯云缓存集群版Redis、MemCache本身即为集群方式,分布式数据库DCDB也为集群方式)
伸缩性
伸缩性体现在两个方向:
纵向扩展:通过增加配置来提高自身的性能及吞吐
横向扩展:通过增加实例来提高系统的性能及吞吐
1.2.3 腾讯云的高可用服务
腾讯云的高可用服务由以下层级来依托:
硬件支持:腾讯云机房遍布全球,实现了晚辈的容灾策略,选用高质量IDC机房实现多运营商接入,高标准的机房网络建设。
平台支持:虚拟化技术,数据冗余存储,数据中心内实例自动故障迁移
高可用组件:腾讯云产品提供双机热备(如数据库、NAT网关)、分布式(如SCF、云缓存)等高可用设计
高可用组件
存储:对象存储、文件存储、归档存储、云硬盘
数据库:关系型数据库、弹性缓存、HTAP数据库、时序数据库、分布式数据库、列式数据库
网络:NAT网关、云解析
中间件:负载均衡、消息队列、API网关、分布式服务框架
CDN与加速:静态内容加速、动态内容加速、下载分发加速、视音频点播加速
1.3.1 高扩展的概念
扩展性是指业务IT系统,应对业务变更和功能变化时,调整的难易程度,用来保障系统适应调整的能力。
系统的扩展性高分几个方向
- 修改模块功能,不对其他模块产生影响
- 新增或减少功能模块,不对原有架构体系产生冲击
- 业务变更与上线,开发团队轻松应对
1.3.2 高扩展的设计原则
高扩展的核心指导思想是解耦,使用标准云组件或微服务化进行解耦
使用腾讯云标准化组件
使用消息队列异步化改造
- 梳理业务逻辑的关键路径,拆离非关键逻辑
- 将分布式事务异步化处理
- 利用消息队列的存储转发功能
- 使用消息队列的订阅功能
减少自建的通用型服务
- 云的服务设计之初就考虑集群化以及扩缩容能力,无需业务考虑
- 云的服务是标准化和高度抽象的,不会涉及到具体的业务逻辑
- 高度抽象的服务提供标准化的接口,降低数据依赖,提高扩展性
计算和数据应该分离
- Session、token等应存放在高速缓存组件中,不应存放在计算服务器中
- 计算与数据分离,才能避免数据耦合,支持计算能力的弹性伸缩
微服务化
- 合理设计服务大小颗粒度
- 理清服务之间的依赖关系
- 将有依赖服务的业务逻辑独立出来作为新的服务
1.4.1 高安全的概念
高安全的目的是为了保障业务的连续性和安全性、确保数据的不丢失、数据的不泄露
1.4.2 高安全的设计原则
高安全涉及以下方向:
- 主机安全
- 网络安全
- 数据安全
- 应用安全
- 业务安全
主机安全
主机存在的风险有:
- 木马攻击
- 密码破解攻击
- 漏洞攻击
通过以下机制保证主机安全:
- 制定合理的补丁更新
- 定期漏洞扫描
- 安装安全防护软件
- 关闭或则更换高危端口
网络安全
网络存在的风险有:
- DDos攻击
- XSS攻击
- 注入攻击
- CC攻击
- CSRF攻击
通过以下机制保证网络安全:
- 流量清洗
- 定期漏洞扫描
- 网络隔离,防止损失扩大
数据安全
数据存在的风险有:
- 数据泄露
- 员工疏忽
- 系统故障
- 数据窃取
- 嗅探攻击
- 中间人攻击
通过以下机制保证数据安全:
- 按最低权限原则分配访问和操作权限
- 进行数据加密
应用和业务安全
应用和业务存在的风险有:
- 羊毛党
- 金融诈骗
- 应用漏洞
通过以下机制保证应用和业务安全:
- 设计防刷策略
- 借助腾讯云产品识别用户画像
- 加强应用防护,修复漏洞
1.4.3 腾讯云的高安全服务
网络安全
- DDoS 防护
- 钓鱼网站举证
- WAF应用防火墙
- 渗透服务
- 网站安全认证
- 网站漏洞扫描
业务安全
- 人脸识别与核身
- 恶意注册用户识别
- 活动防刷
- 防撞号登录
- 验证码
- 金融反欺诈
- 图片和OCR识别
应用安全
- 反盗版、防破解
- 漏洞扫描:发现源码缺陷
- 支付环境监测,支付调用场景识别
主机安全
- 入侵检测、密码破解、漏洞管理
- Webshell检测
- 恶意文件检测
数据安全
- 数据加密
- 秘钥管理
- 权限管理
- 访问审计
以下是腾讯云针对安全的五大方向对应的产品能力
| 网络类别 | 腾讯云安全产品/服务 |
|---|---|
| 网络安全 | VPC、安全组、大禹、网站管家WAF |
| 业务安全 | 天御(活动防刷AA) |
| 应用安全 | 应用安全MS |
| 主机安全 | 云镜 |
| 数据安全 | 密钥管理服务KMS、数据加密服务HSM、访问管理CAM、云审计CA |
1.5.1 成本优化的概念
上云可减少以下资源的投入:
- 人员成本:管理、开发、运维
- 基础设施成本:数据中心、硬件、网络
- 时间成本:IDC选址、集成服务商选择,商务谈判,设备调试,试运行
1.5.2 降低成本的方式
降低基础设施成本
按需购买弹性伸缩、用完即弃的资源、降低基础设施的闲置成本
降低开发成本
- 使用分布式服务框架,围绕应用和为服务的PAAS平台
- 无服务器函数,在无需购买和管理服务器的情况下运行代码。只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全的运行代码
- 开发资源集中到核心业务,其他交给腾讯云
降低运维成本
- 所有云产品的监控管理总入口,实时、精准掌控业务和各个云产品健康状况
- 腾讯蓝鲸一站式运维,提供完善的全方位运维、管理平台,全面提升运营效率
选择合适的腾讯云付费方案
- 包年包月:一次性支付诺干个月的费用,付费后即可使用云资源。
- 按量计费:先申请资源,结算时按实际资源使用量收费;结算周期有小时/天/月等。
- 免费基础版:部分安全产品免费提供功能受限的基础版。
预付费适用场景:具有较稳定的业务场景,需要长期使用云资源,追求低成本。
按量计费计费适用场景:业务发展有较大波动性,且无法进行准确预测。资源使用有临时性和突发性。
1.5.3 能降低成本的腾讯云服务
PaaS
数据库、应用平台、转悠的应用处理:
- 资源弹性伸缩,按需购买
- 减少开发和运维成本
IaaS
计算、网络、存储
- 资源弹性伸缩,按需购买
- 统一管理,减少运维成本