经过了几天的熟悉环境,小鱼开始让飞鸟尝试负责解决一些问题。分配的第一个问题现象是这样的: 接口有偶尔的超时现象。平时的时候接口可以在2s响应调用的上游。但是偶尔会有几次,超时特别严重,有时候20s、30s才返回。但是上游的超时时间是10s。所以这时候上游是拿不到结果的。对上游来说这次请求失败了。 飞鸟通过排查,找到了一些线索,就抱着电脑去找小鱼。 接口超时造成的上游请求失败是一个可用性的问题。为了解决这个问题,就需要优化系统,提高响应速度,这是一个性能的问题。具体到问题里,因为用到了锁,对性能造成了影响。可以通过优化这个锁性能来解决。即: 目标: 可用性 手段: 性能优化 抓手: 优化锁性能 可用性和性能不同的人有不同的理解。 可用性一般指正常运行时间占总时间的百分比。对上游来说,超时是一种不可用状态。 性能是指系统或服务在具体事情的时候表现如何。严格来说可用性也是性能的一个指标。 对于单接口来说,接口不可用大体分为下面四个方面:
如被限流、网络不通等。 解决这个问题系统要做好服务治理和全链路监控。
(算法)函数或者线程占用CPU的时间。 最后说一下锁,分布式锁比传统的线程锁和进程锁开销要大很多,但是它解决了跨JVM来进行共享资源的访问问题。目前主要有三种实现:
不管是哪种锁,一旦用到锁,就说明是阻塞式的。所以再并发度上一般来说都会比无锁的情况低一点。锁优化的思路和方法总结一下,有以下几种:
|
|