1. 不要忘记判断对象是否为null,越早开始越好
2. 严格控制数据的输入,入口要做好防重复提交和长度限制
3. 做好异常错误的日志记录
4. 如果不是立即用到的数据可以异步处理
5. 依赖外部系统的话,要做好重试机制
在一个抓取外部视频图片的功能中,有时候会遇到504错误:
java.io.IOException: Server returned HTTP response code: 504 for URL: http://g2.ykimg.com/1100641F464CD7151DA30003DFD212605DFE4E-D875-4084-8974-172F82D9974D
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
at java.net.URL.openStream(URL.java:1010)
at com.you.common.file.base.BaseImageService.scaleImgFromHttp(BaseImageService.java:122)
at com.you.atlas.biz.video.service.impl.VideoServiceImpl$1.run(VideoServiceImpl.java:58)
at java.lang.Thread.run(Thread.java:662)
~
依赖网络等资源都是不可靠的,可以尝试重试机制。
6.保持数据的一致性
数据的不可控, 比如message表现在有1000多条的重复数据。
使用atomic系列:
AtomicInteger
AtomicBoolean
AtomicLong
数据库层面:
使用唯一性约束。 两个字段构成业务上的唯一性要注意,例如message表中status(1,9) photo_id
大数据量计算
精度,使用money.
我们应每次都给成功的POST请求做重定向
这就是web开发的最佳实践, 来自:http://djangobook.py3k.cn/2.0/chapter07/
对外提供服务要限制调用频率
一次线上网站挂掉的经历。
提供给移动客户端API的安全限制
一次网站被收集恶意注册的过程。
保持系统健壮的一些总结
猜你喜欢
转载自san-yun.iteye.com/blog/1489794
今日推荐
周排行