每秒处理1000万用户请求…云上架构如何实现高性能和高可用

内容来源:2017 年 12 月 21 日,驻云科技资深架构师翟永东在“云时代企业架构的搭建”进行《云上架构如何实现高性能和高可用》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:2851 | 8分钟阅读

摘要

云上架构需要关注多方面的因素,本次主要讲的是高可用和高性能,从这两方面展开深度的解析如何搭建完善的云上架构。

嘉宾演讲视频及PPT回顾:http://suo.im/4sKQd8

云上架构概述

云上搭建架构不单单需要考虑到性能和可用性,还有安全性、可管理性、弹性等层面都需要注意,实际工作中每一个环节都需要顾及到。

传统架构与云上架构设计方法对比,传统的架构设计周期会比较长,一般的企业架构都会考虑今后3到5年的规划,解决的主要是有无的问题,是从0到1的架构搭建。云上的架构设计周期相对来说比较短,需求明确且主要是解决或优化已有的问题。

云上架构的高性能

什么是性能

性能是很难衡量的,狭义上的性能指的是运行速度的快慢,广义的性能则涉及更多的内容,如功耗、利用率、性能价格比、速度等。不同视角下关注性能的侧重点不同,用户视角下关注的是从请求发送到获得响应的整个时间间隔,对用户来说时间越长性能越差。从架构和开发者视角出发更多是关注响应延时、系统吞吐量以及并发处理能力,而更重要的是明确了解用户反映问题的根源。

高性能架构设计的基本步骤

搭建高性能架构有4个基本步骤,首先要明确性能的目标,接着分析系统中影响目标实现的所有问题,找到问题后再着手解决这些问题,最后通过性能评估的手段来测试当前性能指标。如果评估结果与性能目标之前存在差异,就说明影响性能的问题还没有被全部找到,这时需要重新开始进行之前的步骤。

整个过程其实是一个循环,即使某一次性能评估达标,但随着时间的推移业务的发展还是会出现新的性能需要。

进一步分析

性能目标指的是制定的符合高性能的指标,比如页面响应时间小于1秒,并发用户可以达到1万,高峰期每秒处理10000万用户请求等。

然后要根据性能目标分析当前业务系统中不同层次有哪些影响性能指标的问题,比如网络层方面的带宽、延迟,计算层方面的Cpu处理能力、是否采用集群,以及一些其他方面的影响因素。所以说系统性能高低由整体的处理能力决定,不由单一因素决定。

分析出问题后就开始解决问题,这时可以从两个方面着手。一方面是最简便也是大多数人首先会想到的,即提升系统硬件配置,如果硬件资源的升级能够解决问题,那么就直接采用这种方式,它最大的好处在于不用对现有的代码逻辑做任何的修改。但是大部分的情况下往往无法简单的通过硬件升级解决所有问题,还需要从架构的层次上入手,降低服务器压力,采用可扩展架构提高性能。

传统的测试可以使用LoadRunner之类的工具,云上则可以使用阿里云性能测试服务PTS。PTS与传统的性能测试最大的不同在于LoadRunner需要自己搭建,同时搭建好的测试系统会受限于本身的服务上限,服务器的数量决定了所能模拟的测试压力。PTS则可以快速的模拟大量并发请求,因为是云上所以PTS后端能够通过集群的方式模拟用户需要的并发量。

上图是我们提出的相对较好的架构方案,前端由负载均衡服务响应用户请求,在把请求转发给后端具体的服务器之前会有一个前端缓存,用来提升响应时间以及减轻后端压力。后端服务器通过集群方式响应用户请求,同时应用之间通过异步进行交互。访问数据库之前先通过缓存响应请求,在不能命中的时候再去访问数据库。

使用缓存时有个问题需要特别注意,即缓存与数据库的数据不一致。针对这一问题解决方式是不同的,要根据不同的需求来选择。比如有一种方式是在写数据库的数据同时更新缓存中的数据或者让缓存失效,这样用户在读取的时候,要么获取的是最新数据,要么得从数据库中重新读取数据。

某客户在阿里云上的高性能架构

上图是我们某个客户的云上架构。前端用户请求通过CDN服务响应,CDN主要用来做服务加速,对于可以满足的响应直接使用CDN解决,无法满足的请求转发给后端SLB。

从图中可以看到不同的应用使用的服务器数量不同,这里所有的服务都被部署到ECS上,ECS又挂载在SLB后面,另外其中还有OCS数据缓存,用户请求的数据如果无法从缓存中获取到,就从数据库中读取。

数据库的设计同样也非常复杂,首先它实现了一套读写分离,其次有一个DRDS分布式关系型数据库,能够挂载多个RDS实例,所有的请求都会发送给DRDS,而DRDS则相当于中间的路由代理,它会根据请求从不同的RDS中获取数据。

