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

简介:

云上架构概述

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

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

云上架构的高性能

什么是性能

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

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

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

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

进一步分析

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

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

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

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

a8a58090637a2212bc7a3d45982c730cf026bab3

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

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

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

6811ed1be88f4f4d6480dc8c0fd03632bd81f583

上图是我们某个客户的云上架构。前端用户请求通过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存储的数据默认会保存在多个不同可用区中。

健康检查自我修复

e982d261bee9bfdd4a148c955b16cec2efb3bf38

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

松耦合设计

b1ec77e2ac6bc3567b8e0d6661214de855d11516

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


原文发布时间为:2018-06-12

本文作者:翟永东

本文来自云栖社区合作伙伴“数据和云”,了解相关信息可以关注“数据和云”。

相关文章
|
2月前
|
存储 缓存 安全
某鱼电商接口架构深度剖析:从稳定性到高性能的技术密码
某鱼电商接口架构揭秘:分层解耦、安全加固、性能优化三维设计,实现200ms内响应、故障率低于0.1%。详解三层架构、多引擎存储、异步发布、WebSocket通信与全链路防护,助力开发者突破电商接口“三难”困境。
|
3月前
|
SQL 监控 关系型数据库
MySQL主从复制:构建高可用架构
本文深入解析MySQL主从复制原理与实战配置,涵盖复制架构、监控管理、高可用设计及性能优化,助你构建企业级数据库高可用方案。
|
4月前
|
运维 监控 搜索推荐
MSE ZooKeeper:Flink 高可用架构的企业级选择
本文深入解析了 Apache Flink 架构中 ZooKeeper 的核心作用,包括 Leader 选举、Checkpoint 管理、作业协调及配置管理等关键功能,并结合金融风控与电商推荐等典型场景,分析了 ZooKeeper 在实际应用中的技术实现。
|
2月前
|
运维 监控 安全
公链开发中的高可用架构设计要点
本指南提供公链高可用架构的可复用流程与模板,涵盖目标拆解、先决条件、分步执行、故障排查及验收标准,结合跨链DApp与量化机器人案例,提升落地效率与系统稳定性。
|
5月前
|
消息中间件 负载均衡 中间件
⚡ 构建真正的高性能即时通讯服务:基于 Netty 集群的架构设计与实现
本文介绍了如何基于 Netty 构建分布式即时通讯集群。随着用户量增长,单体架构面临性能瓶颈,文章对比了三种集群方案:Nginx 负载均衡、注册中心服务发现与基于 ZooKeeper 的消息路由架构。最终选择第三种方案,通过 ZooKeeper 实现服务注册发现与消息路由,并结合 RabbitMQ 支持跨服务器消息广播。文中还详细讲解了 ZooKeeper 搭建、Netty 集群改造、动态端口分配、服务注册、负载均衡及消息广播的实现,构建了一个高可用、可水平扩展的即时通讯系统。
607 0
|
2月前
|
缓存 运维 监控
Redis 7.0 高性能缓存架构设计与优化
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Redis 7.0高性能缓存架构,探索函数化编程、多层缓存、集群优化与分片消息系统,用代码在二进制星河中谱写极客诗篇。
|
3月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
8月前
|
人工智能 算法 网络安全
基于PAI+专属网关+私网连接:构建全链路Deepseek云上私有化部署与模型调用架构
本文介绍了阿里云通过PAI+专属网关+私网连接方案,帮助企业实现DeepSeek-R1模型的私有化部署。方案解决了算力成本高、资源紧张、部署复杂和数据安全等问题,支持全链路零公网暴露及全球低延迟算力网络,最终实现技术可控、成本优化与安全可靠的AI部署路径,满足企业全球化业务需求。
|
3月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
7月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
2436 57

热门文章

最新文章