面试问题之如何解释微服务

全国白癜风爱心大使 https://m.39.net/baidianfeng/a_6776682.html

这次的面试还是感觉非常愉快,没有那么憋屈,问的问题也非常有意思。

问题

假设现在有一个人完全不懂微服务,你能和对方解释下什么是微服务吗?

面试回答

这个问题如果要完全回答好,感觉不是那么容易。

什么是微服务

很多人都知道现代的开发流程多是前后端分离,后端采用部署服务的方式来提供服务。

这种服务是可以根据业务来进行区分,也可以是根据架构来进行区分。

微服务指的是一种应用架构,其中的一系列独立服务通过轻量级API来进行通信。

上面是对微服务的比较书面化的解释,我觉得不太生动。

我们可以从微服务的进程来进行一些说明

传统的服务器模式

如你对计算机网站比较熟悉的话,我们知道我们可以部署一个Apache的服务器,然后部署一个MySQL的数据库。

加上你有一点PHP的编程基础,你的个人博客网站就开张了。

在这个时候,你的所有服务都在你的PHP代码中,包括前端,后端数据库通信,数据返回处理,查询,对象化等等,全部都在一套代码中。

很好,你的程序运行也非常不错。

可能是因为你的内容太受欢迎了,本来每天只有10个人访问的你网站,慢慢的每天你的网站有成千上万的人访问了。

这个时候你的Apache服务器已经没有办法承受这么大的访问量了,每天宕机好几次,需要重启。

数据库也经常性的进行锁表等情况。

因为访问的人多了,一些用户对网站的界面提出了很多的意见。

同时,你还开始推送手机的APP了。

这么多的问题都慢慢的出现了,我们应该怎么办呢?

前后端分离

这个时候,我们可能首先想到是前后端分离。

让前端只处理界面和数据返回展示,前端可以通过调用后端的API来获得前端需要的数据;同时,手机APP也可以调用后端的API来获得程序。

这个时候,后端就被独立成为了一个服务,前端也是一个服务。

前端会使用前端的框架,后端会使用后端的框架分别来对数据进行处理。

API返回问题

所有的数据请求假设我们都用在一个API上的话。

举例来说,用户邮件查重,在用户对我们网站进行注册之前,我们需要对用户的邮件地址进行查询,如果你只有几万个用户,别那么费劲了,数据库查下就好了。

如果你有上千万的用户,每次用户的注册都要从上千万的数据库进行查找,同时你的这个API还要返回用户的信息,密码,校验,还需要提供内容查询服务等功能。

每次用户注册登录都这样就会累死了,那我们能不能这样,把用户的相关API请求单独做成一个服务,通过这个服务部署到服务器上,并且使用不同的数据结构来提高用户数据查询效率。

业务拆分

通过上面的解释,我们可以对系统中的业务进行一些拆分。

把本来是一个大系统应该做的东西,我们分成很多小的系统来做,每一个小的服务只完成特定的功能,比如说一个服务只提供用户处理,一个服务只提供查询,一个服务只提供消息。

这样我们就把一个很大的系统逐步拆分成了各种服务。

这种系统设计就是我们常说的微服务了。

结论

通过上面的解释,应该对一个完全不了解微服务的人有一个基本上的概念了。

当然,整个过程是比较复杂的,通常会涉及到各种技术栈,比如说大数据处理,数据缓存,集群部署等等。

但是这整个的思路和架构,就是微服务需要实现的。

另外一个好处就是当某一个服务出现故障的时候,我们可以很快的进行切换,而不会影响整个系统的运行。

如果你不懂计算机的话,通过上面的解释能够理解什么是微服务了吗?

欢迎大家在后面留言。




转载请注明:http://www.aierlanlan.com/tzrz/7620.html