微服务之间的通信

阿里的dubbo是RPC的代表。dubbo本身的定位就是一个RPC框架,基于dubbo开发的应用还是要依赖周边的生态服务。相比于其他RPC框架,dubbo的服务治理可谓相当的完善,提供了服务发现、负载均衡、路由等基本分布式系统能力以及服务治理的可视化平台。所以在spring cloud出来之前,dubbo应用得相当广泛。
spring cloud是HTTP的代表。dubbo的定位始终是RPC框架,而spring cloud是微服务下的一站式的解决方案。基于http方式很容易解决跨语言跨平台的调用问题。

1.对外提供服务
实现:order服务调用product服务的接口
首先在product提供这个接口

直接浏览器访问这个接口看看是否能行

2.三种resttemplate访问方式
1.第一种方式(直接使用restTemplate, url写死)
调用方的代码如下:


2.第二种方式(利用loadBalancerClient通过应用名获取url, 然后再使用restTemplate)


3.第三种方式(利用@LoadBalanced, 可在restTemplate里使用应用名字)



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做负载均衡

添加feign的依赖: spring-cloud-starter-openfeign

在启动类加上EnableFeignClients注解




feign代码: https://github.com/hmilyos/springCloud-order.git feignTest分支