微服务常见问题汇总

1、SOA和微服务架构之间的主要区别是什么?
SOA(Service Oriented Architecture)面向服务的架构:他是一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务 通常以独立的形式存在与操作系统进程中。各个服务之间通过网络调用。
微服务架构:其实和SOA架构类似,微服务是在SOA上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。
微服务架构 = 80%的SOA服务架构思想 + 100%的组件化架构思想 + 80%的领域建模思想

功能 SOA 微服务
组件大小 大块业务逻辑 单独任务或小块业务逻辑
耦合 通常松耦合 总是松耦合
公司架构 任何类型 小型、专注于功能交叉团队
管理 着重中央管理 着重分散管理
目标 确保应用能够交互操作 执行新功能、快速拓展开发团队
SOA 微服务
遵循“尽可能多的共享”架构方法 遵循“尽可能少分享”的架构方法
重要性在于业务功能重用 重要性在于“有界背景”的概念
他们有共同的治理和标准 他们专注于人们的合作和其他选择的自由
使用企业服务总线ESB进行通信 简单的消息系统
它们支持多种消息协议 他们使用轻量级协议,如 HTTP / REST 等。
多线程,有更多的开销来处理I/O 单线程,通常使用Event Loop功能进行非锁定I/O处理
最大化应用程序服务可重用性 专注于解耦
传统的 关系数据库 更常用 现代 关系数据库 更常用
系统的变化需要修改整体 系统的变化是创造一种新的服务
DevOps/Continuous Delivery正在变得流行,但还不是主流 专注于DevOps/持续交付

2、什么是领域驱动设计(DDD)?
Domain Driven Design 领域驱动设计,是一种软件设计思想。专注于核心领域逻辑、在模型上找到综合的设计、不断与领域专家合作。

3、什么是REST/RESTful?它的用途是什么?
REST:是一种软件架构设计风格,提供了一组设计原则和约束条件,而不是标准。(英文:Representational State Transfer,简称REST)即表述性状态传递是:Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
RESTful:基于REST构建的API就是Restful风格。
总结:URL定位资源,HTTP动词(GET,POST,PUT,DELETE)描述操作。

4、你能否给出关于REST和微服务的要点?
REST:虽然可以通过多种方式实现微服务,但REST over HTTP是实现微服务的一种方式。REST还可用于其他应用程序,如Web应用程序,API设计和MVC应用程序,以提供业务数据。
微服务:是一种体系结构,其中系统的所有组件都被放入单独的组件中,这些组件可以单独构建,部署和扩展。微服务的某些原则和最佳实践有助于构建弹性应用程序。

5、什么是不同类型的微服务测试?
单元测试、端到端(系统)测试、集成测试、消费者驱动的合同测试(CDC测试)
在底层,我们有面向技术的测试,单元测试和性能测试。
在中间层,我们有探测性测试,如压力测试和可用性测试。
在顶级,我们有很少的验收测试。这些验收测试有助于利益相关者理解和验证软件功能。

6、PACT在微服务架构中的用途是什么?
PACT:是一个开源CDC测试框架。允许测试服务提供者和消费者之间的交互,与契约隔离,从而提高微服务集成的可靠性。
1.定义消费者端服务的预期结果
2.生成PACT文件
3.与提供者服务共享生成的PACT文件

7、什么是端到端微服务测试?
端到端测试:即对待测功能在各服务、组件完全正常运行的情况进行测试,这里更类似于功能测试或者UAT测试。
端到端测试:验证了工作流中的每个流程都正常运行。这可确保系统作为一个整体协同工作并满足所有要求。

8、容器在微服务中的用途是什么?
容器:是管理基于微服务的程序以便单独开发和部署它们的好方法。你可以将微服务封装在容器镜像及其依赖项中,然后可以用它来滚动开发按需实例的微服务而无需任何额外的工作。

9、微服务架构中的DRY是什么?
DRY:代表不要重复自己。它基本上促进了重用代码的概念。这导致开发并共享库,但是反过来导致紧耦合。

10、你对微服务架构中的语义监控有何了解?
语义监控,也称为综合监控,将自动化测试与监控程序相结合,以检测业务失败的因素。

