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

news2025/6/7 21:12:43

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

问题

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

面试回答

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

什么是微服务

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

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

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

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

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

传统的服务器模式

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

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

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

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

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

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

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

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

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

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

前后端分离

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

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

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

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

API 返回问题

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

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

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

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

业务拆分

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

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

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

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

结论

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

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

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

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

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

欢迎大家在后面留言。

面试问题之如何解释微服务 - 求职路上 - iSharkFly

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1027202.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云原生Kubernetes:K8S存储卷

目录 一、理论 1.存储卷 2.emptyDir 存储卷 3.hostPath卷 4.NFS共享存储 二、实验 1.emptyDir 存储卷 2.hostPath卷 3.NFS共享存储 三、问题 1.生成pod一直pending 四、总结 一、理论 1.存储卷 (1)概念 容器磁盘上的文件的生命周期是短暂的…

ORM框架的发展历史

文章目录 JDBCJDBC操作的特点JDBC优化1.0JDBC优化2.0JDBC优化3.0 Apache DBUtils初始配置基本操作 SpringJDBC初始配置CRUD操作 HibernateORM介绍Hibernate的使用创建项目配置文件CRUD 操作其他方式 Hibernate总结 MyBatis JDBC JDBC操作的特点 最初的时候是直接通过jdbc来直…

Unity中Shader实现模板测试Stencil

文章目录 前言一、UI中的遮罩1、Mask ——> 模板测试2、RectMask2D ——> UNITY_UI_CLIP_RECT 二、模板缓冲区Stencil一般是和Pass平行的部分,Pass部分写的是颜色缓冲区Stencil:Comp(比较操作)Pass(模版缓冲区的更新) 三、实际使用1、在…

计算物理专题----蒙特卡洛积分实战

Part one 蒙特卡洛积分计算案例 import numpy as np import matplotlib.pyplot as plt import pandas as pd from scipy.stats import norm, kstestnp.random.seed(0) def integrate(a,b,n100):x np.random.uniform(a,b,n)total sum(np.exp(x))return (b - a) * total / nNu…

XUI - 一个简洁而优雅的Android原生UI框架

官网 GitHub - xuexiangjys/XUI: 💍A simple and elegant Android native UI framework, free your hands! (一个简洁而优雅的Android原生UI框架,解放你的双手!) XUI | 💍A simple and elegant Android native UI framework, fre…

SAP 打note步骤

SAP 打note步骤 先确定需要实施的note 1.登录sap支持门户网站,查找note文件。https://support.sap.com/en/index.html 2.下载note文件到本地 3.事务代码SNOTE上传note文件 4.实施note,选中上传note,执行 5.往后一直确认 6.显示已实施成功 7.查看系…

计算机竞赛 深度学习 机器视觉 人脸识别系统 - opencv python

文章目录 0 前言1 机器学习-人脸识别过程人脸检测人脸对其人脸特征向量化人脸识别 2 深度学习-人脸识别过程人脸检测人脸识别Metric Larning 3 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习 机器视觉 人脸识别系统 该项目…

【数据结构】图的遍历:广度优先(BFS),深度优先(DFS)

目录 1、广度优先(BFS) 算法思想 广度优先生成树 知识树 代码实现 2、深度优先(DFS) 算法思想 深度优先生成树 知识树 代码实现 1、广度优先(BFS) 算法思想 图的广度优先遍历&#xff0…

【JDK 8-函数式编程】4.3 Consumer

一、Consumer 接口 二、使用 Stage 1: 创建方法,实现 Consumer 接口 Stage 2: 调用方法 Stage 3: 执行结果 三、List 的 foreach 执行结果 一、Consumer 接口 消费型接口 : 将T作为输入,无返回值 调用方法 : void accept(T t); 用途 : 因为没有出…

代码随想录算法训练营第23期day1|704. 二分查找、27. 移除元素

目录 一、(leetcode 704)二分查找 1)左闭右开 2)左闭右闭 二、(leetcode 27)移除元素 1)暴力解法 2)双指针法 快慢指针法 双向指针 数组是存放在连续内存空间上的相同类型数…

