SpringCloud入门(二)

匿名 (未验证) 提交于 2019-12-03 00:13:02

上文只是将服务注册到eureka上,但是consumer还是硬编码调用,前文也有提到这种硬编码方式肯定是不合理的,一来服务上线之后,IP地址肯定是变动的, 再则,采用硬编码的方式是无法实现负载均衡的。

ribbon便是一个用来做负载均衡的组件。

ribbon是一个负载均衡客户端 类似nginx反向代理,可以很好的控制htt和tcp的一些行为。Feign默认集成了ribbon。
在server-order项目的pom.xml里加上:

        <dependency>             <groupId>org.springframework.cloud</groupId>             <artifactId>spring-cloud-starter-ribbon</artifactId>         </dependency>

在加载restTemplates的方法上添加@LoadBalanced注解,使其具有负载均衡的能力,然后将硬编码的ip地址换成服务提供者的应用名字(application.name属性的值),修改之后controller便变成了下面的样子,其他地方不做修改。

在server-order项目下的启动类里改成这个样子:

@SpringBootApplication @EnableEurekaClient public class OrderApp {     public static void main(String[] args) {         SpringApplication.run(OrderApp.class, args);     }              //做负载均衡     @Bean     @LoadBalanced     RestTemplate restTemplate() {         return new RestTemplate();     }  }

@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。
启动两个会员服务工程,也就是把server-number项目的application,端口号分别为8762、8763,分别启动一次,订单服务 使用负载均衡策略轮训到会员服务接口。
启动完毕的效果:

浏览器访问server-order项目接口,效果:

Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。
简而言之:


创建service-order-feign工程
在像之前的pom.xml文件一样,加多一个依赖包

    <dependency>             <groupId>org.springframework.cloud</groupId>             <artifactId>spring-cloud-starter-feign</artifactId>     </dependency>

application.yml的配置文件:

eureka:   client:     serviceUrl:       defaultZone: http://localhost:8888/eureka/ server:   port: 8765 spring:   application:     name: service-order-feign

编写service,调用service-number

@FeignClient("service-number") public interface MemberFeign {     @RequestMapping("/getUserList")     public List<String> getOrderByUserList(); }

效果图:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!