11、微服务中的反应性扩展是什么?
Reactive Extensions也称为Rx。这是一种设计方法,我们通过调用多个服务来收集结果,然后编译组合响应。这些调用可以是同步或异步,阻塞或非阻塞。Rx 是分布式系统中非常流行的工具,与传统流程相反。

12、Mock 与 Stub 有什么区别?
Mock:关注行为验证。细粒度的测试,即代码的逻辑,多数情况下用于单元测试。
Stub:关注状态验证。粗粒度的测试,在某个依赖系统不存在或者还没实现或者难以测试的情况下使用,例如访问文件系统,数据库连接,远程协议等。

区别 Mock Stub桩
优点 运行速度快
测试覆盖率高
容易实现且可以形成良好的测试文档
能弥补Mock的不足
能够模拟复杂的测试环境
缺点 不是银弹,对于集成测试等粗粒度且耗时的测试不太适用 Stub往往比较复杂难以实现,而且需要经常性的调试它。
Stub模拟的都是难以测试的环境依赖,其复杂性导致它难以维护。
Stub并不能提供细粒度的单元测试。
不同的情况需要不同的Stub实现策略。

13、Kubernetes与Docker有什么关系?

Docker:是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。
K8s:是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

14、虚拟机和容器之间的区别是什么?
容器:是轻量级的虚拟化,主要是利用NameSpace的隔离,容器内部有独立的文件系统,但是和主机共享内存空间。
虚拟机:是一套完全的虚拟化,他虚拟了计算机运行的所有部分。
通过了解技术的实现,与主机操作系统的隔离级别是评估的主要方面
进程:是在操作系统层面默认隔离程度很低,主要只有隔离的内存地址空间和用户权限。 容器:是一个进程(或一组进程),但是与操作系统间的隔离程度比普通的进程高,但比VM低,安全性也更差。
虚拟机:是在操作系统中完全隔离,这意味着他们在主机硬件顶层创建了完整的新的操作系统。完全的独立伴随的是更多的资源使用来运行虚拟机。

15、什么是pod?什么是部署?什么是有状态集?
Pod:是由一组紧耦合的容器组成的容器组。

16、如何在不停机的情况下更新应用程序?
Master/Worker模式:应用容器实现不停机发布特性,最常见是Master/Worker模式。容器中常驻一个master进程和多个work进程,master进程只负责加载程序和分发请求,由fork出来的worker进程完成具体工作。

原文地址:https://www.cnblogs.com/yazid/p/12214383.html

时间: 2024-10-13 08:22:18

微服务常见问题汇总的相关文章

微服务常见问题及解决方案

1.分解模式:如何把应用分成若干个小服务? 1)按业务功能分解,将应用分解成能产生业务价值的最小单元. 2)对于跨多个业务的类(如订单会被订单管理.订单交付多个服务用到)用领域驱动设计(DDD),使用子域和边界上下文的概念来着手解决. 2.集成模式 1)API网关模式 2)聚合器模式 3.数据库模式 1)按服务分配数据库,为每个微服务配一个独立的数据库: 2)按服务共享数据库,一个数据库不要超过3个微服务,否则会影响扩容.自治和独立性. 3)命令查询职责隔离 4.观测模式 1)日志聚合:将多台机

微服务SpringCloud+Docker入门到高级实战(教程详情)

第一章 课程介绍和学习路线 1.微服务架构SpringCloud课程介绍 简介:课程介绍和课程大纲讲解,讲课风格和重点内容理解技巧 2.技术选型和学后水平 简介:课程所需基础和技术选型讲解,学完课程可以到达怎样的程度, 1.IDEA JDK8 Maven SpringBoot基础 Linux 2.理解掌握并开发SpringCloud里面主流架构和组件的基础使用,还有部分源码原理的理解 3.掌握学习的技巧和解决问题的思路 第二章 架构演进和分布式系统基础知识 1.传统架构演进到分布式架构 简介:讲

微服务SpringCloud+Docker入门到高级实战(目录)