HTML5编写旅游网页

网页样例&#xff1a;&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title…

【Java 基础篇】Java线程同步:Lock接口详解

在多线程编程中&#xff0c;线程同步是一个重要的话题。为了确保多个线程可以正确地协同工作&#xff0c;Java提供了多种线程同步机制。其中&#xff0c;Lock接口是一种强大而灵活的线程同步机制&#xff0c;它提供了比传统的synchronized关键字更多的控制和功能。本文将详细介…

mac安装chromedriver驱动详细步骤

1.查看浏览器版本 2.下载驱动 3.安装驱动 4.MacOS无法打开“chromedriver”&#xff0c;因为无法验证开发者 1.查看浏览器版本 在这里插入图片描述 2.下载驱动 下载驱动地址&#xff1a;链接: http://chromedriver.storage.googleapis.com/index.html. 下载和浏览器版本一致的…

图解直接映射(Direct mapped)、全相联(Fully-associative)和组相联(Set-associative)cache缓存基本原理

图解直接映射&#xff08;Direct mapped&#xff09;、全相联&#xff08;Fully-associative&#xff09;和组相联&#xff08;Set-associative&#xff09;cache 一&#xff0c;直接映射缓存&#xff08;Direct mapped caches&#xff09;1.1 直接映射示例1.2 直接映射原理1.3…

人类认知的贝叶斯与机器的贝叶斯

贝叶斯原理是一种基于概率的分析方法&#xff0c;可以用来估计一个事件发生的概率。在人类认知和机器学习领域中&#xff0c;都有对应的贝叶斯原理。 人类认知的贝叶斯原理&#xff1a; 在人类认知研究中&#xff0c;贝叶斯原理被认为是一种重要的思维方式。人类的认知过程通常…

算法、数据结构、计算机系统、数据库MYSQL、概率论、数学实验MATLAB、数学建模、马原、英语、杂项、QT项目

算法 冒号表达式 &#xff08;condition&#xff09;&#xff1f;x&#xff1a;y 可以三个条件 以此类推 &#xff08;condition1&#xff09;&#xff1f;x&#xff1a;&#xff08;condition2&#xff09;&#xff1f;y&#xff1a;z 判断三角形最简单的办法 bool canFormTr…

使用 K 均值聚类进行颜色分割

介绍 颜色分割是计算机视觉中使用的一种技术,用于根据颜色识别和区分图像中的不同对象或区域。聚类算法可以自动将相似的颜色分组在一起,而不需要为每种颜色指定阈值。当处理具有大范围颜色的图像时,或者当事先不知道确切的阈值时,这非常有用。 在本教程中,我们将探讨如何…

修炼离线:(三)sqoop插入hbase 报错权限问题

一&#xff1a;报错现象。 二&#xff1a;解决方式。 方法一&#xff1a;修改文件所有者。 切换hadoop用户&#xff1a;export HADOOP_USER_NAMEhdfs hadoop fs -chown -R root:root /方法二&#xff1a;修改权限 切换hadoop用户&#xff1a;export HADOOP_USER_NAMEhdfs ha…

现今主流物联网无线通信技术分类详解

无线技术正在迅速发展&#xff0c;并在人们的生活中发挥越来越大的作用。 而随着无线应用的增长&#xff0c;各种技术和设备也会越来越多&#xff0c;也越来越依赖于无线通信技术。 本文盘点下物联网中无线通信主要的技术。 一、无线通信技术的几大主流分类 1.美国通信委员会…

Fork() 函数:“父” 与 “子” 进程的交互(进程的创建)

阅读导航 前言一、fork函数初识1. 基本概念2. fork函数返回值 二、fork函数的写时拷贝三、总结温馨提示 前言 前面我们讲了C语言的基础知识&#xff0c;也了解了一些数据结构&#xff0c;并且讲了有关C的一些知识&#xff0c;也学习了一些Linux的基本操作&#xff0c;也了解并…