• springcloud+eureka简单入门案例


    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:

  • 相关阅读:
    lxml库
    requests库基本使用
    Xpath Helper的使用
    Class.forName()的作用(转)
    JDBC 连接数据库
    IDEA 的 Othere Settings(Default settings)消失了?(转)
    servletContext.getRealPath(String)作用(转)
    MySQL中插入相关
    MyBatis 中错误信息详情、原因分析及解决方案
    Java 的全限定类名
  • 原文地址:https://www.cnblogs.com/xujie09/p/8469735.html
Copyright © 2020-2023  润新知