第一章 课程介绍和学习路线 1.微服务架构SpringCloud课程介绍 简介:课程介绍和课程大纲讲解,讲课风格和重点内容理解技巧2.技术选型和学后水平 简介:课程所需基础和技术选型讲解,学完课程可以到达怎样的程度, 第二章 架构演进和分布式系统基础知识 1.传统架构演进到分布式架构 简介:讲解单机应用和分布式应用架构演进基础知识 (画图)2.微服务核心基础讲解 简介:讲解微服务核心知识 :网关.服务发现注册.配置中心.链路追踪.负载均衡器.熔断3.常见的微服务框架 简介:讲解常用的微服务框架4

微服务SpringCloud+Docker入门到高级实战

第一章 课程介绍和学习路线 1.微服务架构SpringCloud课程介绍简介:课程介绍和课程大纲讲解,讲课风格和重点内容理解技巧2.技术选型和学后水平简介:课程所需基础和技术选型讲解,学完课程可以到达怎样的程度, 第二章 架构演进和分布式系统基础知识 1.传统架构演进到分布式架构简介:讲解单机应用和分布式应用架构演进基础知识 (画图)2.微服务核心基础讲解简介:讲解微服务核心知识 :网关.服务发现注册.配置中心.链路追踪.负载均衡器.熔断3.常见的微服务框架简介:讲解常用的微服务框架4.微服务下

系列免费课程汇总(Java、单体应用、微服务、物联网、SaaS)

概述 2020年春节尽在眼前,又忙碌了一年的你一定有很多收获:是升职加薪,还是收获爱情?是买房置业,还是新添人口? 我在2019年的最大收获是:我的第二枚千金诞生,使我顺利加入富豪行列! 新年伊始我们要回顾过去,总结过去一年的成就与挫折,我们还要放眼未来,为新一年设定一个小目标! 2020年我要为大家分享一系列Java免费课程,助力大家成长为Java领域的全栈工程师.架构师! 课程将以视频教学形式开展,课件及视频教程将陆续更新到我们的 官方站点 及 博客园 中,感兴趣可关注. 官方站点 为了配合

小D课堂 - 新版本微服务springcloud+Docker教程_汇总

小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介 小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型 小D课堂 - 新版本微服务springcloud+Docker教程_2_01传统架构演进到分布式架构 原文地址:https://www.cnblogs.com/wangjunwei/p/11434371.html

【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发

<ASP.NET Core 微服务实战>译者序:https://blog.jijiechen.com/post/aspnetcore-microservices-preface-by-translator/ "微服务"的概念在 2014 年正式提出之后,越来越多的团队开始用它来设计自己的业务系统,各种微服务框架和开发过程管理方法也同时兴起.不断成熟.微服务设计方法清晰地定义了各个开发团队的业务边界,微服务框架以不同的方式实现了服务之间的协作与集成,根据康威定律我们可以推导这

理解微服务

当前微服务很热,大家都号称在使用微服务架构,但究竟什么是微服务架构?微服务架构是不是发展趋势?对于这些问题,我们都缺乏清楚的认识,本文基于作者在大型互联网系统的服务化实践和思考,和大家一起探讨微服务架构.本文主要内容包括: 1.   传统SOA架构 2.   新型SOA架构 3.   服务设计方式 4.   深入微服务 5.   微服务体系 6.   微服务系统架构 传统SOA架构 说到微服务,离不开SOA,两者经常放一起讨论,首先我们要了解SOA架构. 国外信息化起步较早,很多大公司先后建设了

【原创】Docker容器及Spring Boot微服务应用

Docker容器及Spring Boot微服务应用 1 什么是Docker 1.1 Docker的出现 问题一:项目实施环境复杂问题 传统项目实施过程中经常会出现“程序在我这跑得好好的,在你那怎么就不行呢?! ” 这是一个典型的应用场景,Docker image中包含了程序需要的所有的运行时依赖,比如java的程序,肯定要在image中包含jdk:比如Python的程序,肯定要在image中包含对应版本的Python解释器.Docker把整个运行时环境打包放到image中,所以搞定了环境依赖问题