一个事故引发的思考
2013-12-19 23:18
465 查看
今天线上服务出现了一个事故,思考下这个事故,觉得有好几个地方需要思考。
1 对于前端而言,代码回滚的功能是必须的。前端接口出现了问题,第一个应该想到的是将代码回滚到一个稳定版本。
2 缓存和数据库的使用,需要注意一个问题,当缓存失效的时候,可能会有大并发的请求去访问数据库,这个时候数据库会不会崩溃?如果这个时候数据库崩溃了,那么web前段机也会随之崩溃。
所以,缓存失效的时候去数据库访问这里必须有一个锁机制。
3 在处理缓存和数据库的关系的时候,缓存一般会去设置一个过期时间,是在这个过期时间到的时候,缓存中的数据自动删除呢?还是做伪过期?即在设置的时候单独设置一个expire过期时间,根据这个过期时间来判断是否过期,这个好处是这里的缓存中得数据除了做加速作用,还做了容灾处理,当后端数据库挂了的时候,缓存中的数据就会一直生效。
4 设置过期时间的时候是否需要将过期时间散列,这个是个技巧。
5 客户端不要做在XX点做接口调用的操作。这完全就相当于DDOS攻击了。客户端需要将所有接口做散列处理。不能集中。
6 报警和预警机制需要考虑。
7 再高深的技术不如让服务稳定最重要。
8 在做第三方请求处理的时候,需要问下自己,如果这个请求失败了怎么办?
1 对于前端而言,代码回滚的功能是必须的。前端接口出现了问题,第一个应该想到的是将代码回滚到一个稳定版本。
2 缓存和数据库的使用,需要注意一个问题,当缓存失效的时候,可能会有大并发的请求去访问数据库,这个时候数据库会不会崩溃?如果这个时候数据库崩溃了,那么web前段机也会随之崩溃。
所以,缓存失效的时候去数据库访问这里必须有一个锁机制。
3 在处理缓存和数据库的关系的时候,缓存一般会去设置一个过期时间,是在这个过期时间到的时候,缓存中的数据自动删除呢?还是做伪过期?即在设置的时候单独设置一个expire过期时间,根据这个过期时间来判断是否过期,这个好处是这里的缓存中得数据除了做加速作用,还做了容灾处理,当后端数据库挂了的时候,缓存中的数据就会一直生效。
4 设置过期时间的时候是否需要将过期时间散列,这个是个技巧。
5 客户端不要做在XX点做接口调用的操作。这完全就相当于DDOS攻击了。客户端需要将所有接口做散列处理。不能集中。
6 报警和预警机制需要考虑。
7 再高深的技术不如让服务稳定最重要。
8 在做第三方请求处理的时候,需要问下自己,如果这个请求失败了怎么办?
相关文章推荐
- 关于中国产品的质量问题-一个暖水袋引发的思考
- 一个贴子引发的对回调的思考
- arp协议的混乱引发的思考--一个实例
- 一个bug引发对小程序运行原理的思考
- 连载《一个程序猿的生命周期》-25.到工业现场学习业务知识引发的思考
- 一个JAVA题引发的思考
- 从map的一个优雅写法的问题引发的思考
- 一个截取字符串函数引发的思考
- 一个字符引发的思考
- 读《一个递归引发的思考》有感 ——“码小农”第一期
- 由一个C++问题引发的讨论和思考(未完待续)
- 一个“笑话”引发的思考
- for语句引起一个死循环而引发的思考!!!
- 一个字符串常量实验引发的思考
- 一个精典asp程序引发的错误引起的思考
- 一个需求引发的关于平板电脑的思考
- 一个案例引发的思考
- 一个游戏引发的思考(概率问题)
- 一个编程小题目引发的思考
- 由linux中的一个宏定义引发的思考