高性能架构最全详解(图文全面总结)

B站影视 2025-01-17 02:38 3

摘要:高性能架构是大型架构的重中之重,也是大厂重点考察对象,下面我就全面来详解高性能架构@mikechen

高性能架构是大型架构的重中之重,也是大厂重点考察对象,下面我就全面来详解高性能架构@mikechen

本文作者:陈睿|mikechen

文章来源:mikechen.cc

分布式缓存

首当,第一优先就是考虑:使用缓存技术来解决性能问题。

比如:通过Redis集群、或Memcached集群...等等实现分布式缓存,提高系统可用性和扩展性。

这样,可以极大的减轻数据库压力,将频繁访问的数据缓存到内存中,减少数据库查询次数。

并且,提高响应速度,从内存中读取数据比从磁盘读取数据快得多。

但是,也需要考虑:缓存一致性问题、预热、穿透...等等解决方案。

分布式缓存系统中,缓存一致性是关键问题,可以采用不同的策略,如:定时失效、版本控制...等等方案,确保缓存与数据源的一致性。

以及,缓存预热,提前将热点数据加载到缓存中,减少首次访问的延迟。

缓存穿透,是指查询请求绕过缓存直接访问数据库,可以通过增加布隆过滤器来避免此类问题。

异步处理

异步处理是提升系统性能和响应速度的重要手段,尤其在高并发、大数据量和复杂业务场景中。

异步任务处理:将用户请求中的复杂、耗时操作(如:发送邮件、发送积分)异步处理,避免阻塞主流程。

如下图所示:

以及,订单支付后的异步处理,包括:库存扣减、支付通知、发货...等。

选择合适的异步处理方式,如消息队列、异步任务框架、异步编程等,可以有效提高系统的吞吐量和可扩展性。

微服务架构

小而独立的服务,每个服务负责一个特定的业务功能,并且可以独立部署、扩展和升级。

轻量级通信,服务之间通常通过RESTful API或消息队列进行通信。

自动化部署,使用容器化技术(如Docker)和编排工具(如Kubernetes)实现自动化部署和管理。

去中心化数据管理,每个服务管理自己的数据,可以采用不同的数据存储技术。

微服务的挑战,如:服务间通信、数据一致性、监控...等。

容器化与Kubernetes

如何利用容器技术(如Docker)、和Kubernetes,是提高应用的部署、和管理的关键技术。

Docker,是一个开源平台,能够将应用、及其依赖打包到容器中,使得应用在不同环境下都能够一致地运行。

容器是轻量级的、隔离的、可移植的,可以在任何支持Docker的环境中运行,无论是开发环境、测试环境还是生产环境。

Kubernetes ,是一个开源的容器编排平台,它能够自动化容器的部署、扩展、和管理。

Kubernetes能够有效地管理大规模的容器化应用,解决了容器调度、负载均衡、扩容、服务发现、存储管理等复杂问题。

Docker负责容器化应用的构建和打包,而Kubernetes负责容器的编排和管理。

Docker可以创建轻量级的容器镜像并推送到容器仓库(如Docker Hub、Harbor等),而Kubernetes则通过集群管理和调度功能自动部署这些容器应用。

无服务器架构

无服务器架构(Serverless Architecture):是指开发者不需要管理和维护服务器的架构方式。

在这种架构中,计算资源由云服务提供商(如:AWS Lambda...等等)动态分配。

开发者只需编写和部署代码,服务商负责自动化地处理资源调度、扩展、负载均衡和基础设施管理。

特点:

成本效益:只为实际使用的计算资源付费,无需管理或支付空闲服务器的费用。自动缩放:平台自动根据负载调整资源,无需手动配置。运维简化:减少了服务器管理的复杂性,开发者关注业务逻辑而非基础设施。快速部署:利用云服务提供商的CI/CD工具,代码可以快速从开发到生产。

数据库优化

关系型数据库的性能优化,如:索引设计、查询优化、以及数据拆分...等等。

常见的分库分表策略有水平分表、和垂直分表。

分库分表是一种数据库优化策略,通过将一个大的数据库、或表,拆分成多个小的数据库或表来提高系统的可扩展性、性能和可用性。

这里,需要重点关注:

分片键选择: 分片键的选择对分库分表的性能影响很大,需要仔细考虑。数据一致性: 分布式事务、最终一致性等。全局唯一ID: 设计全局唯一ID生成策略。跨库查询: 对于跨库查询,需要考虑如何优化。数据迁移: 在分库分表过程中,需要考虑数据迁移的问题。

削峰填谷

削峰填谷(Peak Shaving and Valley Filling):是一种常用于分布式系统、和高并发场景的负载管理策略。

通过消息队列(如Kafka、RocketMQ...等),可以将突发流量请求缓冲,平滑处理请求,防止高并发直接对数据库或应用服务器造成压力。

削峰是指通过各种技术手段减小系统在负载高峰期的压力,避免系统过载。

高峰期通常是指流量暴增、请求数量剧增的时间段,系统可能因无法承受大量并发请求而导致响应变慢、崩溃或出现服务不可用的情况。

削峰的核心是平衡和限制高峰时段的负载,防止突发的流量冲击系统。

填谷是指在系统负载较低的时间段,利用空闲的资源处理一些积压的任务,填补系统的负载低谷,充分利用系统的计算和存储能力,提升资源利用率。

本文作者:陈睿|mikechen

文章来源:mikechen.cc

来源:voidEncounterIntYa

相关推荐