先开始我们这周的第一个话题。

我在今年2月份的时候看到一篇文章,以至于我对它里面描述的高可用的观点,印象真的很深刻,才导致我又翻开收藏夹去找寻它。当然,也有可能是马上又到双十一了,我们又开始备战了,总之,这周又读了两遍。

为什么有高可用的问题。

首先,本文作者从较大的方面或者说是宏观理论层面做了阐述,我个人认为多少都有点哲学的味道了。

所有的事物都是变化的;

所有的变化都不是100%可靠的;

结论:所有的事物都不是100%可靠的;

因为系统是所有事物的一份子,所以系统是不可靠的,不可靠体现在什么地方呢,就是可用性,结果就是,系统一定会有可用性的问题。

接着,本文作者又分别从内因和外因的角度继续阐述为什么有高可用的问题。

内因上。

人都会犯错;

软件都有可能有BUG;

硬件都有可能会坏;

其实,我们每年做大促备战,也都是无形中遵循这样的基础性原则,做人员的相关培训,辅导,大促负责人以老带新;去寻找系统的薄弱点,找出潜在的风险,并做好各种应对方案;运维组的同学会给设备做巡检,也要做好坏设备的预案。

你看,刚好是人、软件、硬件。

外因上,主要是谈影响面,分别从公司、社会、客户三者的角度去做了阐述。

系统不可用,客户的服务就受到影响了,产生投诉;

系统不可用,一个500强的上市公司的股价,会牵连波动,比如你想想Twitter、Facebook这样的企业;

系统不可用,社会秩序可能会受到影响了,比如12306网站,大家订票出现了问题,人们的出行就会受到影响;

附一张原文中的图

从概率学角度分析,凡是可能会出错的,只要变化次数足够多,最终出错的概率会无限趋向于1。

这有点类似西方的墨菲定律的味道,“凡事可能出错,那就一定会出错”。

关于这篇文章中的更多观点知识大家可以点击文章详细查看。(文章的链接)

---------

再来看第二个话题。

我们拿一个案例来找出其中会有高可用问题的地方。

在电商业务中,会有一个我们很熟悉的场景,抢购或者叫秒杀。

下图是这种场景的一个流程图,这个图选自https://time.geekbang.org/column/article/129823刘超老师的《Java性能调优实战》专栏中的一篇文章。

我现在问你,从这个流程图中你能发现有几个地方会存在高可用的问题吗。

1、详情页

商品详情页的访问量会非常大,几乎所有的用户在抢购时间到来前都会频繁的刷新这个页面,如果这个页面和它对应的服务不做高可用处理,就很容易被刷出404或者502。

对应第一个话题,这是软件的问题。

我们一般的做法是将页面彻底静态化,并将其推送到CDN节点。

2、库存

查询库存,肯定会涉及到数据表,无论是放到缓存中的数据,还是数据库中的数据。由于这些参与抢购的商品,都是单品行为。所以,在我们的数据库里面或者缓存里面就会有热点问题出现。

对应第一个话题,还是软件的问题。没有人的问题吗,人的问题是隐性的,比如你不做热点隔离,不做缓存隔离,知识不到位。

我们一般的做法,就是做隔离,将热数据和常用数据做好隔离。

3、还是库存

查询库存、锁库存、减库存,这是一个流程性的动作,这期间处理不当很容易造成数据不一致的问题。

减库存的方式,一般有下单减库存,付款减库存两种方式。不过这两种方式都有各自的优缺点。下单减库存会造成恶意下单的发生,而付款减库存会到支付的时候有超卖的现象发生。综合这两种方式,其实还有一个实现方式就是预扣库存,然后给一个时间范围,如果在规定的时间内不支付,就取消。像12306我们订火车票就是这样。

这个说的问题表面上看是业务上的问题,实际上也是系统可用性的问题,比如,如果遭到恶意下单你怎么处理,在减库存上如果遇到大并发情况你怎么处理,那么,我们可能就会对系统增加黑名单,限制恶意刷单,给系统增加缓存,另外还有保障系统的事务一致性,提升系统的大并发。

抢购或者秒杀最核心的内容之一,也是在库存上,关于这块内容,可能需要单独一篇更详细的文章来阐述。这里暂时说几个关键的地方。

4、提交订单

这里还是一个隔离的问题,有两个请求一个是详情页的请求,一个是提交订单的请求,我们先前已经知道详情页的请求量非常大,这里如果两个请求相互影响,就会同时造成两个结果受损。

