天天看點

關于eureka注冊中心搭建以及叢集搭建

關于eureka注冊中心搭建以及叢集搭建

此代碼是一個注冊中心,一個調用者和一個被調用者完整的執行個體

父工程pom.xml省略了

  1. eureka注冊中心 pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>cn.lexed</groupId>
    <artifactId>SpringCloud-Server810</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>SpringCloud-EurekaServer810</artifactId>
  <dependencies>
  <dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter</artifactId>
  </dependency>
  <dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  </dependency>
  </dependencies>
</project>      

application.yml

server:
  port: 8001
eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://localhost:8001/eureka/
spring:
  application:
    name: server810   
      

啟動配置類:

@SpringBootApplication
@EnableEurekaServer
public class Application810 {

    /**
    * @Title: main
    * @Description: TODO
    * @param @param args
    * @return void
    * @throws
    */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    SpringApplication.run(Application810.class, args);
    
    }

}      

被調用者

  • pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>cn.lexed</groupId>
    <artifactId>SpringCloud-Server810</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>SpringCloud-Service810</artifactId>
  <dependencies>
  <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
   <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  </dependency>
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>springloaded</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
    </dependency>
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    </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-actuator</artifactId>
    </dependency>
  </dependencies>
</project>      

application.yml

server:
  port: 8002
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver 
    url: jdbc:mysql://localhost:3306/msc_test?useUnicode=true&characterEncoding=utf-8
    username: root
    password: root
  jpa:
    hibernate:
      ddl-auto: update
  application:
    name: server811
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8001/eureka/      
@SpringBootApplication
public class ApplicationService810 {
    
  /**
  * @Title: main
  * @Description: TODO
  * @param @param args
  * @return void
  * @throws
  */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
     SpringApplication.run(ApplicationService810.class, args);
  }

}
      
@RestController
@RequestMapping("/user")
public class UserController {
  @Autowired
  private UserService userservice;

  @RequestMapping(value ="/save")
  public boolean save(User user) {
    try {
       User user1=new User(1,"張飛","aaa","男","南京");
       User user2=new User(2,"安琪拉","bbb","女","宿豫");
       User user3=new User(3,"花木蘭","ccc","女","泗縣");
      userservice.save(user1);
      userservice.save(user2);
      userservice.save(user3);
      return true;
    } catch (Exception e) {
      e.printStackTrace();
      return false;
    }
  }
  
   @GetMapping(value="/list")
   public List<User> list(){
   return userservice.list();
   }
   
   @GetMapping(value="/get/{id}")
   public User getStudent(@PathVariable("id") Integer id){
   return userservice.findById(id);
}
   @GetMapping(value="/delete/{id}")
   public boolean delete(@PathVariable("id") Integer id){
   try{
   userservice.delete(id);
   return true;
   }catch(Exception e){
   e.printStackTrace();
   return false;
   }
   }
}      
  • 調用者
  • pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>cn.lexed</groupId>
    <artifactId>SpringCloud-Server810</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>SpringCloud-Client810</artifactId>
  <dependencies>
  <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  </dependency>
  <dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-config</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  </dependencies>
</project>      

啟動類

@SpringBootApplication

public class ApplicationClient810 {

    /**
    * @Title: main
    * @Description: TODO
    * @param @param args
    * @return void
    * @throws
    */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    SpringApplication.run(ApplicationClient810.class, args);
    }
    @Bean()
      @LoadBalanced
      public RestTemplate restTemplate1(){
             return new RestTemplate();
              
          }

}      
server:
  port: 8003
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8001/eureka/
spring:
  application:
    name: server810      
@RestController
@RequestMapping("/client")
public class MyController {
@Autowired
private RestTemplate restTemplate;

@GetMapping("{id}")
public User show(@PathVariable("id")Integer id){
    String  u_url="http://server811/user/get/"+id;
    User user=restTemplate.getForObject(u_url, User.class);
    System.out.println(user);
    System.out.println(u_url);
    return user;
}

@GetMapping("index2")
public User[] All(){
     String  u_url="http://service-server1/user/list";
     System.out.println(u_url);
     //ResponseEntity<List<User>> list = restTemplate.exchange(u_url,HttpMethod. POST,requestEntity, new ParameterizedTypeReference<List<User>>(){});
     User[] list=restTemplate.getForObject(u_url,User[].class);
     return  list;
    
}      
  1. 調用者查詢全部資料時候用數組形式調:

    ​​

    ​User[] list=restTemplate.getForObject(u_url,User[].class); ​

  2. 在調用者拿被調用者資料時候出現http位址錯誤,改為以下可以解決

    ​​

    ​ String u_url="http://server811/user/get/"+id;​