
内存的数据读取速度是SSD磁盘的10倍,SSD磁盘又是普通磁盘的10倍。远程调用的网络耗时是机房内部调用的1000倍,分布式缓存访问相对于数据库访问性能有数十倍的提升。
加快单个请求处理可以通过优化处理路径上每个节点的处理速度,例如使用更好的算法和数据结构,优化数据库查询,利用缓存代替数据库访问。并行处理单个请求可以将请求分解为多个子请求,内部使用多个节点同时处理子请求,然后合并结果。
同时处理多个请求可以通过部署多个Web应用实例,由负载均衡转发外部请求到不同实例。在同一个节点内部利用多进程、多线程技术同时处理多个请求。
请求处理异步化可以通过消息系统对流量进行削峰,系统先存储请求再后台处理。非核心逻辑异步化处理也能提升性能。
节点级别的可伸缩对于无状态节点直接增减节点即可。有状态服务需要支持状态数据的重新分布。系统级别的可伸缩通过将多个处理节点打包形成处理单元,按照用户维度划分交易单元,对整体交易单元进行扩容或缩容。
可水平拆分和无状态支持多实例部署,通过水平扩展提升处理能力。短事务和柔性事务减少资源锁定时间,保证最终一致。数据可缓存减少数据库压力。计算可并行加快单次请求速度。可异步处理增加系统处理弹性。虚拟化和容器化方便节点移植和扩容。
虚拟机房通过将系统节点单元化,实现跨物理机房的灵活部署。支持在单一物理机房内划分多个虚拟单元,或跨机房分布虚拟单元,使系统具备类似应用部署的便捷性。这种模式直接提升了系统的弹性伸缩能力。
节点需支持多实例部署,通过横向扩展线性提升处理能力。无状态设计确保请求可由任意实例处理,避免单点依赖。例如采用RESTful接口规范,配合负载均衡实现流量分发。
短事务:采用乐观锁替代悲观锁,减少资源占用时间。例如UPDATE语句带版本号校验:
UPDATE inventory SET stock=stock-1 WHERE item_id=123 AND version=5柔性事务:引入Saga模式或TCC补偿机制。通过事件溯源(Event Sourcing)记录状态变更,最终通过异步校对达成一致。
构建多级缓存体系:
消息队列(Kafka/RocketMQ)解耦系统组件,配合背压机制控制处理节奏。例如订单创建后发送MQ事件,由独立服务处理物流调度。
Kubernetes实现细粒度资源调度:
resources:
limits:
cpu: "0.5"
memory: "512Mi"
requests:
cpu: "0.1"
memory: "256Mi"配合HPA(Horizontal Pod Autoscaler)实现自动扩缩容。
参考基础性能指标评估系统性能,根据业务场景由易到难采取合适手段实现高性能和可伸缩目标。