后端技术面试38讲
李智慧
同程艺龙交通首席架构师,前Intel&阿里架构师,《大型网站技术架构》作者
立即订阅
4026 人已学习
课程目录
已更新 37 讲 / 共 38 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 掌握软件开发技术的第一性原理
免费
软件的基础原理 (8讲)
01丨程序运行原理:程序是如何运行又是如何崩溃的?
02丨数据结构原理:Hash表的时间复杂度为什么是O(1)?
03丨Java虚拟机原理:JVM为什么被称为机器(machine)?
04丨网络编程原理:一个字符的互联网之旅
05丨文件系统原理:如何用1分钟遍历一个100TB的文件?
06丨数据库原理:为什么PrepareStatement性能更好更安全?
07丨编程语言原理:面向对象编程是编程的终极形态吗?
答疑丨Java Web程序的运行时环境到底是怎样的?
软件的设计原理 (14讲)
08丨软件设计的方法论:软件为什么要建模?
09丨软件设计实践:如何使用UML完成一个设计文档?
10 | 软件设计的目的:糟糕的程序员比优秀的程序员差在哪里?
11丨软件设计的开闭原则:如何不修改代码却能实现需求变更?
12 | 软件设计的依赖倒置原则:如何不依赖代码却可以复用它的功能?
13丨软件设计的里氏替换原则:正方形可以继承长方形吗?
14 | 软件设计的单一职责原则:为什么说一个类文件打开最好不要超过一屏?
15丨软件设计的接口隔离原则:如何对类的调用者隐藏类的公有方法?
16 | 设计模式基础:不会灵活应用设计模式,你就没有掌握面向对象编程
17 | 设计模式应用:编程框架中的设计模式
18 | 反应式编程框架设计:如何使程序调用不阻塞等待,立即响应?
19 | 组件设计原则:组件的边界在哪里?
20 | 领域驱动设计:35岁的程序员应该写什么样的代码?
答疑丨对于设计模式而言,场景到底有多重要?
架构的核心原理 (13讲)
21丨分布式架构:如何应对高并发的用户请求
22 | 缓存架构:如何减少不必要的计算?
23 | 异步架构:如何避免互相依赖的系统间耦合?
24 | 负载均衡架构:如何用10行代码实现一个负载均衡服务?
25 | 数据存储架构:如何改善系统的数据存储能力?
26 | 搜索引擎架构:如何瞬间完成海量数据检索?
27 | 微服务架构:微服务究竟是灵丹还是毒药?
28 | 高性能架构:除了代码,你还可以在哪些地方优化性能?
29 | 高可用架构:我们为什么感觉不到淘宝应用升级时的停机?
30 | 安全性架构:为什么说用户密码泄漏是程序员的锅?
31 | 大数据架构:大数据技术架构的思想和原理是什么?
32 | AI与物联网架构:从智能引擎到物联网平台
33 | 区块链技术架构:区块链到底能做什么?
不定期加餐 (1讲)
加餐 | 软件设计文档示例模板
后端技术面试38讲
登录|注册

29 | 高可用架构:我们为什么感觉不到淘宝应用升级时的停机?

李智慧 2020-01-29
十几年前,我参加阿里巴巴面试的时候,觉得阿里巴巴这样的网站 Web 应用开发简直小菜,因为我之前是做类似 Tomcat 这样的 Web 容器开发的,所以面试的时候信心满满。
确实,面试官前面的问题都是关于数据结构、操作系统、设计模式的,也就是我们这个专栏模块一和模块二的内容。我感觉自己回答得还不错,所以更加信心满满。这时候,面试官忽然提了一个问题:
我们的 Web 程序每个星期都会发布一个新版本,但是程序要求 7*24 小时可用,也就是说,启动新版本程序替换老程序,进行程序升级的时候,程序还在对外提供服务,用户没有感觉到停机,我们是怎么做到的呢?
应用程序升级必须要用新版本的程序包替代老版本的程序包,并重新启动程序,这段时间程序是不能对外提供服务的,用户请求一定会失败。但是阿里巴巴让这段时间的用户请求依然是成功的。打个比方,就是要在飞机飞行过程中更换发动机,还不能让乘客感觉到。这个问题当时完全不在我的知识范围之内,但是我知道这个需求场景是真实存在的,而且确实应该是可以做到的,可是我完全不知道是怎么做到的。
面试官看我瞠目结舌,笑着问我,想不想知道答案。我立刻回答说想知道,结果面试官跟我说,加入我们团队你就知道了。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《后端技术面试38讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(7)

  • 草原上的奔跑
    预发布服务器不接受用户请求,只接受开发工程师访问请求,则对于用户来说,即使预发布有问题,因为访问不到,所以也感觉不到。
     
    因为不能保证测试环境和生产环境配置、参数全部一样,所以一些在生产环境才有的问题,在测试无法发现,通过预发布环境来过渡,保证发布的安全。

    作者回复: √

    2020-01-29
    1
  • 黄海峰
    这个预发布环境的作用确实困扰,之前公司也有个预发布环境,感觉多余,想想可能就是用的生产环境的配置和参数,这样可以确定是否有配置错误
    2020-01-29
    1
  • Jawohl
    开发环境-测试环境-UAT环境-预生产环境-生产环境。这是一个链路。
    2020-02-02
  • mayunyong
    老师每片文章都配图很喜欢~
    2020-02-02
  • 旅途
    老师 关于预发布有一些问题 比如发布一个包含页面的模块 那么是不是只有访问被预发布的服务器才会有新的页面,访问别的服务器都没有?

    作者回复: 是的,这就是预发布的意义

    2020-01-31
  • 俊杰
    负载均衡服务器的配置,会把预发布的服务器剔除在外,所以正常用户访问的时候并不会路由到预发布验证的服务器上。工程师验证是需要通过修改本机hosts文件实现的。

    平常遇到的需要在线上预发布环境才能验证的主要是支付或第三方对接相关的东西。
    2020-01-30
  • 阿恺
    思考题:是否将一部分流量copy过来,用真实的数据流替代实验室模拟数据来进行测试,但其实不是生产环境,只是用了生产数据。
    2020-01-29
收起评论
7
返回
顶部