20、领域驱动设计:35岁的程序员应该写什么样的代码?

我在阿里巴巴工作的头一年,坐在我对面的同事负责开发一个公司统一的运维系统。他对这个系统经过谨慎的调研和认真的思考,花费了半年多的时间开发,终于开发完了。然后邀请各个部门的相关同事做发布评审,如果大家没什么意见就发布上线,全公司范围统一推广使用。 结果...

后端技术面试 38 讲

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

互联网应用以及云计算的普及,使得架构设计和软件技术的关注点从如何实现复杂的业务逻辑,转变为如何满足大量用户的高并发访问请求。 一个简单的计算处理过程,如果一旦面对大量的用户访问,整个技术挑战就会变得完全不同,软件开发方法、技术团队组织、软件的过程管理...

后端技术面试 38 讲

22、缓存架构:如何减少不必要的计算?

上一篇我们讲到,互联网应用的主要挑战就是在高并发情况下,大量的用户请求到达应用系统服务器,造成了巨大的计算压力。互联网应用的核心解决思路就是采用分布式架构,提供更多的服务器,从而提供更多的计算资源,以应对高并发带来的计算压力及资源消耗。 那么有没有办...

后端技术面试 38 讲

23、异步架构:如何避免互相依赖的系统间耦合?

上一篇文章中我们讨论过,使用缓存架构可以减少不必要的计算,快速响应用户请求。但是缓存只能改善系统的读操作性能,也就是在读取数据的时候,可以不从数据源中读取,而是通过缓存读取,以加速数据读取速度。 但是对于写操作,缓存是无能为力的。虽然缓存的写入速度也...

后端技术面试 38 讲

24、负载均衡架构:如何用10行代码实现一个负载均衡服务?

负载均衡是互联网系统架构中必不可少的一个技术。通过负载均衡,可以将高并发的用户请求分发到多台应用服务器组成的一个服务器集群上,利用更多的服务器资源处理高并发下的计算压力。 那么负载均衡是如何实现的,如何将不同的请求分发到不同的服务器上呢? 早期,实现...

后端技术面试 38 讲

25、数据存储架构:如何改善系统的数据存储能力?

在整个互联网系统架构中,承受着最大处理压力,最难以被伸缩的,就是数据存储部分。原因主要有两方面。一方面,数据存储需要使用硬盘,而硬盘的处理速度要比其他几种计算资源,比如CPU、内存、网卡都要慢一些;另一方面,数据是公司最重要的资产,公司需要保证数据的...

后端技术面试 38 讲

26、搜索引擎架构:如何瞬间完成海量数据检索?

我们在使用搜索引擎的时候,搜索结果页面会展示搜索到的结果数目以及花费时间。比如用Google搜索中文“后端技术”这个词,会显示找到约6.7亿条结果,用时0.45秒。 我们知道Google收录了全世界几乎所有的公开网页,这是一个非常庞大的数目,那么G...

后端技术面试 38 讲

27、微服务架构:微服务究竟是灵丹还是毒药?

微服务架构是从单体架构演化而来的。所谓单体架构,指的就是整个互联网系统所有代码打包在一个程序中,部署在一个集群上,一个单体应用构成整个系统。 而微服务架构则是将这个大的应用里面的一些模块拆分出来,这些模块独立部署在一些相对较小的服务器集群上,而应用通...

后端技术面试 38 讲

28、高性能架构:除了代码,你还可以在哪些地方优化性能?

系统性能是互联网应用最核心的非功能性架构目标,系统因为高并发访问引起的首要问题就是性能问题:高并发访问的情况下,系统因为资源不足,处理每个请求的时间都会变慢,看起来就是性能变差。 因此,性能优化是互联网架构师的核心职责之一,通常我们想到性能优化,首先...

后端技术面试 38 讲

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

十几年前,我参加阿里巴巴面试的时候,觉得阿里巴巴这样的网站Web应用开发简直小菜,因为我之前是做类似Tomcat这样的Web容器开发的,所以面试的时候信心满满。 确实,面试官前面的问题都是关于数据结构、操作系统、设计模式的,也就是我们这个专栏模块一和...

后端技术面试 38 讲