SpringCloud 微服務 (服務治理 Spring Cloud Eureka)

 服務治理只要負責微服務架構中最爲核心的基礎的模塊,它主要用來實現各個微服務實例的自動註冊與發現。java

 搭建服務註冊中心web

 1.首先建立一個基礎的Spring boot 工程,命名爲eureka-server,並在pom.xml中引入必要依賴spring

       <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

  

服務提供者     app

 1.首先建立一個基礎的Spring boot 工程,命名爲eureka-provider,並在pom.xml中引入必要依賴ide

<!-- 引入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 spring-boot

@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.註定配置服務名,指定服務中心地址fetch

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 禁用自我保護模式

相關文章
相關標籤/搜索