事情是这样的,最近学委居然被水痘病毒拿下了。。。

哎,之前生活作息没把握好节奏,写文章后太兴奋了有时候睡不着,休息不足免疫力就下降,只能说写文章是一把双刃剑。(也奉劝各位读者朋友们注意休息,身体健康最重要!)

好,暂时放下这把剑,去看医生。被告知这是常见病毒,只是偶尔有些人免疫力下降没抵抗住,就会被感染。

不是说系统架构吗???先看下图,请带着这个问题继续看吧。

(学委就是里面那个冒红的块,其他都是正常健康的同事们)

水痘是什么?

水痘是一種急性高度傳染性疾病,症状就是会发痒发红,通常得过一次就一般不会再感染。(学委不是水痘专家,这里只是简单摘述)

我小时候肯定是打过疫苗的,但是没想到N年后居然被再次攻击了!

得了水痘之后周围发生了什么?下面是整个事件。

  1. 周五发现腰部有点痒,长了一小块痱子(只觉得是小问题),恰巧约了朋友周一吃饭。
  2. 下周一,还没有好挂了号。我跟两个朋友吃饭,检查完马上告诉他们(告诉哥们要酒精消一下毒)
  3. 那天差不多下班单位立马安排了消毒,让周围的同事一周内在家上班。
  4. 也让学委在家多注意休息,不过问题不大暂时没有休假,继续在家里上班了。
  5. 部门上报并通报了这个事件,呼吁大家注重休息和生活卫生。

那么,这关系统什么事???

公司其实就像一个系统,部门就像一个服务群,而学委就是里面的一个微服务。当然这个平台也有几个类似学委这样的微服务(就像下图一样,蓝色框内为一个公司,里面很多打工人,箭头为服务间交互)。

上图,除了学委这个服务变红了,其他服务还是绿色的,正常运转的状态。(请再看一眼这个图,后文会继续讲学委跟几个同事交互之后的变化)

遇到问题,让系统尽量不崩溃,保持正常或者近乎正常的运行,是每个架构师必须做好的事情。

这里,有必要了解系统思维

所谓系统思维(System Thinking),就是把某个疑问、某种状况或某个难题明确地视为一个系统,也即是视为一组相互关联的实体,而不是孤立的一个对象。

在公司,每个职能部门,处理应对业务,应对一个一个问题。这就像及了应对一个问题的整体架构!

系统思维的初级目标是理解系统是什么,更进一层的目标是为了预测系统在发生某些变化之后的情况。而最高级的目标,则是用部件来合成一个系统,这个过程就是系统架构。

每个员工个体就是部门里面的一个个服务,当然职能还有前端,后端,业务分析人员,架构师,和其他管理等等,这些相当于不同类型的实例。

这些公共协作对外为处理系列问题的一个系统!

针对这个bug(水痘)的处理?

系统级别的处理

类似的,我们可以看到在公司做了上面的一些措施,遏制病毒的进一步扩散,避免感染影响更多的微服务。

同时把问题上报,公布问题,带来更高级别的关注和避免了更多可能的服务交互。

这些行为就像微服务里面进行业务隔离(下图的虚线和实线包起来进行不同级别的隔离),警告展示在大面板(群发公告这个事件),实现中央化统筹一个样啊。

服务级别的处理

就像雷学委微服务一样,一开始以为长痱子,没多想跟其他服务交互(比如更哥们吃吃饭,回去公司跟小伙伴交流技术)。

但是,服务内部有设置状态监控,学委生病一开始以为是腰上长了一点点痱子,没理会,第四天发现还没有好。

看病前4天已经约了朋友吃饭,也不知道是啥,所以就去吃饭了。但也没有犹豫下午就请假去看医生了。

然后跟确认病情后,通知部门,然后公司安排系列后续处理。

我则在家上班,也避免影响其他人。

这是一种服务的组件自治的体现,自我管理,自我故障处理,不行再向上汇报。

如果以上措施都没有呢?

那么就像下图一样,红色为被传播水痘病毒的同事,在系统中体现为多个服务无法正常运转导致整个系统在外部看来是崩溃的。

也就是我们常说的挂机了,类似之前B站崩了。

