很难想象,在分布式架构以及微服务架构普及了近10年时间的现在,还有人不清楚微服务架构和分布式架构。
这不,一个工作了3年的粉丝,就遇到了这个方面的问题,希望我能出一篇文章。
今天给大家分享的面试题是: “请你说一下你对分布式和微服务的理解”。
关于这个问题的回答以及以往的面试题,我整理成了10多万字的文档,大家可以扫描文章尾端二维码领取。
下面看看高手对这个问题的回答。
需要高手面试文档面试文档的小伙伴可以扫描文章底部二维码
首先我先解释一下分布式系统。
简单来说,分布式是一组通过网络进行通信,并且为了完成共同的计算任务的计算机节点组成的系统。
分布式系统的设计理念,其实是来自于小型机或者大型机的计算能力的瓶颈和成本的增加。
在集中式系统里面,要想提升程序的运行性能,只能不断的升级CPU以及增加内存,但是硬件的提升本身也是有瓶颈的,所以当企业对于计算要求越来越高的时候,集中式架构已经无法满足需求了。
在这样的背景下, 就产生了分布式计算,也就是把一个计算任务分配给多个计算机节点去运行。
但是对于用户或者客户端来说,感知不到背后的逻辑,就像访问单个计算机一样,他看到的仍然是一个整体。
在分布式系统中,软件架构也需要作出相应的调整,需要把原本的单体应用进行拆分,部署到多个计算机节点上,然后各个服务之间使用远程通信协议实现计算结果的数据交互。
针对这种分布式部署的应用架构,我们称为SOA(面向服务)的架构。
其次,我再解释一下微服务架构。
其实微服务架构本身就是一种分布式架构,它强调的是对部署在各个计算机上的应用服务的粒度。
它的核心思想是,针对拆分的服务节点做更进一步的解耦。
也就是说,针对SOA服务化架构下的单个业务服务,以更加细粒度的方式进一步拆分。
每个拆分出来的微服务由独立的小团队负责,最好在3人左右。
拆分的好处是使得程序的扩展性更强,开发迭代效率更高。
对于一些大型的互联网项目来说,微服务能够在不影响用户使用的情况下非常方便的实现产品功能的创新和上线。
相信还有很多小伙伴没用过微服务,也没有接触过Spring Cloud。
现在的微服务架构,就像10多年之前的SSH架构,它是很多企业的基础应用架构,
技术的发展是日新月异的,不要让自己停留在一个舒适区,否则以后找不到合适的工作会焦虑。
另外,我将所有Java面试系列制作成了完整的面试文档。它的便捷之处在于,可以通过检索的方式,找到你想要的面试题,目前已经更新180期,总计超过15W字!