不同微服务子系统之间的调用问题

不同微服务子系统之间的调用问题

老师,课程中提及的关于微服务项目中的异常处理问题,以及不同微服务之间的调用问题,我不理解这其中的原理是什么,为什么把一些公共方法写在一个微服务当中,然后其他微服务去调用,这样调用的时候是通过什么样的方式进行调用的,以及在异常处理的时候,为什么要声明Dubbo过滤器,以及consumer和provider的异常处理逻辑不同,这又是为什么?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
CrazyCodeGirl 2025-06-12 14:25:05

1、将一些公共方法写在一个微服务中,然后让其他微服务去调用,这是一种非常常见的微服务设计模式。这样做有几个好处:一是可以避免代码重复,提高开发效率;二是这样也便于维护和升级公共功能。调用这些公共方法时,通常是通过远程过程调用(RPC)或者消息传递来实现的。

2、在异常处理方面,声明Dubbo过滤器是为了在服务调用过程中对异常进行统一处理。Dubbo过滤器可以在服务提供者(Provider)和消费者(Consumer)端拦截请求和响应,对异常进行捕获、记录和转换,从而实现异常的统一管理和处理。这是因为在分布式系统中,异常处理逻辑可能会因为网络问题、服务故障等多种因素而变得复杂。例如,Dubbo的异常过滤器会在服务端抛出异常给消费端时对异常进行处理,所有非继承自RuntimeException的异常都会直接返回,而继承自RuntimeException的异常则会经过封装返回给消费端。

3、Consumer和Provider的异常处理逻辑不同,主要是因为它们在微服务架构中扮演的角色不同。Provider负责提供服务,而Consumer负责调用服务。因此,它们在异常处理时需要考虑的因素也不同。例如,Provider可能需要关注服务的稳定性和性能,而Consumer可能更关注调用的可靠性和用户体验。在基于Spring Cloud的微服务体系中,微服务提供方会提供相应的客户端SDK代码,而客户端SDK代码则是通过FeignClient的方式进行服务调用。这种设计能让异常处理更灵活和贴近实际业务需求。希望我的解答能够解开同学的疑惑,祝学习愉快!


  • 提问者 Luckin_frank #1

    嗯嗯,谢谢老师,大部分的疑惑已经解决了,但是主要是对于consumer项目的异常处理逻辑还是不能理解,首先如果不进行远程调用的话,一般来说异常主要是在controller对外提供的接口上处理异常吗(主要是在代码的运行过程中发生了异常),但是对于远程调用来说,我不能理解关于Dubbo的服务调用者来讲,也就是consumer来说,他的异常处理针对的是哪种情况。

    因为provider不是已经对进行了处理吗?为什么还要consumer进行异常处理呢?

    2025-06-12 14:40:29
  • CrazyCodeGirl 回复 提问者 Luckin_frank #2

    你好同学,Consumer和Provider它们之间通过网络进行通信。虽然Provider服务可能会对内部发生的异常进行处理,但Consumer服务也是需要处理以下情况:

    1.网络异常:服务调用过程中可能会遇到网络问题,如网络延迟、连接超时等,这些异常需要Consumer来处理。

    2.Provider服务不可用:Provider服务可能因为各种原因(如服务崩溃、重启等)暂时不可用,Consumer需要能够处理这种情况。

    3.业务异常:Provider可能会抛出业务相关的异常,这些异常需要Consumer来处理,以便根据业务需求进行相应的操作。

    4.超时处理:Consumer需要处理服务调用的超时情况,决定是重试调用还是返回错误信息。

    5.负载均衡和容错:Consumer可能需要实现负载均衡和容错机制,如重试、熔断、降级等,以便提高系统的可用性和稳定性。

    6.数据转换和验证:Consumer可能需要对从Provider接收到的数据进行转换和验证,以确保数据的正确性和一致性。

    7.日志记录和监控:Consumer需要记录服务调用的日志,并进行监控,以便分析和优化服务性能。

    8.事务管理:在分布式事务场景下,Consumer可能需要参与全局事务的协调和管理。

    综上所述,Consumer的异常处理是非常重要的,这样不但可以提高系统的健壮性和可用性,也能提供更好的用户体验。希望我的解答同学可以解开Consumer异常处理疑惑,祝学习愉快!


    2025-06-24 14:18:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java工程师 2024版
  • 参与学习       2052    人
  • 提交作业       1500    份
  • 解答问题       1324    个

2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师