有些读者跟着文章读,很容易被带入了,觉不是很自然吗?

那么,你可以想想下面的问题?

要是没有去看医生呢;

要是看医生后忘记及时告诉公司了呢;

要是告诉同事,他们没有理会约束呢;

要是告诉部门没有任何举动等等。

虽然水痘也不是那么吓人,但遇到抵抗力低的照样传播开来,那就影响更多部门,甚至更多系统(公司与公司之间业务交互的影响)。所以,若没有上述处理,这个事情可能影响更大。

类似问题可再想想,重新审视一下你所接触过的系统或者项目。

比如某一次提交代码,小八(他是新加入项目的)就写了一个for循环,本地测试好好的。
放到线上后运行了一段时间后导致一个查单服务Java进程发生OOM。
结果调用服务不断重试,自然地把其他查单服务压垮了,最后所有调用方不断重试,还把网关压垮,全员紧急加班查问题。

那么有没有什么架构方案是像万金油一样,一劳永逸的呢?

答案是没有。生活还是有其他万一的,我们无法都考虑进来。很多技术人员会听到6个9,也就是一年挂机不超过31秒,很难达到吧。

 (1-99.9999%)*365*24*60*60=31.5秒(向下取整数)

只能说架构应该具有相对的适用性,超前性(N倍性能的弹性设计,但不可能是百倍性能的规划),演化性(平台不是第一天就成为平台)。这不就跟公司成长一样嘛。

总结与延伸

类似水痘这个bug是无法避免的,因为消除不了,但不属于那种致命问题,有时候也不会被重视。

做系统也一样不能说完全没有Bug,只是多数情况下还不是主要矛盾,可以忍受(再没有遇到那个情况触发下)。

怎样的架构能过避免出现大规模故障呢?

  • 打造高质量服务
    自我感知,告警,熔断,健壮性等等。这对应于员工则是招聘培训高素质员工

  • 必备风险管理方案

流量销峰,加缓冲队列,业务隔离,服务隔离,多个服务实例,还有支持伸缩。这对应于公司则是针对故障的一系列高效处理流程:比如合理业务线划分,分布式团队带来错峰弹性,和支持移动办公等等。

当然更加弹性更加可用,那么系统的成本就越高了。对应的就是企业增加了管理成本,高素质员工带来的支付更高的薪酬。

最后,年轻人如何了解并学习架构呢?

对新手来说,看书估计是很难的,你没有到那些问题,看到一些文字估计停留在浅尝辄止!

学委觉得最好的方式就是,观察,模仿,找到团队里最厉害的人(可以是架构师,可以是最牛的那个技术)。

多跟他交流,思考为什么,他也不一定都对(除了技术,还有工期,团队能力,预算等外界因素)。这个思考的过程,再去看资料,才是更加实战的学习架构经验之道!

好了,旨在引发思考。这次水痘经历,让我们看到这个一连串的事情和一系列处理。灵机一动,学委用来类比了系统和微服务的监控,运维,架构设计,也没有全面涵盖!

另外更加感兴趣的朋友,可自行去看《系统架构:复杂系统的产品设计与开发》,超级经典的一本,更多还是实战。

对了,学委还有这个可以关注长期阅读 =>雷学委趣味编程故事汇编
或者=> 雷学委NodeJS系列

持续学习持续开发,我是雷学委!
编程很有趣,关键是把技术搞透彻讲明白。
创作不易,请多多支持,点赞收藏支持学委吧!

