面试题之三
分布式和微服务的区别是什么?
难度指数:3星
考察频率:50%
开发年限:3年左右
二者是隶属于不同的概念。
一.概念
微服务是系统架构的设计方式,是将复杂的业务拆分成多个微型的服务,让这些服务可以单独部署和运行。服务与服务之间可以使用RPC、OpenFeign来调用(通信)。
分布式是一种系统的部署方式,主要是将一个服务拆分部署到多态机器,以此来降低单台服务器的负载压力。拆分的方式:水平拆分、垂直拆分,一般采用集群、主备份的方式来部署服务。
二.软件系统的演进
java WEB服务打成war包,放到tomcat 、jetty服务容器上运行。但是这样的项目只适合单人、小团队开发,不利于团队的协作。
垂直拆分,按照不同的系统,拆分成不同的团队,定义接口文档,前端 、后端。优势:前后端,可以同时进行工作,提高生产力,大大挺高了开发效率。MVC框架:Struts 、WebWork、SpringMVC等。
随着业务规模越来越大,业务复杂度越来越高,仅仅前后端分离已经不能满足业务需求了。整个开发团队,后端开发工程师的压力更大,缓解后端的访问压力,开发增设服务器、性能调优、分布式技术,服务拆分。
问题:服务之间的调用问题、协调问题、集群负载均衡问题。
RMI WebService ,JSONP 、Http Restful,RPC.
ZOOKeeper分布式协调中心
Nginx:解决负载均衡问题。
上述都是分布式技术栈。
微服务是分布式之后一种架构设计思想。SpringBoot出现之后,正式流程微服务这样的概念。SpringBoot内置了Tomcat,真正做到了拆箱即用、部署一个服务,不用再手动添加非常多的依赖环境。
点评:
强调的是,你是否真正的了解二者的技术内涵,时间先后。
思考:
微服务优势和劣势,以及你在工作中是否碰到了一些技术问题。