Dubbo与springcloud的取舍

从大环境来看,Dubbo是分布式架构比较成熟的体系,社群一直很火,在springcloud出现之前一直都是占据大部分的主要开发的主线,而Dubbo是就RPC开发,集成了对RPC框架的支持负载均衡,序列化传输,但是在链路跟踪相对于springcloud就有所不足,而springcloud目前是集成了所有微服务的组件,包括服务发现,服务注册,服务熔断,服务调用,链路跟踪等,而springcloud是基于Http协议传输,使用的是轻量级的restfulAPI
springcloud的应用之间的调用方式 restTemplate或者是是基于okHttp的feign来实现
现在来详细说说restTemplate的应用的几种情况

  1. hardcode的方式来使用restTemplate的方式(这种不推荐使用)
    主要是通过在controller层使用@AutoWirte注入restTemplate的方式然后使用它提供的接口来实现服务的调用,这里需要知道服务的详细的URL才能完成,如果在集群的环境中这种情况就比较难实现在这里插入图片描述

2.使用@AutoWirte的方式使用loadBlanceClient
这种方式是使用了loadBalanceClient的getHost(),以及getPort()的方法来实现动态获取集群里面的服务的ip端口,但是注意这样就比较冗余,每次都需要依赖loadBalanceClient的接口
在这里插入图片描述
3.另外的一种情况是使用配置类的方法来实现解耦
在设置一个config类,该类的restTemplate使用了注解@LoadBalance来做动态的获取服务的ip端口,这样在controller层调用的时候就可以使用,只需要调用服务的名字即可
在这里插入图片描述
在这里插入图片描述
这里的负载均衡策略如果需要重写策略可以通过重写IRule这个接口来实现,具体的有轮询,权重,随机等。这个就放到以后说Ribbon的时候在详细说。

猜你喜欢

转载自blog.csdn.net/weixin_30947631/article/details/85006030