微服务架构面试题(三)

1. 简述熔断有哪几种状态 ?

熔断机制在分布式系统中主要有三种状态,这些状态反映了服务的可用性和系统的响应策略:

  1. Closed(关闭状态):这是熔断器的初始状态,表示服务访问正常。当系统检测到微服务间的调用正常,且没有触发熔断的条件时,熔断器保持关闭状态。此时,所有请求都可以正常地对服务进行调用。
  2. Open(打开状态):当系统在固定时间内接口调用出错比率达到一个设定的阈值(例如50%),熔断器会进入打开状态。进入此状态后,后续对该服务的调用都会被切断,熔断器会执行本地的降级(FallBack)方法,以避免进一步影响系统的稳定性和可用性。在打开状态下,所有请求都会被降级处理。
  3. Half-Open(半开状态):在熔断器打开一段时间后,为了避免长时间的服务不可用,系统会尝试进入半开状态。在此状态下,熔断器会允许部分请求调用该服务,并监控其调用成功率。如果成功率达到预期,则说明服务已恢复正常,熔断器会再次进入关闭状态;如果成功率仍旧很低,则系统会重新进入熔断打开状态。

熔断机制的这三种状态设计是为了在微服务架构中提供一种自我保护和恢复的能力,确保系统在遇到问题时能够迅速作出响应,避免进一步的损失,并在条件改善时能够自动恢复服务。

2. 解释服务熔断原理(断路器的原理) ?

服务熔断(Circuit Breaker)原理,在分布式系统中,特别是在微服务架构下,是一种非常重要的故障处理机制。它的核心思想源于电路中的熔断器,当电流超过一定阈值时,熔断器会自动断开电路,防止设备损坏或火灾等更严重的后果。在服务调用中,熔断器则起到类似的作用,当服务调用失败率达到一定阈值时,熔断器会“断开”,阻止进一步的请求,从而避免系统崩溃或级联故障。

具体来说,服务熔断的原理如下:

  1. 监控与检测:熔断器会持续监控服务的调用情况,包括成功和失败的调用次数、响应时间等关键指标。当服务的失败率或错误数超过预设的阈值时,熔断器会触发熔断动作。

  2. 熔断动作:一旦触发熔断,熔断器会立即进入“打开”状态,此时对于新的服务调用请求,熔断器会快速返回一个错误响应或预设的默认值,而不是继续转发请求到可能已经失效或延迟过高的服务。这样可以避免服务调用方因为等待而阻塞,同时减少对故障服务的进一步压力。

  3. 自我恢复:熔断器并不是永久性地断开服务调用,它会在一段时间后进入“半开”状态,尝试恢复对服务的调用。如果服务已经恢复正常,熔断器会关闭熔断状态,允许正常的服务调用;如果服务仍然存在问题,熔断器会再次进入熔断状态,并可能增加熔断时间,以避免对故障服务的频繁尝试。

通过这种方式,服务熔断可以有效地隔离故障服务,防止故障在分布式系统中扩散,从而提高整个系统的稳定性和可用性。

在实际应用中,像Netflix的Hystrix这样的开源库提供了对服务熔断的支持。它可以帮助开发者更轻松地实现熔断逻辑,并提供丰富的配置选项,以适应不同的业务场景和需求。

总的来说,服务熔断是微服务架构中处理服务故障的一种重要手段,通过监控、检测和熔断动作,可以有效地隔离故障服务,防止故障在系统中扩散,从而保障整个系统的稳定运行。

3. 简单描述降级,熔断, 限流区别 ?

降级、熔断和限流都是微服务架构中用于保障系统稳定性和可用性的重要机制,但它们各自的作用和触发条件有所不同。

降级通常是在服务负载过高或资源不足时触发,当服务无法及时处理请求或达到性能极限时,降级机制会降低服务的级别或功能,以确保系统的整体稳定性和可用性。这种机制通常用于预防性的措施,通过降低服务质量来避免系统崩溃。

熔断机制则更侧重于在故障发生时的快速响应。当服务的错误率或响应时间超过预先设定的阈值时,熔断机制会主动切断对该服务的调用,防止故障扩散到其他服务或系统。通过快速失败,熔断器可以保护系统免受进一步损害,并给故障服务提供恢复的机会。

限流则更多地关注于请求量的控制。当服务接收到的请求数量超过其处理能力时,限流机制会限制后续请求的进入,以防止服务过载或崩溃。限流可以帮助系统在高并发场景下保持稳定运行,避免资源耗尽和服务不可用。

综上所述,降级、熔断和限流在微服务架构中各自扮演着不同的角色。降级关注于预防性的措施,熔断侧重于快速响应故障,而限流则关注于请求量的控制。这些机制共同协作,确保系统在面对各种挑战时能够保持稳定和可用。

4. 简述什么是限流 ?

限流是一个网络用语,现多指微博或者抖音等软件或平台里的博主或者其发布内容的阅读量和推送量在一定时间内被限制,以使其热度降低。这是软件内设定的一些规定,目的是让更多的流量给更红的人或者三观更正的新闻事件,以便让更多的人看到。

此外,限流在网络和计算机领域中也有其应用,主要是一种流量控制的机制,用于限制数据的传输速度或数量,以保护系统资源免受过载的影响。其主要目的是防止网络拥塞和资源耗尽,提高系统的可靠性和稳定性。限流可应用于各种网络应用,包括服务器、网络设备、API接口等。

在分布式系统中,限流也常被用作一种服务保护的策略,当请求量超过系统处理能力时,通过限制请求的数量或频率,来保证系统的稳定运行,防止因为过多的请求而导致的系统崩溃或性能下降。

限流的具体实现方式有多种,包括令牌桶算法、滑动窗口算法、漏桶算法等,它们在不同的场景和需求下有不同的应用。例如,令牌桶算法适用于稳定的流量场景,如Web应用、API接口等;而滑动窗口算法则通过对请求的时间戳进行排序,维护一个时间窗口内的请求列表,并根据列表中的请求数量进行限流。

总的来说,限流是一种重要的网络管理和系统保护策略,通过合理的控制请求的数量和速度,可以有效地提高系统的稳定性和可用性。

5. 简述REST/RESTful ?它的用途是什么?

REST(英文:Representational State Transfer,简称REST)描述了一种架构样式的网络系统,比如web应用程序。它指的是一组架构约束条件和原则,当应用程序或设计满足这些约束条件和原则时,就称为RESTful。

RESTful是一种网络应用程序的设计风格和开发方式,它基于HTTP,可以使用XML格式定义或JSON格式定义。这种设计风格使得RESTful特别适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,例如动作类型为新增、变更、删除所调用资源。

RESTful架构的用途主要体现在以下几个方面:

  1. 简化客户端和服务器之间的交互:通过统一的接口和资源标识,客户端可以更容易地发现和使用服务器的资源,而不需要了解服务器的实现细节。
  2. 提高系统的可扩展性:由于RESTful架构的无状态性,服务器不需要保存客户端的状态信息,从而可以更容易地实现水平扩展,以满足大规模应用程序的需求。
  3. 降低系统的耦合性:RESTful架构的统一接口和资源标识可以帮助不同的应用程序之间降低耦合度,使它们可以更加独立地开发和维护。
  4. 支持多种数据格式:RESTful架构支持多种数据格式,如JSON、XML等,使得不同的应用程序之间可以更加灵活地交换数据。
  5. 提高系统的安全性:RESTful架构的基于HTTP协议的通信方式可以使用常见的安全机制,如SSL/TLS等,来保证通信的安全性和完整性。

总的来说,RESTful的设计理念和架构原则使得网络应用程序更加高效、灵活和可扩展,适用于各种业务场景和需求。

6. 简述什么是通用语言(UL)?

通用语言(UL)是一个具有多重含义的概念。

首先,在微服务架构中,通用语言(UL)是一种开发人员和用户之间公用的严格的交流语言,基于软件中使用的领域模型。这种语言旨在实现各种自然语言之间互相理解的理念,通过它,可以轻松解释特定领域的内容。通用语言必须非常清晰,以便将所有团队成员置于同一理解水平上,并以机器可以理解的方式进行翻译。这种语言可以是一种已经存在的自然语言,也可以是人工构建的辅助语言。

另外,UL也可以指容积单位,即微升(μL)。微升是液体容积的单位,相当于10-3毫升,10-6升,10^-9立方米。

最后,UL还是英文保险商试验所(Underwriter Laboratories Inc.)的简写。这是一个在美国乃至全球都极具权威性的从事安全试验和鉴定的机构。

因此,通用语言(UL)的具体含义需要根据其所在的上下文来判断。如需更多关于通用语言(UL)的信息,建议查阅相关领域的专业书籍或咨询相关领域的专家。

7. 简述什么时候需要使用DDD?

DDD(领域驱动设计)是一种软件开发方法论,它强调以业务领域为核心,通过深入理解业务需求和领域知识,来指导软件系统的设计和开发。在以下情况下,使用DDD是非常有益的:

  1. 复杂业务领域:当面对复杂、多变或难以理解的业务领域时,DDD能够帮助开发团队更好地把握业务本质,抽象出领域模型,并将业务逻辑清晰地映射到软件系统中。
  2. 大型项目:在大型项目的开发中,DDD通过将业务领域拆分为多个限界上下文(Bounded Context),有助于实现模块化开发和组件化设计。这可以提高开发效率,降低系统复杂度,并使得系统更易于维护和扩展。
  3. 团队协作:DDD强调团队协作和共同语言的重要性。通过建立通用语言,DDD可以帮助团队成员更好地沟通,减少误解和冲突,从而提高团队协作效率。
  4. 业务和技术融合:DDD关注业务和技术之间的融合。它通过将业务逻辑和技术实现紧密结合,使得软件系统能够更好地满足业务需求,并具备更强的适应性和灵活性。

综上所述,当面临复杂业务领域、大型项目、团队协作以及业务和技术融合的需求时,使用DDD是非常合适的。通过DDD,我们可以更好地理解和把握业务需求,设计出更加高效、灵活和可扩展的软件系统。

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依邻依伴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值