使用DRDS有几点需要注意,第一DRDS必须要和RDS结合使用,DRDS本身不存储数据,数据的存储都是在RDS上;第二DRDS后的RDS实例必须是Mysql数据库;第三DRDS有两种使用方式,一种是表的拆分一种是表的不拆分,如果不拆分DRDS会将表存在某一个RDS实例。

云上架构的高可用

高可用的定义

从字面意思上来看高可用其实就是为了减少停工时间,保持服务高度可用性。系统做高可用首先要具备自动侦测、自动切换、和自动恢复的能力。

自动侦测:通过冗余侦测发现运行的情况,将所汇集的讯息记录下来,以供维护参考。

自动切换:确认对方故障,则正常主机代替故障主机工作。

自动恢复:故障主机修复后,自动切换回修复完成的主机上。

高可用设计的前提

进行高可用设计时一般建议事先对自身架构做层次化和模块化的改造,按照应用层、基础设施层进行高可用设计,再按照功能划分模块,模块之间松耦合,且要求稳定可靠易于扩展,结构简单易于维护。

高可用设计方式

高可用设计包含三种方式,分别是主从方式,主机工作,备机处于监控准备;双机互备,两台主机同时运行各自服务工作且相互监测;集群工作,多台主机一起工作,各自运行一个或几个服务。

高可用架构设计原则

- 假定失效设计:假定任何环节都会出问题,然后倒推设计;

- 多可用区设计:尽最大可能避免架构中的单点故障;

- 自动扩展设计:不进行设计调整,就能满足业务量增长;

- 自我修复设计:内建容错及检查能力,应用能够在部分组件失效时自我修复继续工作;

- 松耦合设计:耦合度越小,扩展性越好,容错能力越强

多可用区设计

在SLB实例下绑定不同可用区的ECS,从而避免因为单个可用区的故障而导致对外服务的不可用。多可用区的云数据库RDS可以实现同城的数据灾备,OSS存储的数据默认会保存在多个不同可用区中。

健康检查自我修复

如果某台ECS实例不健康,导致健康中实例数低于最小值,弹性伸缩就会自动创建健康的ECS实例代替不健康的实例。

松耦合设计

通过消息解耦将原应用拆分成独立的模块,模块间的影响小,就不会因为部分失效导致整体不可用。

有问题可以在评论区讨论,以上为所有分享内容,谢谢大家!

原文发布于微信公众号 - IT大咖说(itdakashuo)

原文发表时间:2018-05-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

小程序新增多项功能,优化100多个功能点,堪称重磅!

微信在更新了安卓版6.6.0之后,小程序也来了一场大更新,新增多项功能,优化100多个功能点,堪称重磅! 1分享功能:小程序分发形式试探 分享功能功能,即用户可...

21870
来自专栏Rainbond开源「容器云平台」

好雨云资深架构师祁世垚参加Qcon演讲,现场反响热烈

14640
来自专栏Java架构

“淘宝京东”构建流式计算卖家日志系统架构的应用实践

26370
来自专栏网站设计制作、数字营销

网站和网页的通俗解释 让普通人都能看得懂

网站和网页即有很大的相关性,却又不是同一个个概念。有时几个网页即可组成个网站,而有的网站非常复杂,可能包含成千上万个不同类型的网页。而在网站制作和网页制作的概念...

15060
来自专栏带你撸出一手好代码

如何正确使用缓存技术

缓存技术是用来提升程序运行性能的常见手段,君不见, 阿里巴巴、新浪微博、美团网等互联网龙头企业都是用缓存技术来提升自己家网站的性能。然而,任何事物都有两面性, ...

39760
来自专栏架构师之路

多对多业务,数据库水平切分架构一次搞定

本文将以“好友中心”为例,介绍“多对多”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践。 一、什么是多对多关系 所谓的“多对多”...

33160
来自专栏CSDN技术头条

120万操作/秒Redis Cloud 集群单一服务器非基准测试程序

【编者按】日前,来自Aerospike公司的Anshu和Rajkumar在High Scalability网站上发表文章宣称其能 以1.68美元/小时的...

278100
来自专栏腾讯云技术沙龙

朱展:腾讯云小程序解决方案

大家下午好,我今天给大家带来的分享主题是腾讯云小程序解决方案。首先做一个自我介绍,我叫朱展,来自腾讯云,目前负责腾讯云小程序解决方案,从事设计开发的工作。

1.7K140
来自专栏张戈的专栏

细说五层网站架构,了解我们的网站压力究竟在哪里?

目前网站架构一般分成网页缓存层、负载均衡层、 WEB 层和数据库层,我其实一般还会多加一层,即文件服务器层,这样我们在后面的讨论过程中,我们可以依次用这五层对网...

48470
来自专栏杨建荣的学习笔记

浅谈zabbix和Grid control (r6笔记第25天)

在IT行业始终在进行着开源和商业的竞争而且双方火力都不差,开源的受众更多是中小企业,免费开源而且用户基数庞大,商业的用户都是一些大中型企业,求稳求成熟的服务。 ...

36670

扫码关注云+社区

领取腾讯云代金券