当前位置: 移动技术网 > IT编程>开发语言>Java > SpringCloud(二):服务的注册与发现(Eureka)

SpringCloud(二):服务的注册与发现(Eureka)

2019年10月29日  | 移动技术网IT编程  | 我要评论
一、什么是服务注册与发现Spring Cloud Eureka 模块提供的功能是被动式的服务发现。 服务注册:每个用户去聊天室服务器上注册。 服务发现:这样他的好友们就能看到你,你同时也将获取好友的上线列表. 微服务中,服务就相当于聊天室的用户,而服务注册中心就像聊天室服务器一样。 目前服务发现的解 ...

一、什么是服务注册与发现
spring cloud eureka 模块提供的功能是被动式的服务发现。

服务注册:每个用户去聊天室服务器上注册。

服务发现:这样他的好友们就能看到你,你同时也将获取好友的上线列表.

微服务中,服务就相当于聊天室的用户,而服务注册中心就像聊天室服务器一样。

目前服务发现的解决方案有eureka,consul,zookeeper等等。springcloud默认使用eureka作为服务注册中心。

二、eureka使用过程

 

三、环境准备

为了简介,以后的文章都不会贴出所有的maven pom依赖,除非特殊说明,否则版本都是以下面的版本为准。

  • springboot 1.5.12.release
  • springcloud dalston.sr5

四、服务注册中心 eureka server

 

 

 

简单来说就是三步:

1.maven依赖  

2.注册中心配置 application.properties

3.enableeurekaserver服务类

pom依赖:

<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>
  <groupid>cn.demo</groupid>
  <artifactid>springcloud_one</artifactid>
  <version>0.0.1-snapshot</version>
<parent>
        <groupid>org.springframework.boot</groupid>
        <artifactid>spring-boot-starter-parent</artifactid>
        <version>1.5.12.release</version>
        <relativepath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceencoding>utf-8</project.build.sourceencoding>
        <project.reporting.outputencoding>utf-8</project.reporting.outputencoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>dalston.sr5</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupid>org.springframework.cloud</groupid>
            <artifactid>spring-cloud-starter-eureka-server</artifactid>
        </dependency>
        <dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-starter-web</artifactid>
        </dependency>
        
        <dependency>
            <groupid>org.springframework.cloud</groupid>
            <artifactid>spring-cloud-starter-eureka</artifactid>
        </dependency>
        <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>

    <build>
        <plugins>
            <plugin>
                <groupid>org.springframework.boot</groupid>
                <artifactid>spring-boot-maven-plugin</artifactid>
            </plugin>
        </plugins>
    </build>

</project>

2.注册中心配置 application.properties

## 该注册服务器的端口
server.port=8001

## 应用启动名称
spring.application.name=eureka-server

## eureka配置
## 注册服务器的名称
eureka.instance.hostname=localhost
## 在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为
## 是否从eureka服务器获取注册信息,所以这里是false
eureka.client.fetch-registry=false
## 是否注册自身到eureka服务器,因为当前这个应用就是eureka服务器,没必要注册自身,所以这里是false
eureka.client.register-with-eureka=false
## 服务发布的地址
eureka.client.service-url.defaultzone=http://${eureka.instance.hostname}:${server.port}/eureka/

3.  @enableeurekaserver:

import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
import org.springframework.cloud.netflix.eureka.server.enableeurekaserver;

@springbootapplication
@enableeurekaserver
public class eurekaapplication {

    public static void main(string[] args) {
        springapplication.run(eurekaapplication.class, args);
    }
}

 

启动访问:http://www.lhsxpumps.com/_localhost:8001 

可以看到application中no instances available,因为还没有任何服务注册。接下来我们写一个用户服务注册到eureka注册中心、

 

四、服务提供方 service provider

这里简单写一个服务项目,service_provider,为了看起来简单,接口也直接放在启动类里面。 

 

pom.xml :

<dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-starter-web</artifactid>
        </dependency>
        
        <dependency>
            <groupid>org.springframework.cloud</groupid>
            <artifactid>spring-cloud-starter-eureka</artifactid>
        </dependency>

application.properties:

## 该服务发布的端口
server.port=8011

## 注意这里是作为服务注册名称,在eureka注册中心注册这个名称,自动转化为全大写,之后调用服务用服务名调用
spring.application.name=user-service
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
## 注册服务中心的配置
eureka.client.service-url.defaultzone=http://localhost:8001/eureka/

启动类:

import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
import org.springframework.cloud.netflix.eureka.server.enableeurekaserver;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.restcontroller;

@springbootapplication
@enableeurekaserver
@restcontroller
public class helloserviceapplication {

    public static void main(string[] args) {
        springapplication.run(helloserviceapplication.class, args);
    }

    @requestmapping("hello")
    public string hello (string name) {
        return "hello, " + name;
    }
}

 

启动服务,然后继续查看eureka注册中心,刷新,查看变化,发现hello-service服务已经注册在注册中心:

测试用户服务:

http://www.lhsxpumps.com/_localhost:8011/hello?name=eureka

五、服务消费方

服务消费方式有resttemplate+ribbon以及feign,所以下章在讲如何消费注册中心的服务。

 

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网