• SpringCloud 微服务 (服务治理 Spring Cloud Eureka)


     服务治理只要负责微服务架构中最为核心的基础的模块,它主要用来实现各个微服务实例的自动注册与发现。

     搭建服务注册中心

     1.首先创建一个基础的Spring boot 工程,命名为eureka-server,并在pom.xml中引入必要依赖

           <parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>1.4.3.RELEASE</version>
    		<relativePath />
    	</parent>
    
    	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<java.version>1.7</java.version>
    	</properties>
    	
    	<!-- 引入spring boot依赖 -->
    	<dependencies>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
           <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
           	 <!--增加eureka-server的依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
          
    	</dependencies>
    	
    	<!-- 引入spring cloud 依赖 -->
    	<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>
    

      

     2.@EnableEurekaServer注解启动一个微服务注册中心

    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaApplication {
    	
    	public static void main(String[] args) {
    		SpringApplication.run(EurekaApplication.class, args);
    	}
    }
    

    3.在默认配置下,服务注册中心也会将自己作为客户端来注册它自己,所以我们需要禁用它的客户端注册行为

    server.port=1111
    #是否将自己注册到eureka server
    eureka.client.registerWithEureka=false 
    #是否从eureka server获取注册信息
    eureka.client.fetchRegistry=false	 
    #设置与enreka server交互地址,查询服务和注册服务 多个地址,分割    
    eureka.client.serviceUrl.defaultZone=http://192.168.30.1:8761/eureka
    

      

    服务提供者     

     1.首先创建一个基础的Spring boot 工程,命名为eureka-provider,并在pom.xml中引入必要依赖

    <!-- 引入spring boot依赖 -->
    <dependencies>
      <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-web</artifactId>
      </dependency>
       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
       </dependency>
            
       <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
       </dependency>
            
    
    </dependencies>
    	
    <!-- 引入spring cloud 依赖 -->
    <dependencyManagement>
      <dependencies>
    	<dependency>
    	  <groupId>org.springframework.cloud</groupId>
    	  <artifactId>spring-cloud-dependencies</artifactId>
    	  <version>Brixton.SR5</version>
    	  <type>pom</type>
    	  <scope>import</scope>
        </dependency>
    </dependencyManagement>
    

      

    2.创建Controller 

    @GetMapping("/{id}")
    public User findByid(@PathVariable Long id){	
    	User user = userRepository.findOne(id);
    	return user;	
    }

    3.@EnableDiscoveryClient  激活@EnableDiscoveryClient实现

    @EnableDiscoveryClient
    @SpringBootApplication
    public class UserApplication {
    	
    	public static void main(String[] args) {
    		SpringApplication.run(UserApplication.class, args);
    	}
    }
    

    4.注定配置服务名,指定服务中心地址

    server.port=9999
    server.ssl.enabled=false
    
    spring.application.name=microservice-provider-user
    #这可以配置多个, 逗号分割 eureka.client.serviceUrl.defaultZone=http://192.168.137.100:1111/eureka/

    高可用eureka

    修改我们之前创建的eureka工程 ,新建两个配置application-peer1.properties,application-peer1.properties

    server.port=1111
    spring.application.name=eureka-server
    eureka.instance.hostname=peer1
    eureka.client.serviceUrl.defaultZone=http://192.168.137.101:1112/eureka
    eureka.server.enable-self-preservation=false
    
    server.port=1112
    spring.application.name=eureka-server
    eureka.instance.hostname=peer2
    eureka.client.serviceUrl.defaultZone=http://192.168.137.100:1111/eureka
    eureka.server.enable-self-preservation=false
    

    启动时指定配置文件启动

    nohup java -jar discovery-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1 &

    nohup java -jar discovery-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2 &

    这样两个eureka就能互相注册,形成一个双节点集群

    eureka自我保护模式

    当eureka Server 在一段时间内没有接受到某个微服务实例的心跳,Eureka Server 将会注销掉该实例(默认90秒)

    当网络分区发生故障时,丢失过多客户端,那么这个节点就会进入自我保护模式,一旦进入保护模式,Eureka Server 就会保护服务注册中心的信息,不在注销

    使用eureka.server.enable-self-preservation=false 禁用自我保护模式

  • 相关阅读:
    (10)时间
    (9)字符串
    (8)数组工具类
    (7)数学工具类
    (6)随机数
    (5)包装类
    (4)声明式接口和常用接口
    (3)java.lang.System
    (2)java.lang.Object
    (1)开篇
  • 原文地址:https://www.cnblogs.com/zls1218/p/8991106.html
Copyright © 2020-2023  润新知