5分钟通过水痘事件来认识系统架构相关推荐

  1. Cloudify — 系统架构

    目录 文章目录 目录 Cloudify 的系统架构 Cloudify Manager 的软件堆栈 Cloudify 组件之间的调用链 Cloudfiy Agent 的调用流程 Cloudify 的业务 ...

  2. PMS业务、特性和系统架构

    我完成的工作概要 背景:以前PMS只管理接入和核心网的性能采集,U2000网管要求有统一的跨域性能管理系统,因此进行重构和融合.同时,管理容量的提升和竞争分析也要求有更大的管理容量. 任务: 1.对原 ...

  3. 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡...

    10分钟搭建服务器集群--Windows7系统中nginx与IIS服务器搭建集群实现负载均衡 原文:10分钟搭建服务器集群--Windows7系统中nginx与IIS服务器搭建集群实现负载均衡 分布式 ...

  4. 15 分钟用 ML 破解一个验证码系统

    (点击上方公众号,可快速关注) 编译:伯乐在线 - 精算狗,英文:ageitgey http://python.jobbole.com/89004/ 人人都恨验证码--那些恼人的图片,显示着你在登陆某 ...

  5. C#捕获windows关机事件,在系统关机前做一些自己想做的事

    C#捕获windows关机事件,在系统关机前做一些自己想做的事: 有些时候我们可能想在Windows关机时记录或处理一些事情,这里提供几种方法. 方法一: /// <summary>/// ...

  6. python如何画虚线_Python威力巨大,五分钟如何绘制出漂亮的系统架构图?

    Python威力巨大,而Diagrams 是一个基于Python绘制云系统架构的模块,它能够通过非常简单的描述就能可视化架构,并支持以下6个云产品的图标: 基于Diagrams提供的节点,你只需要指定 ...

  7. 2011系统架构师大会分享-自动化运维中的关系管理

    问过一些技术方向的朋友,在他们眼中运维是做怎么样的事情?其中大部份人回答说:搬机器.装系统.收报警.写各种各样维护清理的shell脚本等等.运维真的只是做这些事情? 不同的公司.不同规模的集群,运维所 ...

  8. 高并发 高负载 网站系统架构

    高并发 高负载 网站系统架构 注:我看到这篇文章写的太好了,可以没法转到CSDN上我就COPY了,看到下面激烈的评论,我也一并COPY了.不过还是要谢谢哪位作者了.这样的文章很少. 转自:http:/ ...

  9. 高并发高负载网站系统架构

    我在CERNET做过拨号接入平台的搭建,而后在Yahoo&3721从事过搜索引擎前端开发,又在MOP处理过大型社区猫扑大杂烩的架构升级等工作,同时自己接触和开发过不少大中型网站的模块,因此在大 ...

  10. 大型高并发高负载网站的系统架构

    转载请保留出处:俊麟 Michael's blog (http://www.toplee.com/blog/?p=71) Trackback Url : http://www.toplee.com/b ...

最新文章

  1. Go语言资源自动回收技术
  2. Applications Manager——多个行业的游戏规则改变者
  3. java数据库驱动_Java数据库驱动链接大全
  4. struts.xml配置文件结构
  5. gRPC学习记录(一)--概念性知识
  6. 网络流24题之餐巾计划问题
  7. 域乎曹胜虎:传统互联网“生病”了
  8. 他高考数学仅得15分,清华校长复查后激动拍板:这名学生,我要了
  9. 安装inotify-tools监控工具
  10. code 128 字体扫描不可识别
  11. Java 设计模式 本文代码拉取链接 https://gitlab.com/zhangpengweiLJ/designpettern.git
  12. 做测试为什么要掌握mysql_软件测试工作要掌握的知识
  13. 累计三年,断断续续的管理经验
  14. Python爬虫:中国结算,关于新开股票账户数等参数数据的爬取
  15. 2.2   字 母 表 和 符 号 串 的 基 本 概 念
  16. linux命令行下的tab键作用
  17. 2020-01-15 Oracle JDK Migration Guide
  18. php 截取视频画面,什么软件可截取视频画面,电脑上方便的截取视频,截取视频该怎么操作...
  19. LoadRunner性能测试教程
  20. android微信顶端导航栏,navigation-bar

热门文章

  1. 六、Linux常用命令之压缩打包篇(gzip、gunzip、tar、zip、bzip2)
  2. H.265和VP9视频编码要被干掉?解读全新AV1编码标准
  3. DevExpress的双击获取单元格数据
  4. 战争游戏红龙mod简介
  5. 猜词游戏之JavaScript实现
  6. hive打patch流程说明
  7. 万字长文 | 关于Filecoin期货与矿机,你想知道的一切都在这
  8. 计算机组装中如何看硬件型号,如何查看主板型号?(三种方法!)
  9. PHP最好的培训学校-兄弟连IT教育
  10. 云服务器带宽是什么 云服务器带宽怎么选