后端技术面试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讲
登录|注册

21丨分布式架构:如何应对高并发的用户请求

李智慧 2020-01-10
互联网应用以及云计算的普及,使得架构设计和软件技术的关注点从如何实现复杂的业务逻辑,转变为如何满足大量用户的高并发访问请求。
一个简单的计算处理过程,如果一旦面对大量的用户访问,整个技术挑战就会变得完全不同,软件开发方法、技术团队组织、软件的过程管理都会完全不同。
以新浪微博为例,新浪微博最开始只有两个工程师,一个前端,一个后端,两个人开发了一个星期就把新浪微博开发出来了。现在许多年过去了,新浪微博的技术团队有上千人,这些人要应对的技术挑战,一方面来自于更多更复杂的功能,一方面来自于随着用户量的增加而带来的高并发访问压力。
这种挑战和压力几乎对所有的大型互联网系统都是一样的,淘宝、百度、微信等,虽然功能各不相同,但都会面对同样的高并发用户的访问请求压力。要知道,同样的功能,供几个人使用和供几亿人使用,技术架构是完全不同的。
当同时访问系统的用户不断增加的时候,需要消耗的系统计算资源也不断增加,需要更多的 CPU 和内存去处理用户的计算请求,需要更多的网络带宽去传输用户的数据,需要更多的磁盘空间去存储用户的数据。当消耗的资源超过了服务器资源的极限的时候,服务器就会崩溃,整个系统无法正常使用。
那么如何解决高并发的用户请求带来的问题?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《后端技术面试38讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(6)

  • Citizen Z
    除了高并发,还有这些挑战:

    1. 数据规模:UGC 和行为数据
    2. 大流量:要考虑大型文件或流数据对带宽的压力
    3. 高峰场景:无计划或有计划的访问量爆发(营销活动、热点事件)、DDoS,要求系统可伸缩
    4. 安全性:暴露在公网,安全通信和隐私保护问题不可避免
    5. 高可用:宕机意味着用户流失,复杂网络环境问题等外部因素也要考虑在内
    6. 快速变化:产品创新以吸引和留存用户,这需要可扩展的系统设计和高效敏捷的团队协作机制

    作者回复: 👍

    2020-01-11
    7
  • 奔奔奔跑
    仿佛回到了当初看大型网站架构技术的时候了
    2020-01-12
    1
    2
  • Paul Shan
    扩容垂直伸缩和水平伸缩的关键不同在于垂直伸缩是在在服务器总数基本不变的情况下增加单机的性能,水平伸缩则在单机性能不增加的前提下,如何在众多服务器操作系统架构之上重新设计一种新的架构来处理并行,不同的服务器会因为各种的特点而各司其职。垂直伸缩极限较快达到。水平伸缩更为丰富,极限也较大。就像操作系统是把CPU,内存和各种IO作为调度单元而让系统发挥出最大性能。一个好的分布式系统是以各种服务器作为调度单元而让系统做到快速响应。
    2020-01-17
  • 京东PLUS会员
    谢谢
    2020-01-12
  • koofrank
    写的很好 期待下面架构的讲解
    2020-01-11
  • holybell
    说点自己的看法,互联网为了解决高并发而采用分布式系统,引入一个集群必然带来集群所需要处理的问题,比如启用数据库集群必然带来数据如何在为集群间分发,主库读写分离如何避免读库的同步延迟导致的数据不一致性;分布式系统之间的调用如何确保事务性;为了提高读性能引入的nosql如何避免缓存和数据库的一致性问题等等……
    2020-01-11
收起评论
6
返回
顶部