一、这本书解决的问题
应对高并发场景的处理思路,结合了个人的实际经历。
二、本书的亮点
可以看出,作者有丰富的实践经验,所写的内容是对于工作中遇到问题的总结,在工作中也有用到与其类似的问题,有很多处理问题思想可以在遇到类似问题时借鉴。
三、读后感
周末看了这本书的四分之一,收获颇多。记得在几个月前,看到这本书一点感觉都没有,觉得这本书将的内容似乎都是理论的东西,在工作中用得很少。但最近看过一些书以及一些开源框架之后,发现他们的设计思想都非常的类似。应对软件这种思维产物,有很多的不确定性,面对这种不确定性,而且复杂的系统,很难一下子就能完成,所以需要对系统进行设计,以应对不断变化的需求。我觉得有两个核心思想:1.分而治之;2.及时反馈。面对复杂的系统,职责分得越细,越容易对其进行控制。一个系统,其实也可以用二八定理来看,对于一个在线交易系统,访问量最大的应该是商品首页,那么这部分的功能就可以着重考虑高并发访问的问题,对于结算系统,更注重数据的准确性,那这部分的功能就要更考虑数据的处理,需要进行幂等、数据校验等额外操作。软件工程,其实就是对操作系统的计算能力、存储能力、网络的通信能力进行合理的操控。在遇到极端情况下,需要对系统的CPU、内存进行监控,防止资源被耗尽而导致服务不可用,对于网络需要考虑对请求的控制,防止过多的请求将服务压垮,导致整体服务不可用,所以有限流、服务降级、熔断、负载均衡等处理策略。软件工程在产品上线之后,通过及时反馈,发现系统存在的问题,及时修复,即使系统出现了问题,将影响降到最低,所以有版本控制、AB测试等方案出现。
平时的工作中,主要工作是对业务进行建模,完成公司的业务需求。工作中主要工作是数据库设计、接口设计,完成了这两项工作,基本就做完了。工作中的难点是对于业务中异常情况的考虑,往往在开发过程中没有问题,但测试一测就会发现问题,测试测了没有问题,一上生产就会有问题。所以,处理完所有的异常情况之后,整个开发过程才算正真完成。其实,软件开发过程中,开发所需要的时间并不多,往往后期测试然后修改花的时间比开发还多。开发过程中,如果比较耗时,要么是需求没有理解透彻导致需要重新开发,要么就是有复杂算法需要实现。但一般前者比较常见,后者很少。解决办法就是多进行单元测试。上线阶段最好先灰度上线。
一个项目的成功上线,往往需要有好的监控体系、容错体系。思维的产物很难实现百分之百正确,但可以尽量及时发现问题并做好应对方案。随着所遇到问题不同,需要处理的问题也会不一样,在工作中多去总结思考。理解底层原理,能够让自己发现问题的根本原因,能够更有针对性地解决问题,而不是从表面来解决问题。