我们常用的做法刚才也提到,还是隔离,比如做域名的隔离,因为详情页疯狂的量有可能给带宽造成一定的压力。

订单量,如果很大,对数据库也需要做改造,比如分库分表,也是一种隔离的思维,来减轻对数据库的压力。

---------

第三个话题。

如果你常看技术书籍或者技术专栏文章,一定会对一本被频繁引用的书籍有印象。就是这本《UNIX 编程艺术》,比如,你随意在极客时间中搜索,便会有下面这些记录,而且我还没有截取完全。足见这本书的魅力。

今天,我也来引用书中的一段话,并浅浅地谈一谈。

《UNIX 编程艺术》:“工程和设计的每个分支都有自己的技术文化。在大多数工程领域中,就一个专业人员的素养组成来说,有些不成文的行业素养具有与标准手册及教科书同等重要的地位(并且随着专业人员经验的日积月累,这些经验常常会比书本更重要)。资深工程师们在工作中会积累大量的隐性知识,他们用类似禅宗'教外别传'的方式,通过言传身教传授给后辈。软件工程算是此规则的一个例外:技术变革如此之快,软件环境日新月异,软件技术文化暂如朝露。然而,例外之中也有例外。确有极少数软件技术被证明经久耐用,足以演进为强势的技术文化、有鲜明特色的艺术和世代相传的设计哲学。“

我理解这里面有几个点,我挨个说一下。

”就一个专业人员的素养组成来说,有些不成文的行业素养具有与标准手册及教科书同等重要的地位“,关于这里面提到的素养,我谈下程序员的素养,大家从网上搜下,大致有如下几类。

扎实的专业技能;

保持良好的编码习惯;

团队精神和协助能力

文档习惯;

需求理解能力;

模块化思维能力;

测试习惯;

学习和总结的能力

保持程序思维;

不断的学习的精神;

保持头脑灵活;

充足的睡眠和持之以恒的锻炼;

保持良好的心态;

时常规划自己的人生;

”确有极少数软件技术被证明经久耐用,足以演进为强势的技术文化“,这里提到的久经耐用的软件技术又有哪些呢。

SOLID;

KISS;

DRY;

LOD;

---------

第四个话题。

这周有一位刚毕业的同学前来问我关于在工作中读书和学习的问题,我也不记得,大概从什么时候开始,每周一般都会有那么几位,觉得我还可以帮助他们的朋友,或者一天有时候就会有3、4位朋友,前来交流。

也借着这篇文章,给大家说是道歉,白天的工作信息太多,我一般回复的问题时间都比较晚,或者有时候都忘记了,过了几天才能够想起来,再又回复对方。但我肯定,尽我所及的答复,或许能给到对方,哪怕一点帮助。

对于初入职场的同学,我总抱有更多可能帮助的态度,我将其这次内容贴在下面,希望对看到这篇文章的其他新同学,有一定用处。

我不是大佬哈

---------

最后,从冯唐的一本书里面,选一段文字,分享给你。

”愿意装逼不已,不愿意认真学习,不能掘井及泉,只是觉得自己了不起,一张嘴就是名词概念,再细问却是一脑子糨糊:热衷谈论国际时政,细问当今美国总统的名字都说不全;热衷谈论投资理财,细问连回报率为何物都说不清。暂时装逼有快感,一直装下去就会在最好的年龄错过真正可以牛逼的机会。多学习,多研究,对真正热爱之事,真正投入精力,向那些可以就防晒美白详细说出八种不同方法的女性好好学习。“


恭喜你,又完成一次思考。

