阅读 8

SpringCloud—服务治理和注册中心开发

注册基本概念

为什么需要有注册中心?

对系统架构中所有的模块进行管理。

服务少的时候我们通过配置很容易做到不同服务之间的管理调用,当服务很多的时候,集群规模,服务的位置,命名都会经常发生变化,那么人工维护就很麻烦,为了解决这个问题,使用了服务的注册中心机制。

注册中心的基本概念

  1. 服务治理 Eureka 统一管理 实现服务的自动化注册和发现

    1. 注册中心 server
    2. 服务的调用者 消费者 client
    3. 服务的提供者 client
    4. 互相调用 所以消费者也是生产者
  2. 服务注册

    任何服务的第一步就是服务注册

    当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等

  3. 服务发现

    Eureka server 从每个client实例接收心跳消息。 如果心跳超时,则通常将该实例从注册server中删除

开发注册中心

首先创建一个父级项目
<?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/ 可以看到监控页面

关注下面的标签,发现更多相似文章
评论