美文网首页
SpringCloud(2)

SpringCloud(2)

作者: 阿fong | 来源:发表于2020-04-18 18:47 被阅读0次

生产者 /消费者
注册中心(Eureka)

1.服务消费者/服务生产者

简单理解,服务消费者就是发起服务调用的请求方,生产者就是提供服务的请求处理方。

2.注册中心

维护一个注册表,当一个服务启动以后,会向注册中心进行注册。消费者启动时,就会向注册中心拉取注册表。

3.代码演示

公共模块
image.png
//pojo
public class Data1 {
    private String name;
    private String data1;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getData1() {
        return data1;
    }
    public void setData1(String data1) {
        this.data1 = data1;
    }
    public Data1(String name, String data1) {
        super();
        this.name = name;
        this.data1 = data1;
    }
    
}
//data2同理

//service1
public interface Service1 {
    public List<Data1> getData1();
}

//service2
public interface Service2 {
    public List<Data2> getData2();
}
生产者1

添加
spring web启动依赖
common依赖


image.png
@RestController
public class Controller1 {
    
    @Autowired
    private Service1 service1;
    
    @GetMapping("data1/getData1")
    List<Data1> getData1() {
        return service1.getData1();
    }
}

@Service
public class Service1_Impl implements Service1 {

    @Override
    public List<Data1> getData1() {
        List<Data1> data1 = new ArrayList<>();
        data1.add(new Data1("服务1","数据1号"));
        data1.add(new Data1("服务1","数据2号"));
        return data1;
    }

}

yml配置

server:
  port: 8010
生产者2

同理

@RestController
public class Controller2 {
    
    @Autowired
    private Service2 service2;
    
    @GetMapping("data2/getData2")
    List<Data2> getData1() {
        return service2.getData2();
    }
}

@Service
public class Service2_Impl implements Service2 {

    @Override
    public List<Data2> getData2() {
        List<Data2> data2 = new ArrayList<>();
        data2.add(new Data2("服务2","数据1号"));
        data2.add(new Data2("服务2","数据2号"));
        return data2;
    }

}

yml配置

server:
  port: 8020

访问测试
localhost:8010/data1/getData1
localhost:8020/data2/getData2


image.png

服务2同理

3.1Eureka

Eureka1服务

创建eureka项目,添加eureka依赖,添加配置

@SpringBootApplication
@EnableEurekaServer
public class TestSpcEureka1Application {

    public static void main(String[] args) {
        SpringApplication.run(TestSpcEureka1Application.class, args);
    }

}

yml配置

spring:
  application:
    name: eureka-server
    
server:
  port: 2001
  
eureka:
  server:
    enable-self-preservation: false
  instance:
    hostname: eureka1
  client:
    register-with-eureka: false
    fetch-registry: false
生产者1

添加Eureka Discovery Client依赖,增加配置

eureka:
  client:
    service-url:
      defaultZone: http://localhost:2001/eureka

老版本要在主启动类上添加@EnableDiscoveryClient注解,新版本可以省略

生产者2

同上

访问测试

http://localhost:2001/

image.png

总结

配置Eureka注册中心

1.创建springboot项目,添加Eureka Server依赖,
2.配置yml文件,

server.port: 2001
spring.application.name=eureka-server
       ##心跳失败的比例,在15分钟内是否低于85% ,低于则开启自我保护状态
       eureka.server.enable-self-preservation: false
       #命名  
       instance.hostname: eureka1
       #不向自身注册
       client.register-with-eureka: false
              #不从自身拉取注册信息
              fetch-registry: false

3.主启动类添加@EnableEurekaServer注解。

配置服务

1.创建springboot项目,添加spring web依赖、Eureka Discovery Client依赖
2.配置yml文件

server:
  port: 8010
eureka:
  client:
    service-url:
      defaultZone: http://localhost:2001/eureka

3.添加@EnableDiscoveryClient注解

Eureka集群

1.不同的Eureka配置(不同的名字,不同的端口),修改yml

spring.application.name=eureka-server
       #心跳失败的比例,在15分钟内是否低于85% ,低于则开启自我保护状态
       eureka.server.enable-self-preservation: false
       #命名  
       instance.hostname: eureka2
       #不向自身注册
       client.register-with-eureka: true
              #不从自身拉取注册信息
              fetch-registry: true
              #eureka2启动时向eureka1注册
              service-url.defaultZone: http://eureka1:2001/eureka  

2.服务项目的yml配置文件添加eureka链接

eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka

相关文章

网友评论

      本文标题:SpringCloud(2)

      本文链接:https://www.haomeiwen.com/subject/dhqbvhtx.html