一周技术思考(第33期)-为什么会有高可用的问题?相关推荐

  1. 一周技术思考(第36期)-缓存踩踏与惊群效应

    图自网络 "10年前的那一天Facebook发生了什么",本想用这个题目,但不符合本系列的气质,那,那天到底发生了什么呢. Facebook的事故介绍 2010年9月23日,Fac ...

  2. 【区块链技术工坊33期】罗梅琴:区块链账户模型

    1,活动基本信息 1)题目: [区块链技术工坊33期]区块链账户模型 2)议题: 有人说2019年,区块链领域将会获得突破性的进展,正式进入爆发元年.现在新年伊始,我们从区块链账户模型的发展来探讨区块 ...

  3. 一周技术思考(第22期)-编程的基本礼节

    大家好,这里记录,我每周读到的技术书籍.专栏.文章以及遇到的工作上的技术经历的思考,不见得都对,但开始思考总是好的. 编程礼节 这个词,我武断地下个结论,估计你很少听到. 在上周的技术思考那篇文章中, ...

  4. 百度技术沙龙第33期回顾:推荐引擎实战(含资料下载)

    在12月22日由@百度主办.@InfoQ负责策划组织和实施的第33期百度技术沙龙活动上,来自百度推荐与个性化部高级架构师陈天健和豆瓣网首席科学家王守崑分别分享了各自在推荐系统中的经验与实践,话题涉及& ...

  5. 《Cisco IOS XR技术精要》一2.7 高可用架

    本节书摘来自异步社区<Cisco IOS XR技术精要>一书中的第2章,第2.7节,作者 [美]Mobeen Tahir , Mark Ghattas , Dawit Birhanu , ...

  6. 一周技术思考(第17期)-废墟的召唤

    大家好,这里记录,我每周读到的技术书籍.专栏.文章以及遇到的工作上的技术经历的思考,不见得都对,但开始思考总是好的. 废墟的召唤 我诅咒废墟,我又寄情废墟.-余秋雨 当我看到这句话,很合意了我近段时间 ...

  7. 一周技术思考(第21期)-人们说脏话的频率是衡量代码质量的唯一标准

    大家好,这里记录,我每周读到的技术书籍.专栏.文章以及遇到的工作上的技术经历的思考,不见得都对,但开始思考总是好的. Bob大叔在<代码整洁之道>这本书中,曾说过,"人们说脏话的 ...

  8. 【华为云技术分享】云小课 | SAP HANA高可用之实战演练

    由于华为云"敏捷性高.扩展灵活.便捷运维.高可靠.低成本"等优势,越来越多的企业将SAP系统部署在华为云上.SAP系统是企业的核心系统,对于数据的可靠性的重要性是无可厚非的,因软件 ...

  9. 大型网站技术架构:核心原理与案例分析——高可用

    高可用的应用 应用层的显著特点是无状态性,所谓无状态的应用是指应用服务器不保存业务的上下文信息,而仅根据每次请求提交的数据进行相应的业务逻辑处理,多个服务实例之间完全对等,请求提交到任意服务器,处理结 ...

最新文章

  1. 计算路由汇总的方法(CIDR)
  2. 使用 Truffle Develop 和 console
  3. ios学习:Xcode工具
  4. java配u型你,泛型方法上的多个通配符使Java编译器(还有我!)很迷茫
  5. Twisted入门教程(6)
  6. 斯坦福大学深度学习公开课cs231n学习笔记(8)神经网络学习过程中的检查事项和参数调优
  7. linux监测服务日志脚本,LINUX下的一个性能监测脚本
  8. 离散数学计算机专业论文,【计算机专业《离散数学》教学研究】计算机专业离散数学...
  9. 喜讯 | 大势智慧获得全球软件领域最高权威CMMI5认证
  10. HEVC与AVC的区别与联系(十二),Android面试题集锦在这里
  11. docker服务及镜像开机自动启动
  12. KMP(看毛片)NEXT数组模板
  13. java中将两个图片进行叠加
  14. OkHttp请求json数据
  15. 【国家局发布】医疗器械注册流程及相关法规大全
  16. 关于博客园官方博客技术改造升级的启发
  17. 搭建团队文档协作平台(OnlyOffice)Linux 系统部署
  18. 使用freemarker导出word并动态插入多张图片
  19. RocketDock的Mac主题
  20. 计算机博士复试英语自我介绍,2018年考博复试英语自我介绍范文汇总!

热门文章

  1. 遇到的问题要记录下来 javascript值班表
  2. 用UNetbootin 制作Linux 安装U盘
  3. 【Unity打包崩溃】安卓包遇到CrashReport-Native: Faile to open comm file(/system/build.prop)就闪退
  4. Spawning Processes and Exec‘ing Processes
  5. 遥感深度学习数据集汇总(更新中)
  6. 微信授权-获取微信授权后用户信息
  7. 支付宝小程序身份认证(拉取人脸识别 认证功能 +详细案例)
  8. Could not transfer artifact (https://repo.maven.apache.org/maven2): Received fatal alert: protocol_v
  9. 《人类简史》五、监狱高墙——想象构建的秩序
  10. 【Jetpack篇】LiveData取代EventBus,flutter安装