高并发与分布式系统:原则、事务与实战

需积分: 0 0 下载量 21 浏览量 更新于2024-08-05 收藏 507KB PDF 举报
本文主要探讨了高并发、高可用、分布式相关的知识点,包括无状态原则、系统拆分、服务化、消息队列的作用以及缓存的应用。 1. 高并发原则: - 无状态原则:为了实现水平扩展,应用应当尽可能地保持无状态,这意味着每个请求都可以独立处理,不依赖于之前的请求状态。通过配置中心实现无状态,例如Disconf、Yaconf、Zookeeper、Consul等工具。 - 拆分策略:按照系统功能、业务、读写比例、AOP(面向切面编程)维度进行拆分,例如购物车、结算、订单系统、CDN等。 - 服务化:进程内服务逐渐演变为服务化的架构,涉及服务的分组、隔离、限流、黑白名单、超时、重试机制、路由和故障补偿。 2. 分布式与集群的区别: - 分布式系统是多个独立的节点通过网络协同工作,共同完成任务,而集群是多个机器共享同一份数据,提供相同的服务,具有高可用性。 3. 分布式事务: - 二阶段提交(2PC):分为准备阶段和提交阶段,确保所有参与者的操作要么全部成功,要么全部失败。 - 三阶段提交(3PC):在2PC的基础上增加预提交阶段,减少阻塞时间,提高系统性能,但增加了复杂性。 4. 消息队列: - 目的:服务解耦、异步处理、流量削峰。例如,通过消息队列实现库存扣减,先在Redis中扣减并记录日志,然后由后台进程将日志应用到数据库,确保最终一致性。 5. 数据异构与闭环: - 数据异构:通过消息队列接收数据变化,原子化存储,形成数据的多源异构。 - 数据闭环:统一管理多个数据来源,异构存储数据,确保数据一致性。 6. 缓存应用: - 用户层:从DNS缓存到浏览器缓存,再到应用层的缓存,如Opcache、页面静态化、业务数据缓存等。 - 代理层:CDN缓存通过ATS、Varnish、Nginx、Squid等构建,提供快速响应。 - 接入层:Nginx的Proxy_cache、FastCGICache等。 - 应用层:如Nginx+Lua+Redis用于业务数据缓存,PHP的Opcache优化PHP执行效率。 这些技术与原则是构建高并发、高可用分布式系统的关键,它们能有效应对大规模用户访问,提升系统性能,保证服务稳定性。