“不信任”的高可用

我们经常提到程序需要高可用,高可用涉及很多概念,比如冗余部署、集群、热备、监控等等。其实要提升程序的高可用效果,我们可以遵循一个原则,不信任原则。

假设背景,我们在开发一个http服务接口,我们要怎么“不信任”呢。

不信任输入

  • 不要认为我们提供出去的文档和demo写的是什么,用户就传什么。比如url的query string的参数里面,我们规定是int,但程序不能就直接把值取到强转换int,因为用户只要传一个非int的参数程序就可能抛异常了。
  • http是无状态的,不能以为session、cookie、user-agent等这些是可靠的,这些其实都只是http协议里面关于header的参数罢了,均可以被模拟和篡改。
  • 前端js的数据校验是防君子的,模拟http请求可以轻易跳过各种前端的合法性验证直接提交数据到服务器。
  • 对于关键性api,要做频率限制,暴露在外的接口我们是不能控制别人调用,不能由于对方项目出bug,死循环调用api导致我们的服务崩溃。
  • 关于任何公开出去的文本框,我们都不要认为都是“正常”的输入。用户可以输入各种注入脚本形成漏洞(sql注入,js注入,xml注入等等);还有可能各种脏话、广告等,影响网站的运营和形象。
  • 对于高可用的接口,我们接口要做实现“幂等”逻辑,供用户不明确是否调用成功情况下重试也不会重复执行。

不信任依赖

  • 程序避免不了依赖其他接口,但这些基础接口并不是都是可用的,可能服务崩溃了、网络出故障等、不按预期返回等。
  • 至少保障依赖的服务崩溃不能导致我们服务崩溃,自己的服务应该做好异常提示输出给用户,不应该由于基础系统崩溃导致自身系统也崩溃。
  • 我们可以设置超时机制,保证不会长时间无响应;某些场景需要重试。
  • 日志记录好对依赖方的输入、输出、执行时间等,出异常时可以跟踪,避免扯条。

不信任设施

  • 网络不总会通畅的,总会有延时、丢包、甚至掉线的情况。
  • 服务器会无故down掉,所以就算是没有高并发访问,也是需要冗余部署。

不信任人

  • 靠人的流程出错的几率就变大,重复性的固化工作应该写工具、写程序去执行,规章制度要少。
  • 测试、发布、构建、代码审查,其实很多事可以用工具完成,至少帮忙一大部分。

只要抱着不信任的原则,设计的方向自然会往高可用这个结果靠近,就会懂得为什么需要负载均衡,为什么要自动构建,为什么需要发布工具等等。

这里有一篇文章,观点跟我类似,写得更好。
程序世界里的不信任原则

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,076评论 1 32
  • 一. Java基础部分.................................................
    wy_sure阅读 3,780评论 0 11
  • 一殇一咏品太白 一剑一赋念霸王 往来白丁空缱绻 古今饮者罄绸缪
    邱天阅读 186评论 0 1
  • V软件正常接单中阅读 317评论 0 0