原文地址:微服务面试相关内容了解下~(一)
1、微服务是什么?
微服务,又是微服务架构,是一种架构风格,将应用程序构建成以业务领域为模型的小型自治服务集合。
以蜜蜂通过对齐六角形蜡细胞构建蜂窝为例,它们最初使用各种材料的小部分开始,并继续从中构建一个大型蜂箱,这些细胞形成图案,产生坚固的结构,将蜂窝的特定部分固定在一起,此处每个蜡细胞互相独立,但互相之间也有关联,这也意味着单个细胞受到损伤之后不会影响其它部位,因此,蜜蜂可在不影响完整蜂箱情况下,重建这些受到损伤的蜡细胞。
参考下图:
每个六边形表示单独的服务组件,与蜜蜂的工作类似,各敏捷团队使用各自框架和技术堆栈构建单独服务组件,就像在蜂箱中一样,各个服务共同形成一个强大的微服务架构,可提供更好的扩展性,此外,各敏捷团队可单独处理各服务组件,对整个应用程序没有影响或影响最小。
2、微服务架构的优势?
-
独立开发,所有微服务都可根据各自的功能轻松开发。
-
独立部署,根据各自所提供的服务,可在任何应用中单独部署。
-
故障隔离,即便应用中某一服务不起作用,系统仍可继续运行。
-
混合技术栈,可用不同语言和技术来构建同一应用程序的不同服务。
-
粒度缩放,各组件可根据需要进行扩展,无需将所以组件融合到一起。
3、微服务的特点?
-
解耦:系统内的服务很大程度上是分离的,因此整个应用程序可轻松构建、更改、扩展。
-
组件化:微服务被视为可轻松更换和升级的独立组件。
-
业务能力:微服务非常简单,专注于单一功能。
-
自治:开发人员和团队可彼此独立工作,从而提高开发速度。
-
持续交付:通过软件创建,测试和批准的系统自动化,允许频繁的发布软件。
-
责任:微服务不关注应用程序作为项目,只将应用程序视为自己负责的产品。
-
分散治理:重点是使用正确的工具做正确的事,也意味着没有标准化的模式或任何技术开发模式,开发人员可自由选择最正确的工具来解决问题。
-
敏捷:微服务支持敏捷开发,任何新功能都可快速开发并再次丢弃。
4、设计微服务的最佳实践?
注释如下:
-
01:为每个微服务分别存储数据
-
02:将代码保持在类似的成熟度级别
-
03:为每个微服务单独构建
-
04:部署到容器
-
05:将服务设计为无状态服务
5、微服务架构如何运作?
具有以下组件:
-
客户端:来自不同设备的不同用户发送请求。
-
身份提供商:验证用户身份并颁发安全令牌。
-
API网关:处理客户端请求。
-
静态内容:容纳系统的所有内容。
-
管理:在节点上平衡服务并识别故障。
-
服务发现:查找微服务之间通信路径指南。
-
内容交付网络:代理服务器及其数据中心的分布式网络。
-
远程服务:启用驻留在IT设备网络上的远程访问信息。
6、微服务架构的优缺点?
微服务架构的优点:
-
自由使用不同的技术。
-
每个微服务都侧重于单一功能。
-
支持单个可部署单元。
-
允许经常发布软件。
-
确保每项服务的安全性。
-
多个服务是并行开发和部署的。
微服务架构的缺点:
-
增加故障排除挑战。
-
由于远程呼叫而增加延迟。
-
增加配置和其它操作的工作量。
-
难以保持交易安全。
-
艰难的跨越各种便捷跟踪数据。
-
难以在服务之间进行编码。
7、单片(monolithic)、SOA、微服务架构(microservices)的区别?
分析如下:
-
单片架构类似于大容器,其中应用程序的所有软件组装在一起并紧密封装。
-
SAO是面向服务的架构,也是一种相互通信服务的集合,通信可涉及到简单的数据传递,也可涉及到两个或多个协调某些活动的服务。
-
微服务结构是一种架构风格,将应用程序构建为以业务领域为模型的小型自治服务集合。
至此,本次分享就结束了,后期会慢慢补充。
以上仅为个人观点,不一定准确,能帮到各位那是最好的。
好啦,到这里本文就结束了,喜欢的话就来个三连击吧。
扫码关注公众号,获取更多优质内容。