高性能服务系统构建与实战

高性能服务系统构建与实战

第一部分 前序

本部分将介绍在实际工作中技术人员最容易遇到的和系统可用性、系统高性能有关的一些问题,使读者对本书将要讨论的问题有一个概要性地理解,这样便于各位读者选择性地阅读本书章节。第1章中将分类讨论这些问题的由来,描述这些问题场景也将越来越会对软件系统造成更大的伤害。第2章中将绝大多数业务系统进行具有共性的层次分解,并结合第1章的内容介绍每一层最可能出现的问题。

第1章 那些年一起踩的坑

实际上大多数情况下单个系统独立工作都是没有问题的,或者说不会出现很多难以解决的问题。而一旦一个业务需要多个系统联合工作才能完成,那么往往就会出现各种问题了。

1.1 性能问题

性能问题的调优涉及多个方面:硬件层面、网络层面、操作系统层面、应用软件层面和代码质量层面。

本书将依据如下的思路来讲解性能问题的优化方式:既然无法减轻整个系统的性能压力,那么就在系统内分散压力并且缓存待完成的任务。分散压力到多个服务节点,然后从系统原理的各个层面优化每一个服务节点处理单个请求的性能,最终达到提升整个系统性能的目的,不能立即达到这个目的也没关系,至少要保持服务节点持续工作,按照自身资源的限制能力对任务进行异步处理。这就是本书的两部分内容:负载均衡技术和消息队列技术所要达到的讲解效果。

1.2 可用性问题

高可用性是系统建设的另一方面,不是说让性能无限制地“高下去”就可以了,而且还要注意系统的容灾容错性。所以高性能的前提是:保证服务系统能够持续工作。

实现高可用性一般有两种手段:一种是通过第三方软件/组件保证系统的可用性;另一种是软件/组件自身已具备高可用的技术实现。

1.3 异常处理问题

这里的异常处理当然不是指我们在写代码时,对代码运行时可能抛出的异常进行解决的过程,这类异常处理问题主要是指同一顶层设计下,多个子系统间用来调用时发生的异常问题。在分布式业务执行过程中,技术人员需要假设的前提是:调用过程的异常问题无论如何都会出现,即使是再完美的业务系统也不能避免

系统间调用的异常如果处理不好,那么其造成的损害,特别是对数据一致性的损害将是巨大的。本书提供了多种思路来处理这些异常问题,例如使用消息队列的事务机制、重发机制或者私信机制,利用RPC实现的事务补偿机制以及使用带有熔断机制的第三方组件。

1.4 系统间依赖问题

客户方不懂技术,是我们在需求调研阶段遇到的算一个问题的问题,但关键看需求人员从哪个方面着手向用户解析,引导用户对需求逻辑进行分析。

1.5 系统雪崩问题

当系统出现性能问题、可用性问题、异常性问题、系统间依赖问题时,技术人员往往不仅要担心问题本身带来的后果,更需要担心由此导致的系统雪崩效应。

第2章 业务系统分解

2.1 负载层技术

实际上负载均衡的概念很广泛,所述的过程是将来源于外部的处理压力通过某种规律/手段分摊到内部的各个节点上处理。

这里所说的负载分配层,是单指利用软件实现的计算机系统上的狭义负载均衡。

  • 分配到不同的业务处理节点有两个层面的含义:第一个层面是说,多次同一类型的请求可以分配到同一个业务系统的不同节点上进行处理;另一层面是说“用户终端”多次不同类型的请求,会分派到不同的业务系统的不同节点上进行处理。

不同的业务需求,使用的负载方案也是不同的,这就非常考验软件架构师的方案选择能力。例如Nginx只能处理

发表评论

电子邮件地址不会被公开。