大话高可用

  今天老大跟我讨论说,没有看到过一篇够全面体系的高可用的文章。谈到高可用,基本都是以偏概全的文章。今晚抽空想了一下这个问题。

  高可用我另一个更资深老大其实总结的很全面了:别人死我们不死,自己不作死,不被队友搞死。

  然后就是怎么别人死我们不死:最好就是别人的东西和我们没关系,就是去依赖。如果实在有依赖呢,那就尽量弱依赖。弱依赖有需要被依赖方的返回结果和不依赖返回结果两种。需要结果就要请求后回调,不需要就直接异步化。另外要做好超时和重试、蓄洪、限流、熔断、降级。如果只能强依赖呢,人家死了,那就我们报错,但是我们不死。这也需要设置合理超时和重试、蓄洪、限流、熔断、降级。人家又复活了,我们也要立即恢复。

  基于对依赖的策略总结如下:

  依赖策略里涉及到容灾的问题。容灾需要解决两个方面的问题:

  这里就怎样快速失败和安全失败举一个例子。java.util包的容器的迭代器,在每次迭代的时候,其内部实现都会去判断modCount变量是否为expectedModCount的值。是的话就继续遍历,否则就抛出异常,终止遍历。这是一个快速失败的典型例子。

  而采用安全失败机制的集合容器,在遍历时不时直接在集合内容上访问的,而是先复制原有集合内容,然后在拷贝的集合上进行遍历。所以再遍历过程中对元集合所作的修改并不能被迭代器检测到,不会触发异常。但是这时遍历对原集合的修改是不感知的。

  快速恢复有些策略。最简单的比如心跳检测、事件监听等。

  安全恢复一般主要是在恢复前对系统或数据先做一些检查、数据还原等。

   有依赖的时候要尽量弱化依赖,除了理清业务逻辑之外,技术手段上可以采用异步化和旁路来解决。

  再考虑怎么自己不作死。自己不作死,就是要考虑两个关键字:一个作,一个死。

  作就是:改出问题?那就要不出问题:规范流程、做好测试、做好演练和压测。不当小白鼠,只用成熟的技术。职责单一化。

  死就是:要考虑单个接口挂了咋办?单个接口挂了现场返回错误,同时不扩大影响,用其他服务补数据。单个节点挂了咋办?用集群。一个机房挂了咋办?多机房。一个地区的网断了咋办?多地区。后面几个合起来叫做异地多活。

涉及到集群和跨区,就要考虑策略问题。

策略的问题非常难解决,所以业界做异地多活的非常少。拿阿里巴巴来说,他们的异地多活经历了3个阶段。

  最后考虑怎么不被队友搞死。

  别人死我们不死和不被队友搞死的区别在于,队友和我们需要有明确的业务边界,搞清楚哪些是我们负责的,然后就是保证别人死我们不死。

总结与思考:

  一个失败的leader是自己很牛,却没能带出来牛人。

跑题时间:

炊烟

  小时候总爱无故的停下来发呆。有时候是风,想感受风,风的声音、风的力道、风的气息,就这样傻傻的呆站着半天,直到已经走了离我很远的小玩伴们大声在前面叫我。有时候是一座房子,总觉得梦里或者很久很久以前见到过、住过,好熟悉的感觉。而炊烟,是一种心境。袅袅升起的炊烟们,大家觉得自己在毫无规律的完成自己的宿命。而这宿命是由风、由引力、由相互间的碰撞、由炉灶中生的火势,早早已经决定好。大规律是那么一致,各自的曲线又那么不同。努力的想挣脱自己的命运,却又被命运狠狠的捉弄。不是心静的人是看不懂炊烟的。

小巷

  总是会被看上去神秘的小去处吸引,一条蜿蜒的小路、一片树林,一扇断墙,最逃不过的吸引力是古朴的小巷。总能感觉到他们蕴藏的故事和哀怨。每次想到自己在日本新宿时特别想进去的那条“思い出の町”,就想起给别人带来的危险。当时是一群同事一起去的,我好想进去看看,但是被他们叫住,说不知道里面有什么,出了危险怎么办,我只好作罢。然而想来从那以后我也从来没断过把自己置于危险的境地。我终究不会甘于岁月静好,偏爱波澜起伏的人生。这是命运,逃也逃不掉。

峡谷

  现在看电影电视剧到底谁爱上了谁,终究与我无关,爱情之于我仿佛是桌面的落灰,遥远而轻浅。我更关心的是里面的兄弟之情、亲子之情,这些是更永恒纯粹的。那年我回家小姨家,每天睡醒了就去峡谷里的小溪边坐着,看着日光、山涧、青草、山花。后来弟弟给我写信我才知道,这时候他总是在山上,远远的看着我的背影。记得他带我寻访住在山间的书法家,告诉我将来他也要归隐过这样的日子。跟别人,更多的是“欲诉无人能懂”,而血脉之间,无需言语,看到对方就找到了自己。

  我喜欢的风景从来都不是特意去某个地方,而是做某件事情过程中的路过。中午出去买水果时伸手接住的雪花、出差到达的另一个国度、坐火车转车干脆订个酒店在附近看到的冰灯…… 也许有一天,你会陪我一起看彼此眼中的风景    

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏炉边夜话

拥抱变化—— 可扩展性杂谈

                                                                                ...

931
来自专栏SDNLAB

OpenDaylight安全漏洞无人问津

编者按:开源模式就像是市集,不仅可以提高效率,还可以通过开放全方位检测软件的不足。但是想要将开源的效果发挥到最大就得有完善的管理体系。OpenDaylight在...

3364
来自专栏java工会

学java就两个问题

1938
来自专栏生信技能树

生信基础50问-GC含量是否应该成正态分布呢

起初fastqc软件是为鸟枪法测序的WGS开发的,所以其报告的很多项目其实并不适合于其它NGS组学数据。比如下面的各项统计:

2622
来自专栏FreeBuf

横古贯今的隐私密史:密码的前世来生

21世纪什么最贵?密(秘)码(密)! 但陈老师高清无码教材红了,某菊订票信息玩票“脱裤”了,数以千万计的开房信息泄露了,各种社工库横行霸道,让我们不禁不去感叹...

2115
来自专栏机器人网

11个这类开源名称的词源

  “它适用于信息目前掌握在少数人而非许多人手中的任何领域,少数人控制产品、服务或实体的生产、分发和改进的任何领域。”   我们已搞明白了这点,那么“Kuber...

3475
来自专栏斑斓

敏捷实践 | 代码是如何腐烂的

代码是如何腐烂的?这是一个很大的命题,因为这种腐化的代码样本可能会体现不同的特征。若要彻底总结,可能会又是一本《重构》。我自然没有这个能力和知识。好在有一个简便...

35710
来自专栏生信技能树

GTX.Zip--基因领域唯一100%安全无误的企业级压缩大咖!

目前国内约莫有85台illumina的最新版novaseq测序仪,通常可以做到70元/Gbp的单价,一个人重测序标准的30X,也就是(3G X 30)90Gbp...

2743
来自专栏程序人生

浪费内存?多大个事?

遥想盖子当年,MS 红火了,谈笑间,640k 内存足矣。 - 程序君 现在已经不是从指缝中扣内存的时代了。bit 在主流的解释型语言中要么失了踪迹,要么被作为...

4088
来自专栏程序人生

是时候想想该怎么删代码了

武林外传里秀才怼上姬无命,来了一段关于「我是谁」的精彩逼问。 我是谁?我生从何来,死往何处,我为何要出现在这个世界上?我的出现对这个世界来说意味着什么,是世界选...

35511

扫码关注云+社区