不论是java仍是.net基础设施必不可少。java
MQ:程序员
若是发现MQ是瓶颈。无论用的是rabbitmq仍是kafka,其余的也好。做为生产者要确认超时时间、重试机制、异步线程池。消费方要作两件事:发现和解决。发现的主要是经过积压阈值最快发现问题。解决的方法主要有:短时间方案:增大线程数,增长服务器。长期须要优化逻辑。积压阈值的设置主要取决于对积压的容忍程度,好比咱们的服务对延时很敏感,那么设置积压阈值为50或者100。这样有问题能够快速发现。面试
缓存:redis
缓存的话,不论是tair仍是redis或者memcached。咱们对缓存的写入成功和数据存在性都不能强依赖。因此基本要作到缓存读取不成功就须要再次查DB。并且无论出什么问题,对程序来讲,就是抛异常了。因此必定要异常捕获。数据要用异步线程池异步写入。监控要作好。咱们有个服务要作一层缓存。咱们组的兄弟比较担忧,问我了解不了解冷热启动的概念。这个其实须要去咨询维护服务的人怎么定义这个概念。通常来说:冷启动数据是从磁盘加载的,热启动是从内存加载的。数据库
超时和重试:apache
为了防止别的服务出问题,必定优化好超时时间和重试机制。超时时间的定义通常设置为一个请求处理99.9%的耗时时间的5到10倍。这是由于考虑到跨机房等网络耗时的问题。虽然运维的同事会告诉说跨机房之间的时延也就是1ms或者2ms的事情,可是实际值要大于这个值,因此通常设置超时时间是100ms起步。不少请求设置了这个值仍是超时了,不要紧,就是截获一个异常而后重试。若是服务不重要,好比展现的时候,去取一个展现的key的字典值,也能够不重试。通常的RPC组件默认重试是3次。缓存
通常超时的异常有如下特征:服务器
java.lang.reflect.UndeclaredThrowableException at com.sun.proxy.$Proxy67.xxxx(Unknown Source) at Caused by: org.apache.thrift.TException: tthrift remote(IP:端口) invoke(xxxx) timeout, traceId:-2093033244087395764, timeout:100
Unknown Source:远程问题的特征之一微信
timeout是超时的特征网络
服务隔离:
服务隔离是为了减小损失的影响范围,避免雪崩效应。好比咱们有一些外部的依赖:咱们依赖微信支付的稳定性、支付宝支付的稳定性、银联支付的稳定性。那么我须要按照这几种通道作物理隔离,能够部署相同的代码可是部署在不一样的机器群。
组件版本及时升级:
好比httpclient4.3的版本有个bug并发量大的时候会阻塞。以前在乐视的时候,部门有个小组的服务就发生过这样的线上问题。
及时下线再也不使用的代码:
可能在一个团队中不少程序bug都是由于存在太多的兼容逻辑和临时代码,写这些逻辑的人若是没有加上很好的注释,在用完的时候也没有及时清理。后来维护的人看到这段毫无道理的代码不敢动。程序里大量的IF和ELSE,很容易踩坑。招聘的时候卡的很严,不少面试者不服气,我也能写出来代码。可是会写代码和会写代码是不同的。咱们需求很急,可是宁愿不作也不要一个写出一堆问题代码,到处是坑,难以维护代码的程序员。
数据库:
一个数据表的数据过多,对更新和查询性能都有影响。对于再也不使用的数据要及时备份清走。通常数据库的容量剩余不到60%, 就要考虑分库分表了。通常一台物理机写入能力也不能高于QPS1500。因此对于主从延时不是很敏感的业务场景,必定要作好读写分离。虽然作了读写分离,若是读和写的代码在一个事务里,其实都是走的主库。杜绝慢查询。
梳理好依赖:
开发一个系统,最忌讳的是没有灵魂。来什么需求都接。把系统搞得很乱。梳理好系统的边界和定位。咱们应该依赖什么服务,是强依赖仍是能够降级的弱依赖。调用系统的调用方须要什么东西,咱们是应该给提供,仍是让他们本身去解决。
总结:
上面提到的哪一步没有作好,均可能引起蝴蝶效应。好比:一个MQ的消费能力差,积压了,生产者同步写入,写入等待。另一个服务调用了这个接口,还把这个调用包裹到事务里,致使这个事务长时间不提交。这样的请求来几个,线程池满了,整个服务就挂了。若是别人调用这个服务,超时时间设置的过长,别的服务也跟着线程池满,挂掉了。若是没作好物理隔离,全部服务都挂了。
跑题时间:
玛格丽特.米切尔写的《飘》英文原名是《gone with the wind》,意思是美国南部的奴隶制文明一去不返,中文的翻译彻底没有这种韵味。女主人公斯嘉丽爱慕阿希礼的高贵气质,冒着生命危险为他作了不少的事情。而阿希礼只在斯嘉丽须要的时候给了她一把土。当时光沉淀了一切,斯嘉丽意识到本身爱上的只是本身想象出来的一我的,基于阿希礼。阿希礼只是空有一副皮囊,他的灵魂基于他的妻子梅兰。而斯嘉丽本身的丈夫白瑞德才更配的上本身的灵魂。爱情来的时候原本就是毫无道理,而本身困境中望着你,你一次次将我逼进绝望。我一次次从绝望中翻身的强大会将你从内心挤走。一个再坚强的女孩子最后也会爱上让本身不用坚强的人。
喜欢作鱼头鸡汤。鱼肉能够作出不少种花样,而鱼头吃起来比较费劲,骨头多,作汤最好。鸡片入锅,加上水豆豉,枸杞、姜片、甘草。将鱼头放到笊篱里,水煮到笊篱里只剩鱼骨,将笊篱拿出。关火装盘便可。好汤关键是食材,食材越好,调料能够越少。
世界上最遥远的距离是鱼和飞鸟的距离,一个在天际一个却深潜水底。我却恰恰想让他们在一块儿。即便不用一块儿成为汤,他们也能够在水面的一瞬间相遇。世界上最遥远的距离是我变成了你最喜欢的样子站在你面前,却不喜欢你。