码迷,mamicode.com
首页 > 编程语言 > 详细

springcloud+eureka简单入门案例

时间:2018-02-25 19:23:33      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:factory   context   host   ppi   server   ide   toc   注册服务   .class   

springcloud+eureka简单入门案例

一、服务提供者

直接提供服务,入门案例没有特别要设置的地方,注意下端口,由于要启动多个服务,可能会冲突

配置文件(src/main/resources/application.yml)

server:
  port: 8000

二、服务消费者

服务消费者的依赖在这个单独的demo中其实可有可无,亲测不添加,也可以实现demo服务提供能

三、服务消费者启动类里注入RestTemplate,用于调用远程服务

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
public class MovieApplication {
    
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
    public static void main(String[] args) {
        SpringApplication.run(MovieApplication.class, args);
    }
}

四、服务消费者Controller

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import com.xujie.pojo.User;

@RestController
public class UserController {
    
    @Autowired
    private RestTemplate restTemplate;
    
    @GetMapping("/getUser")
    public User getUser() {
        return this.restTemplate.getForObject("http://localhost:8000/getUser", User.class);
    }
}

此时可以通过访问消费者,间接调用服务提供者的服务,

五、创建服务注册中心,这里选用Eureka

5.1在springboot基础环境上添加依赖

<!-- springcloud版本声明 -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Brixton.SR5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement> 

<!-- 引入eureka依赖 -->
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
    </dependency>
</dependencies>

5.2启动类的编码

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

@SpringBootApplication
@EnableEurekaServer  //声明这是一个Eureka服务器
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
    
}

5.3配置文件(src/main/resources/application.yml)

server:
  port: 8761      #声明端口号
eureka:
  client:
    register-with-eureka: false    #默认是true,将自己注册到eureka上
    fetch-registry: false    #是否从eureka上获取信息,由于本案例是单机,无需从别的eureka上获取注册信息
    service-url:
      defaultZone: http://localhost:8761/eureka    #设置与eureka交互的地址,查询服务和注册服务都需要依赖这个地址,默认是:http://localhost:8761/eureka

六、将服务提供者注册到服务注册中心

6.1改造服务提供者

6.1.1添加依赖,便于把服务注册到注册中心Eureka中去:

<!-- springcloud版本声明 -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Brixton.SR5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<!-- eureka的依赖 -->
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
    </dependency>
</dependencies>

6.1.2修改配置文件,添加下列配置

spring:
  application:
    name: provider   #注册到Eureka Server上的应用名称
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka    #注册的位置
  instance:
    prefer-ip-address: true  #将自己的ip注册到EuekaServer上

6.1.3修改启动类

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

@SpringBootApplication
@EnableDiscoveryClient   //也可以用EnableDiscoveryClient代替,前者兼容性更大,后者仅能兼容Eureka
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

此时可以正常启动并将服务注册到了eureka中
**启动Eureka和服务提供者访问:http://localhost:8761,界面如下:**
技术分享图片

七、Eureka的高可用

**在这里demo之前,修改本地hosts文件,为了区分本地的两个eureka节点,分别通过:http://peer1:8761和http://peer2:8762访问**

7.1将刚才的eureka项目复制一份,修改两个的配置文件如下:

eureka1的配置:

server:
  port: 8761      #声明端口号
eureka:
  instance:
    hostname: peer1
    appname: peer1
  client:
    #register-with-eureka: false    #默认是true,将自己注册到eureka上,这里设置eureka的高可用,所以需要将自己注册到eureka上
    #fetch-registry: false    #是否从eureka上获取信息,由于本案例是单机,无需从别的eureka上获取注册信息,这里设置eureka的高可用,所以需要在eureka上获取服务
    service-url:
      defaultZone: http://peer2:8762/eureka    #设置与eureka交互的地址,查询服务和注册服务都需要依赖这个地址,默认是:http://localhost:8761/eureka 

eureka2的配置:

server:
  port: 8762      #声明端口号
eureka:
  instance:
    hostname: peer2
    appname: peer2
    
  client:
    #register-with-eureka: false    #默认是true,将自己注册到eureka上,这里设置eureka的高可用,所以需要将自己注册到eureka上
    #fetch-registry: false    #是否从eureka上获取信息,由于本案例是单机,无需从别的eureka上获取注册信息,这里设置eureka的高可用,所以需要在eureka上获取服务
    service-url:
      defaultZone: http://peer1:8761/eureka    #设置与eureka交互的地址,查询服务和注册服务都需要依赖这个地址,默认是:http://localhost:8761/eureka

此时启动两个服务,界面如下
这是peer1:
技术分享图片

下面这个是peer2:

技术分享图片

springcloud+eureka简单入门案例

标签:factory   context   host   ppi   server   ide   toc   注册服务   .class   

原文地址:https://www.cnblogs.com/xujie09/p/8469735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!