SpringCloud—服務治理和註冊中心開發

註冊基本概念

爲何須要有註冊中心?spring

對系統架構中全部的模塊進行管理。apache

服務少的時候咱們經過配置很容易作到不一樣服務之間的管理調用,當服務不少的時候,集羣規模,服務的位置,命名都會常常發生變化,那麼人工維護就很麻煩,爲了解決這個問題,使用了服務的註冊中心機制。bash

註冊中心的基本概念架構

  1. 服務治理 Eureka 統一管理 實現服務的自動化註冊和發現maven

    1. 註冊中心 server
    2. 服務的調用者 消費者 client
    3. 服務的提供者 client
    4. 互相調用 因此消費者也是生產者
  2. 服務註冊spring-boot

    任何服務的第一步就是服務註冊fetch

    當client向server註冊時,它會提供一些元數據,例如主機和端口,URL,主頁等ui

  3. 服務發現url

    Eureka server 從每一個client實例接收心跳消息。 若是心跳超時,則一般將該實例從註冊server中刪除spa

開發註冊中心

首先建立一個父級項目
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <groupId>com.baizhi</groupId>
    <artifactId>springcloud</artifactId>
    <version>1.0-SNAPSHOT</version>

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

    <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>

    <!--SpringCloud倉庫地址-->
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
	
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
複製代碼
建立子級項目做爲註冊中心

導入依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <parent>
      <groupId>com.baizhi</groupId>
      <artifactId>springcloud</artifactId>
      <version>1.0-SNAPSHOT</version>
   </parent>

   <artifactId>eureka-server</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>eureka-server</name>
   <description>Demo project for Spring Boot</description>

   <dependencies>
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
      </dependency>
   </dependencies>
</project>
複製代碼

配置啓動類

經過@EnableEurekaServer註解把項目變成註冊中心

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

}
複製代碼

配置文件

server:
  port: 8801
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  instance:
    hostname: localhost
複製代碼

經過eureka.client.registerWithEureka:false和fetchRegistry:false來代表本身是一個eureka server。由於該項目自己註冊中心,不須要向任何服務註冊。

啓動項目 查看註冊中心監控頁面

啓動項目 訪問http://localhost:8801/ 能夠看到監控頁面

相關文章
相關標籤/搜索