高性能架构是大型架构的重中之重,也是大厂重点考察对象,下面我就全面来详解高性能架构@mikechen
分布式缓存
首当,第一优先就是考虑:使用缓存技术来解决性能问题。
比如:通过Redis集群、或Memcached集群…等等实现分布式缓存,提高系统可用性和扩展性。
这样,可以极大的减轻数据库压力,将频繁访问的数据缓存到内存中,减少数据库查询次数。
并且,提高响应速度,从内存中读取数据比从磁盘读取数据快得多。
但是,也需要考虑:缓存一致性问题、预热、穿透…等等解决方案。
分布式缓存系统中,缓存一致性是关键问题,可以采用不同的策略,如:定时失效、版本控制…等等方案,确保缓存与数据源的一致性。
以及,缓存预热,提前将热点数据加载到缓存中,减少首次访问的延迟。
缓存穿透,是指查询请求绕过缓存直接访问数据库,可以通过增加布隆过滤器来避免此类问题。
异步处理
异步处理是提升系统性能和响应速度的重要手段,尤其在高并发、大数据量和复杂业务场景中。
异步任务处理:将用户请求中的复杂、耗时操作(如:发送邮件、发送积分)异步处理,避免阻塞主流程。
如下图所示:
以及,订单支付后的异步处理,包括:库存扣减、支付通知、发货…等。
选择合适的异步处理方式,如消息队列、异步任务框架、异步编程等,可以有效提高系统的吞吐量和可扩展性。
微服务架构
小而独立的服务,每个服务负责一个特定的业务功能,并且可以独立部署、扩展和升级。
轻量级通信,服务之间通常通过RESTful API或消息队列进行通信。
自动化部署,使用容器化技术(如Docker)和编排工具(如Kubernetes)实现自动化部署和管理。
去中心化数据管理,每个服务管理自己的数据,可以采用不同的数据存储技术。
容器化与Kubernetes
如何利用容器技术(如Docker)、和Kubernetes,是提高应用的部署、和管理的关键技术。
Docker,是一个开源平台,能够将应用、及其依赖打包到容器中,使得应用在不同环境下都能够一致地运行。
容器是轻量级的、隔离的、可移植的,可以在任何支持Docker的环境中运行,无论是开发环境、测试环境还是生产环境。
Kubernetes ,是一个开源的容器编排平台,它能够自动化容器的部署、扩展、和管理。
Kubernetes能够有效地管理大规模的容器化应用,解决了容器调度、负载均衡、扩容、服务发现、存储管理等复杂问题。
Docker负责容器化应用的构建和打包,而Kubernetes负责容器的编排和管理。
Docker可以创建轻量级的容器镜像并推送到容器仓库(如Docker Hub、Harbor等),而Kubernetes则通过集群管理和调度功能自动部署这些容器应用。
无服务器架构
-
成本效益:只为实际使用的计算资源付费,无需管理或支付空闲服务器的费用。
-
自动缩放:平台自动根据负载调整资源,无需手动配置。
-
运维简化:减少了服务器管理的复杂性,开发者关注业务逻辑而非基础设施。
-
快速部署:利用云服务提供商的CI/CD工具,代码可以快速从开发到生产。
数据库优化
- 分片键选择: 分片键的选择对分库分表的性能影响很大,需要仔细考虑。
- 数据一致性: 分布式事务、最终一致性等。
- 全局唯一ID: 设计全局唯一ID生成策略。
- 跨库查询: 对于跨库查询,需要考虑如何优化。
- 数据迁移: 在分库分表过程中,需要考虑数据迁移的问题。
削峰填谷
削峰填谷(Peak Shaving and Valley Filling):是一种常用于分布式系统、和高并发场景的负载管理策略。
通过消息队列(如Kafka、RocketMQ…等),可以将突发流量请求缓冲,平滑处理请求,防止高并发直接对数据库或应用服务器造成压力。
mikechen睿哥
mikechen睿哥,十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》