![](https://img.haomeiwen.com/i9167995/98d8c07f7534add1.png)
阿里的dubbo是RPC的代表。dubbo本身的定位就是一个RPC框架,基于dubbo开发的应用还是要依赖周边的生态服务。相比于其他RPC框架,dubbo的服务治理可谓相当的完善,提供了服务发现、负载均衡、路由等基本分布式系统能力以及服务治理的可视化平台。所以在spring cloud出来之前,dubbo应用得相当广泛。
spring cloud是HTTP的代表。dubbo的定位始终是RPC框架,而spring cloud是微服务下的一站式的解决方案。基于http方式很容易解决跨语言跨平台的调用问题。
![](https://img.haomeiwen.com/i9167995/6051f56d59bafe61.png)
1.对外提供服务
实现:order服务调用product服务的接口
首先在product提供这个接口
![](https://img.haomeiwen.com/i9167995/8fae25be81fd823f.png)
直接浏览器访问这个接口看看是否能行
![](https://img.haomeiwen.com/i9167995/73a257a6580bcb51.png)
2.三种resttemplate访问方式
1.第一种方式(直接使用restTemplate, url写死)
调用方的代码如下:
![](https://img.haomeiwen.com/i9167995/873bed501ce83951.png)
![](https://img.haomeiwen.com/i9167995/e4ec4d80b61039b1.png)
2.第二种方式(利用loadBalancerClient通过应用名获取url, 然后再使用restTemplate)
![](https://img.haomeiwen.com/i9167995/d6b1555a333b7c89.png)
![](https://img.haomeiwen.com/i9167995/980381cf25d188da.png)
3.第三种方式(利用@LoadBalanced, 可在restTemplate里使用应用名字)
![](https://img.haomeiwen.com/i9167995/4261c0682d9a1e3b.png)
![](https://img.haomeiwen.com/i9167995/6edea7c913617309.png)
![](https://img.haomeiwen.com/i9167995/bfe97a865bfc9ed2.png)
product 代码地址: https://github.com/hmilyos/springCloud-product.git restTemplateTest分支
order代码地址:https://github.com/hmilyos/springCloud-order.git restTemplateTest分支
eureka服务发现代码: https://github.com/hmilyos/springCloud-eureka.git master分支
3.feign
feign是声明式REST客户端,伪RPC,采用了基于接口的注解,它内部也是使用了Ribbon做负载均衡
![](https://img.haomeiwen.com/i9167995/31680d013871a536.png)
添加feign的依赖: spring-cloud-starter-openfeign
![](https://img.haomeiwen.com/i9167995/08d838b9f818d732.png)
在启动类加上EnableFeignClients注解
![](https://img.haomeiwen.com/i9167995/8e04f6e7b0978c44.png)
![](https://img.haomeiwen.com/i9167995/bdbcd017d85ed6dd.png)
![](https://img.haomeiwen.com/i9167995/41198bb3972d75ad.png)
![](https://img.haomeiwen.com/i9167995/e3d1810373a2cd5b.png)
feign代码: https://github.com/hmilyos/springCloud-order.git feignTest分支
网友评论