背景
面试总会遇到一些关系高并发、分布式的问题,可是自己工作中不接触,自学又不深入,这可怎么办?
分布式架构的知识太庞大了,小匠也是管中窥豹,结合自己的经验阐述一下自己的想法。
结合我自己的一些面试经历,从分布式系统的构建体系说一下可能遇到的问题,涉及的技术和解决方案,这便是分布式系统的重点,也是面试的重点。
现象
我们从业务场景入手,用户越来越多,单个系统的内存、磁盘、CPU无法满足业务的需求的时候,需要把单机变成多机来解决问题,那么就需要引入分布式横向的扩充机器以增加吞吐量。针对不同的业务的需要的硬件、带宽、重要性不同,我们又一次做细粒度的拆分,把每一个模块根据业务的上下文进行拆分,这样就有了微服务。
那么同时也引发了一些问题,一个请求需要协同多个服务来解决,势必会出现数据不一致的问题?那么我们就需要在 CAP 中间做取舍,同时需要在幂等、分布式事务、分布式锁、重试、补偿等方便着重考虑每个服务之间的依赖和数据传输。最后针对不同的业务可以做到熔断、降级等处理。
擦,对于一个工作本就没有机会接触这么多名词的人,如何应对这么“卷”的互联网面试?
何如?
首先推荐两本书,它们并不能解决你遇到的面试问题,而是提供一个通用的思路和解决方案。
《大型网站系统与JAVA中间件实践》
《大型网站技术架构:核心原理与案例分析》
还有一个小册子,这个我快速看了一下还不错,可以快速的了解一些关键概念。
《分布式原理介绍》
那么有人继续追问,截止到现在你其实说了一堆废话,我还是一头雾水,怎么解决