玩轉SpringCloud(F版本) 一.服務的注冊與發現(Eureka)


一.服務的注冊與發現(Eureka

spring cloud 為開發人員提供了快速構建分布式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等等

 

1. 主項目:版本控制

 

Springboot集中聲明

 

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.0.4.RELEASE</version>
  <relativePath/>
</parent>

 

Springcloud版本

 

<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>

 

主項目管理的依賴Jar

 

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

 

Springboot組件:

 

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

 

2.創建2model工程

一個model工程作為服務注冊中心,即Eureka Server,另一個作為Eureka Client。

1創建服務注冊中心Eureka Server 

項目架構:

 

 

引入主項目:

 

<parent>
   <groupId>com.fsdm</groupId>
   <artifactId>SpringCloud_test1</artifactId>
   <version>1.0-SNAPSHOT</version>
</parent>

 

引入spring-cloud-starter-netflix-eureka-server的依賴:

<dependencies>
   <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
   </dependency>
</dependencies>

Application啟動類:

@EnableEurekaServer
@SpringBootApplication
public class Demo1Application {

   public static void main(String[] args) {
      SpringApplication.run(Demo1Application.class, args);
   }
}

 

注解解析:

@SpringBootApplication

1. 復合注解主要包括@ComponentScan,和@SpringBootConfiguration@EnableAutoConfiguration

2. @SpringBootConfiguration標注當前類是配置類

3. @EnableAutoConfiguration啟動自動的配置根據你添加的jar包來配置你項目的默認配置

4. @EnableAutoConfiguration掃描當前包及其子包下被@Component@Controller@Service@Repository注解標記的類並納入到spring容器中進行管理

 

@EnableEurekaServer

1. 表明這是一個EurekaServer服務注冊中心

2. 配合yml文件使用:

Eureka:
  Client:
    registerWithEureka: false     fetchRegistry: false

 

 

yml配置:

 

server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
  #  表明自己是一個eureka server.
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

spring:
  application:
    name: eurka-server

 

啟動程序,訪問http://localhost:8761/

client向server注冊時,它會提供一些元數據,例如主機和端口,URL,主頁等。Eureka server 從每個client實例接收心跳消息。 如果心跳超時,則通常將該實例從注冊server中刪除。

 

No application available 表示沒有服務被發現

因為我們還沒有注冊服務當然沒有發現服務啦,

 

 

2)創建一個服務提供者 (eureka client)

項目架構:

 

引入主項目:

 

<parent>
   <groupId>com.fsdm</groupId>
   <artifactId>SpringCloud_test1</artifactId>
   <version>1.0-SNAPSHOT</version>
</parent>

 

需要的jar以及組件:

 

<dependencies>
   <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-web</artifactId>
   </dependency>
</dependencies>

<build>
   <plugins>
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
   </plugins>
</build>

 

Application啟動類:

 

@SpringBootApplication
@EnableEurekaClient
@RestController
public class Demo2Application {

   public static void main(String[] args) {
      SpringApplication.run(Demo2Application.class, args);
   }

   @Value("${server.port}")
   String port;
   @RequestMapping("/hi")
   public String home(@RequestParam String name) {
      return "hi "+name+",i am from port:" +port;
   }


}

 

注解解析:

@EnableEurekaClient

1. 表明這是一個EurekaClient服務提供者

 

2. 基於spring-cloud-netflix,只能為eureka作用。

 

 

@RestController

1. 復合注解主要包括@Controller@ResponseBody

2. 標注controller層,可供url訪問

3. 無法返回jsp頁面,或者html,配置的視圖解InternalResourceViewResolver不起作用,返回的內容就是Return 里的內容。

 

yml配置:

 

server:
  port: 8762

spring:
  application:
#工程名稱
    name: service-hi

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

 

需要指明spring.application.name,這個很重要,這在以后的服務與服務之間相互調用一般都是根據這個name 。

 

 

啟動這個項目,刷新http://localhost:8761/

發現一個服務已經注冊在服務中了,服務名為SERVICE-HI ,端口為8762

你會發現一個服務已經注冊在服務中了,服務名為SERVICE-HI

關於紅色字體的警告解釋:

https://www.cnblogs.com/breath-taking/articles/7940364.html

 

訪問http://localhost:8762/hi?name=fsdm

 

 

                                        未完,待續。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM