【面经】服务熔断和服务降级的区别

什么是服务熔断

服务熔断是指当下游服务因访问压力过大而响应变慢或失败时,
上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用。
这种牺牲局部、保全整体的措施就叫做服务熔断。
在程序中,服务熔断可以避免因某个服务的故障导致整个系统的瘫痪。

什么是服务降级

服务降级是指当服务器压力剧增的情况下,
根据当前业务情况及流量对一些服务和页面有策略的降级,
以此释放服务器资源以保证核心任务的正常运行。
服务降级是系统自我保护的一种机制,以确保系统不会因过载而崩溃

熔断和降级的区别

熔断和降级都是系统自我保护的一种机制,但二者又有所不同,它们的区别主要体现在以下几点:

概念不同:熔断(Circuit Breaker)一词早期来自股票市场,它在这里的含义是指当股指波幅达到规定的熔断点时,交易所为控制风险采取的暂停交易措施。
而在程序中,熔断表示“断开”的意思。
如发生了某事件,程序为了整体的稳定性,所以暂时(断开)停止服务一段时间,以保证程序可用时再被使用。降级(Degradation)降低级别的意思,它是指程序在出现问题时,仍能保证有限功能可用的一种机制。

触发条件不同:熔断机制通常在系统出现异常,无法正常运行的情况下触发,
比如达到特定的错误率阈值或者请求超时等。
而降级则通常在系统负载过高,超过其承受能力时触发,以确保系统不会因过载而崩溃。

归属关系不同:熔断是一种更为激进的保护机制,它涉及整个系统的稳定性,一旦触发,所有服务都将停止。
而降级通常是一种较为温和的保护机制,它允许系统在出现问题时仍然提供部分功能,以减轻核心系统的压力。

总的来说,熔断和降级都是为了保护系统,但它们采取的方式和达到的目标有所不同。
### MPRPC 试常见问题及解答 #### 什么是 RPC? 远程过程调用(Remote Procedure Call, RPC)是一种允许程序请求另一台计算机上的服务而无需理解底层网络细节的技术。RPC 的核心目标是让分布式系统的开发更加简单和透明[^1]。 ```cpp // 示例:简单的客户端和服务端交互模型 void call_remote_procedure(int procedure_id, std::vector<char> args) { // 序列化参数并发送到服务器 } ``` #### MPRPC 是什么? MPRPC 是一种高性能的 C++ 实现的 RPC 框架,支持多种功能特性,例如负载均衡、序列化/反序列化以及异步通信等。它通常用于构建高并发的服务架构[^2]。 #### 常见试问题及其解答 ##### 1. 如何实现跨语言的 RPC 调用? 为了实现跨语言的 RPC 调用,可以采用协议缓冲区(Protocol Buffers)、Thrift 或 JSON 等通用的数据交换格式来定义接口契约。这些工具能够自动生成不同编程语言的存根代码,从而简化多语言环境下的集成工作[^3]。 ##### 2. 解释一下 MPRPC 中的负载均衡机制。 MPRPC 提供内置的支持以分发请求至多个后端实例上运行的应用程序副本之间平衡流量的方法之一就是轮询调度算法;此外还有加权随机法等多种策略可供选择依据具体业务需求决定最佳方案[^4]。 ##### 3. 在设计一个基于 MPRPC 的微服务体系结构时需要注意哪些方? - **性能优化**: 减少不必要的数据传输量通过压缩技术或者选取更高效的编码方式比如 Protobuf代替 XML. - **容错能力增强**: 引入断路器模式防止级联失败现象发生当某个节点不可达时候快速切换备用路径继续提供正常服务而不影响整体用户体验质量(QoS). - **监控与日志记录完善度提升**: 对每一次远程方法调用都需要有详尽的日志跟踪以便于后续排查定位潜在问题所在位置加快解决速度提高效率.[^5] ##### 4. 如果遇到超时错误应该怎样处理呢 ? 对于这种情况一般可以从以下几个角度出发考虑解决方案 : - 设置合理的重试次数限制避免无限循环尝试连接失败的目标地址浪费资源 ; - 动态调整每次等待响应的时间间隔长度遵循指数退避原则减少短期内频繁发起新请求给系统带来额外压力; - 结合实际应用场景灵活运用熔断降级手段及时止损保护整个集群稳定运转不受单点异常情况干扰 .[^6] ##### 5. 怎样评估一款好的 rpc framework 是否适合自己团队项目使用场景特点要求 ? 主要围绕下几个维度展开分析比较做出最终决策: - 易用性和学习曲线陡峭程度如何 ? 开箱即用还是需要花费大量时间成本去定制修改源码才能满足特定的功能扩展需求 . - 社区活跃度和支持力度大小 ,是否有足够的文档教程指导初学者入门以及解决问题过程中可能碰到的各种疑难杂症解释说明清楚明白易懂. - 扩展性强弱表现怎么样?能否方便快捷地接入第三方插件库完成诸如认证授权安全防护等功能模块添加操作等等...[^7]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ThinkPet

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

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

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

打赏作者

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

抵扣说明:

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

余额充值