高性能系统面临的几个大的问题:
一,高性能
总结来说,该书将依据如下思路来讲解性能问题的优化方式:既然无法减轻整个系统的性能压力,就在系统内部分散压力并且缓存完成的任务。分散压力到多个服务节点,然后从系统原理的各个层面优化每个服务节点处理单个请求的性能,最终达到提升整个系统性能的目的,不能立即达到这个目的也没有关系,要保持节点的持续工作,按照自身资源的限制能力对任务进行异步处理。
这就引申出了两个重要方面:1 负载均衡技术 2 消息队列技术
二,高可用
实现高可用有两种手段:一种是通过第三方组件保证系统的可用性,另一种是该软件本身就已经具备了高可用的技术实现。结合上面提到的,就是要实现负载均衡的高可用以及消息队列系统的高可用
三,异常的处理
这类异常处理问题主要是指同一顶层设计下,多个子系统间用来调用时发生的异常问题。解决的思路例如:1 使用消息队列的事物机制,重发机制或者私信机制 2 利用RPC实现的事物补偿机制 3 使用带有熔断机制的第三方组件 4 日志数据的排查
四,系统间依赖问题
系统间的循环依赖最可能是业务或技术人员无意造成的,但是当参与集成的业务系统数量超过可控制的阀值的时候,这个检查和纠正就不是人工可及的范围了
五,系统雪崩的问题
当系统出现性能问题,可用性问题,异常处理问题,系统间依赖问题时,技术人员旺旺不仅要担心本身带来的后果,更需要担心有次导致的系统雪崩效应。
如下是web系统的分层架构以及实现的组件
一,负载层的技术:
不同的业务需求,使用的负载方案是不同的,例如 nginx只能处理TCP/IP协议之上的应用层HTTP协议,如果要处理TCP/IP协议,则要安装第三方TCP-Proxy-Module模块。更好的直接在TCP/IP层负载的方案,是使用HAProxy
一下是一些常用的负载层方案以及这些方案的变形。
1 独立的nigix负载或HAProxy方案
2 LVS(DR) + Nginx 方案
3 DNS轮询 + LVS +Nginx方案
4 智能DNS(DNS路由) + LVS + nginx方案
二,业务层技术
该层是业务的核心处理层,在中大型业务系统中,这些业务不可能独立存在,一般都要涉及子系统间的脱耦。其后会以Thrift RPC技术,保证消息可达性的消息队列技术的原理和使用方式,讲业务通信层技术,以及介绍在业务层进行多个业务调用时的异常处理,包括事务补偿操作和错误熔断操作。
三, 存储层技术
要清楚的是操作系统下文件系统格式的选择 EXT3,EXT4,XFS
清楚LinuxPageCache对文件读写的工作原理
网友评论