springcloud1 基础搭建集群demo

1.parent的pom配置

备注:有一个common-user的模块,写了domain和service方法,自己写即可

<packaging>pom</packaging>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <!--2.0.6对应的cloud版本是Finchley.SR2-->
    <spring-cloud.version>Finchley.SR2</spring-cloud.version>
    <springboot.version>2.0.6.RELEASE</springboot.version>
</properties>


<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${springboot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

 

 

2.注册中心

    2.1主方法:

@SpringBootApplication
@EnableEurekaServer //表示是eureka的注册中心服务端
public class UserProviderApplication_1000 {
    public static void main(String[] args) {
        SpringApplication.run(UserProviderApplication_1000.class,args);
    }
}

    2.2配置:

#C:\Windows\System32\drivers\etc\hosts    hosts这个文件没有后缀,加一个  
# 在里面加上 127.0.0.1 peer1001   127.0.0.1 peer1000

server:
  port: 1000
eureka:
  instance:
    hostname: peer1000
  client:
      registerWithEureka: false #作为一个注册中心不需要注册自己是否要注册到eureka
      fetchRegistry: false #表示是否从Eureka Server获取注册信息
      serviceUrl:
        defaultZone: http://peer1001:1001/eureka/   
                    #集群配置
                    #另一个集群的配置里面写的是http://peer1000:1000/eureka/ 
      # defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/    单机配置

2.3pom

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <!--eureka-server包涵了eureka-client的包-->
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

 

3.服务端(发送端)

搭建集群的话,拷贝改端口即可,但是名字必须一样,也就是下面配置里的比如sending.

    3.1主方法

@SpringBootApplication
@EnableEurekaClient //可加可不加,加了默认是euraka
public class UserProviderApplication_3333 {
    public static void main(String[] args) {
        SpringApplication.run(UserProviderApplication_3333.class, args);
    }
}

    3.2controller类

@RestController
public class UserController {
    @Autowired
    private IEmployeeService employeeService;

    //可以获取到配置里面的端口号
    @Value("${server.port}")
    private String port;

    @RequestMapping("/employee/{id}")
    //将{id}的值转换成传入的参数
    public Employee employee(@PathVariable("id") Long id) {
        System.out.println(port);
        return employeeService.selectById(id);
    }
}

 

    3.3配置

server:
  port: 3333
eureka:
  client:
     # registerWithEureka: false #作为一个注册中心不需要注册自己是否要注册到eureka
      #fetchRegistry: false #表示是否从Eureka Server获取注册信息
      serviceUrl:
        defaultZone: http://peer1000:1000/eureka/,http://peer1001:1001/eureka/
# instance:
   # prefer-ip-address: true #使用ip注册,没有的话是名字注册 
spring:
  application:
    name: sending

3.4 pom

<dependency> 
    <!--自己写一个domain和service即可-->
    <groupId>cn.itsource</groupId>
    <artifactId>common-user</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

 

 

3.客户端(接收端)用feign,相对简单

Feign是基于Ribbon封装的。

    3.1主方法

@SpringBootApplication
@EnableEurekaClient //可加可不加,加了默认是euraka
@EnableFeignClients //开启Fiegn
public class UserProviderApplication_4444 {
    public static void main(String[] args) {
        SpringApplication.run(UserProviderApplication_4444.class, args);
    }
}

    3.2feign接口

/**
 * @FeignClient("SENDING") 代表这个接口是一个feign的客户端
 * SENDING 是这个接口要调用的远程服务的名字(sending),上传注册中心时,会改成大写
 */
@FeignClient("SENDING")
public interface FeignClientEmployee {
    //方法名和参数最好要跟发送端的一致,最好复制过来
    @RequestMapping("/employee/{id}")
    //将{id}的值转换成传入的参数
    public Employee employee(@PathVariable("id") Long id);
}

3.3controller

@RestController
public class EmployeeeController {
    @Autowired
    private FeignClientEmployee feignClientEmployee;
    @RequestMapping("/employee/{id}")
    //将{id}的值转换成传入的参数
    public Employee hello(@PathVariable("id") Long id){
        return feignClientEmployee.employee(id);
    }
}

3.4配置

server:
  port: 4444
eureka:
  client:
     # registerWithEureka: false #作为一个注册中心不需要注册自己是否要注册到eureka
      #fetchRegistry: false #表示是否从Eureka Server获取注册信息
      serviceUrl:
        defaultZone:  http://peer1000:1000/eureka/,http://peer1001:1001/eureka/
spring:
  application:
    name: getting

3.5pom

<dependency>
    <groupId>cn.itsource</groupId>
    <artifactId>common-user</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

 

 

4.客户端(接收端)Ribbon方式,相对复杂

    4.1主方法

@SpringBootApplication
@EnableEurekaClient //可加可不加,加了默认是euraka
//@RibbonClients//ribbon的客户端
public class UserProviderApplication_2222 {

    @Bean
    @LoadBalanced//负载均衡
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    //随机加载集群
    @Bean
    public IRule rule(){
        return new RandomRule();
    }

    public static void main(String[] args) {

        SpringApplication.run(UserProviderApplication_2222.class, args);
    }
}

4.2controller

@RestController
public class GetEmployeeController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/employee/{id}")
    //将{id}的值转换成传入的参数
    public Employee hello(@PathVariable("id") Long id) {
        //需要写上发送端在注册中心名字
       String url = "http://SENDING/employee/"+id;
        return restTemplate.getForObject(url,Employee.class);
    }
}

4.3配置

server:
  port: 2222
eureka:
  client:
      serviceUrl:
        defaultZone:  http://peer1000:1000/eureka/,http://peer1001:1001/eureka/
spring:
  application:
    name: getting

4.4pom

<dependency>
    <groupId>cn.itsource</groupId>
    <artifactId>common-user</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

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

转载于:https://my.oschina.net/u/4083694/blog/3078072

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值