问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

高并发架构详解:从微服务到消息中间件

创作时间:
作者:
@小白创作中心

高并发架构详解:从微服务到消息中间件

引用
1
来源
1.
http://m.blog.itpub.net/70024924/viewspace-3006754/

高并发架构是架构师的必备技能,也是互联网大厂经常使用的。本文将全面详解高并发架构,包括微服务架构、负载均衡、分布式架构、分布式缓存、异步处理、分库分表和消息中间件等多个方面。

高并发架构

"高并发" 是指系统在同一时间段内,同时处理大量请求或并发用户访问的能力。比如:在阿里双11期间,大量用户会涌入阿里巴巴的电商平台,导致系统面临极大的并发访问压力,这就是高并发。

而高并发架构,主要是为了解决这样的高并发场景的一种系统架构。以下是一些常见的高并发架构设计原则和技术,比如:分布式、微服务、负载均衡、分库分表等。

微服务架构

微服务架构是将整个应用拆解成小而独立的服务单元,每个服务都运行在独立的进程中,通过轻量级通信协议相互通信。

这种架构风格有助于提高系统的灵活性、可维护性和可扩展性。每个微服务都专注于特定业务功能,独立开发、测试、部署和扩展,使团队能够更加敏捷地进行开发和部署。微服务之间通过 API 进行通信,允许使用不同的技术栈和独立部署。微服务架构有助于解耦系统的各个组件,提高系统的可伸缩性,使得应用能够更好地适应不断变化的需求和业务规模。

常见的分布式架构,最典型的一定会涉及到微服务架构,比如:Spring Cloud 和Spring Cloud Alibaba。

负载均衡

在大型网站、应用程序或分布式系统中,负载均衡是一个关键的架构设计元素。

常见的软件负载均衡方式,包括:反向代理服务器,比如:Nginx、HAProxy等,或应用服务器自身实现的负载均衡机制。

然后负载均衡根据预定的算法,比如:轮询、加权轮询、最小连接数等分配请求。

  • 轮询算法(Round Robin):请求按照顺序轮流分配给每个服务器,每个服务器接收到的请求数目大致相等。
  • 加权轮询算法(Weighted Round Robin):类似于轮询算法,但每个服务器被分配一个权重值,权重决定了每个服务器获得请求的概率。
  • 最小连接数算法(Least Connections):请求被分配给当前连接数最少的服务器,这样可以确保负载更均匀,适用于处理每个连接时间不一致的场景。
  • 随机算法(Random):请求被随机分配给后端服务器,这是一种简单但不够精确的算法,适用于负载均衡要求不太严格的场景。

分布式架构

分布式架构是将系统拆分成多个独立的模块或服务,分布在不同的物理或虚拟环境中,通过网络进行通信和协同工作。

比如:将系统拆分成小型、独立的服务,每个服务专注于特定的业务功能。

以及:将数据库分布在不同的节点上,以提高数据访问速度和系统的容错性。

以及:使用分布式计算框架,比如:Spark等,以处理大规模数据的计算和分析。

分布式缓存

分布式缓存是一种将缓存数据分布式存储在多个节点上的技术,目的是提高系统性能、降低数据库负载。

一些流行的分布式缓存系统包括:

  • Redis:开源的内存数据库,支持丰富的数据结构和高级功能。
  • Memcached:一款高性能的分布式内存对象缓存系统,主要用于缓存键/值对。

当然,这也会面临缓存的问题,比如:缓存雪崩、击穿等问题。

缓存雪崩是指大量缓存同时过期或失效,导致大量请求直接落到底层存储系统上,导致数据库或其他存储系统负载激增。

异步处理

在异步处理中,任务的执行不会阻塞程序的运行。在传统的同步模型中,当一个任务阻塞时,整个程序可能会停滞。异步处理通过避免阻塞,使得程序在等待某些操作完成的同时能够继续执行其他任务,从而提升性能。

比如:发短信、增加积分完成时,程序可以继续执行其他任务而不必等待。通过将任务放入消息队列中,可以实现异步任务的解耦。

异步处理可以用于提高系统对用户请求的响应速度,尤其是对于需要等待外部资源的操作。

分库分表

分库分表是一种数据库水平切分的策略,用于处理大型数据集,提高数据库性能和可扩展性。

库分表采用水平切分的方式,即按照一定规则将数据行分布到不同的数据库或表中。通常,切分规则可以基于数据的范围、哈希算法、业务逻辑等来确定。分库分表支持水平扩展,允许通过增加数据库节点,或表的数量来适应不断增长的数据量,从而提升性能。

常见的数据库分库分表的实现方式,包括:MySQL的分库分表中间件,比如:MyCAT、Vitess等。

消息中间件

消息中间件是构建分布式、松散耦合系统的重要组件,为系统提供了强大的异步通信能力,以及流量削峰等能力。削峰填谷是一种在系统中处理流量波动的策略,目的是避免因流量激增,或急剧下降而导致的系统性能问题。

这一策略通常结合了削峰和填谷两个方面:

1.削峰(Peak Shaving)

削峰是指在系统面临激增的请求时,通过一系列手段来平滑或减少请求的峰值,以确保系统稳定运行。削峰的目标:是通过流量控制、限流等手段,防止瞬时高峰对系统造成冲击,保障系统的正常运行。

2.填谷(Valley Filling)

填谷是指在系统面临请求急剧下降时,通过调整资源分配等手段来填充谷底。填谷的目标是在低流量期间合理利用资源,避免资源浪费。

比如:在线技术在阿里双11都会涉及到。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号