springcloud一 注册,消费,提供

新建springcloud的项目:


springcloud一 注册,消费,提供_第1张图片
右键新建一个项目

springcloud一 注册,消费,提供_第2张图片
新建

springcloud一 注册,消费,提供_第3张图片
改名字

springcloud一 注册,消费,提供_第4张图片
新建成功

先说注册中心Eureka Server
作用:不管是接口消费者还是提供者都必须到注册中心注册,好处能监听各个接口是否正常,进行负载均衡,其实负载均衡是轮训的模式

下面进行分析:1个消费者,2个提供者,2个Eureka1注册服务
看看是如何做到负载均衡
一.先说eureka1注册者,依赖

       
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        

2.添加启动代码中添加@EnableEurekaServer注解

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;


@SpringBootApplication
@EnableEurekaServer
public class Eureka1Application {
private int i=0;
    public static void main(String[] args) {
        SpringApplication.run(Eureka1Application.class, args);
    }
}

3.配置文件

spring.application.name=spring-cloud-eureka
server.port=8000
eureka.instance.hostname=localhost
#表示是否将自己注册到Eureka Server,默认为true。
eureka.client.register-with-eureka=false
#表示是否从Eureka Server获取注册信息,默认为true
eureka.client.fetch-registry=false
#设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。
# 默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

二、消费者spring-cloud-consumer 一般消费者只有一个,通过2个提供者进行轮训消费

先看看消费者spring-cloud-consumer依赖

        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        

2.配置文件

spring.application.name=spring-cloud-consumer
server.port=9001
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

3.启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients
/**
 * @EnableDiscoveryClient :启用服务注册与发现
 * @EnableFeignClients:启用feign进行远程调用
 */
public class SpringCloudConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringCloudConsumerApplication.class, args);
    }
}

4.控制层

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConsumerController  {
     HelloRemote helloRemote;
    @Autowired
    public ConsumerController(HelloRemote helloRemote) {
        this.helloRemote = helloRemote;
    }
    @GetMapping("/index")
    public String index(@RequestParam("name") String name) {
        return helloRemote.hello(name);
    }
}

5.调用层:spring-cloud-producer和提供者配置文件相对应

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * Feign是一个声明式Web Service客户端。使用Feign能让编写Web Service客户端更加简单,
 * 它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。
 * Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,
 * 使其支持了Spring MVC标准注解和HttpMessageConverters。
 * Feign可以与Eureka和Ribbon组合使用以支持负载均衡。
 * ribbon + rest
 */
@FeignClient(value= "spring-cloud-producer")
public interface HelloRemote {

    @GetMapping("/hello")
    String hello(@RequestParam("name") String name);
}

三.提供者: spring-cloud-producer

依赖:

        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        

2.配置类

spring.application.name=spring-cloud-producer
server.port=9000
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

3.启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
/**
 * 添加@EnableDiscoveryClient注解后,
 * 项目就具有了服务注册的功能。启动工程后,
 * 就可以在注册中心的页面看到SPRING-CLOUD-PRODUCER服务。
 */
public class SpringCloudProducerApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringCloudProducerApplication.class, args);
    }
}

4.控制层

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
    @GetMapping(value = "/hello")
    public String index(@RequestParam("name") String name) {
        return "hello "+name+",this is first messge";
    }
}

访问:http://127.0.0.1:9001/index?name=小明
我们一直请求会发现小明1,小明2,小明1,小明2....这样一直轮训下去,也就是负载均衡

springcloud一 注册,消费,提供_第5张图片
第一次访问

springcloud一 注册,消费,提供_第6张图片
第二次访问

demo链接:https://pan.baidu.com/s/1FVY2sY_P-H_OcG_N8pXvjw
提取码:6q9e
复制这段内容后打开百度网盘手机App,操作更方便哦测试地址:

你可能感兴趣的:(springcloud一 注册,消费,提供)