辛星Spring Cloud 教程第一篇:基于Eureka的服务注册

服务注册与发现

对于微服务来说,最常被提及的两个概念就是服务注册和服务发现。所谓服务注册,就是把一个服务的基本信息注册到注册中心。所谓服务发现,就是从注册中心获取到服务的基本信息。
注册中心的实现有很多,比如zookeeper、consul、eureka、etcd等,当然还有人使用redis、mysql等作为服务注册中心,个人不推荐使用数据库和内存数据库等产品。
具体使用哪个,其实也没有一个标准答案,因为就实际情况来看,使用哪个的都有,也没有说哪一个产品绝对优于其他产品,通常是在某些场景下更好。但是Spring Cloud推荐我们使用
这些基本信息通常会包含ip地址,或者还会包含端口号和其他信息,根据服务的实现会有所区别。对于rpc等长连接来说,特别是一个端口提供一个类的服务时,端口号通常是必须的。对于短连接来说,端口号通常是可选的。
需要说明的是,Sping Cloud给的解决方案是基于http(s)的方案,这个后面我们会更加清楚这一点。

开始实战

我们本小节主要介绍服务注册,我们在下一节会介绍服务发现。
接下来我们的动作主要分为两个,第一个是创建搭建一个注册中心,它接受服务的注册,第二个则是我们去构建一个微服务,它向注册中心进行注册。
首先我们先建立一个项目,这里我们是基于maven去构建的,我们的group名不妨叫做: com.mengzhidu.java.demo,它的artifactId不妨叫做sc-demo。

然后我们新建两个子模块:
(1).eureka-server,它用来作为注册中心。
(2).user-service,它用来作为用户服务。

此时我们的基本的项目骨架如下所示:

在这里插入图片描述

然后我们的pom.xml如下所示:

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

    <groupId>com.mengzhidu.java.demo</groupId>
    <artifactId>sc-demo</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>eureka-server</module>
        <module>user-service</module>
    </modules>

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

    <properties>
        <spring-cloud.version>Dalston.SR1</spring-cloud.version>
    </properties>

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

</project>

这里它引入了springboot作为parent,然后它引入了spring cloud的基本依赖。
接下来我们就来分别构建注册中心和一个具体的服务吧。

注册中心

我们开始编写eureka-server这个子模块吧,我们首先在pom.xml中引入如下依赖:

<?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">
    <parent>
        <artifactId>sc-demo</artifactId>
        <groupId>com.mengzhidu.java.demo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>eureka-server</artifactId>

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

</project>

这里我们引入了spring-cloud-starter-eureka-server,它是作为服务端的依赖,然后我们来编写一个启动类吧。
我们在我们的目录下创建一个EurekaServerApplication,然后我们写入如下代码:

package com.mengzhidu.java.demo.scdemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

/**
 * Created by xinxing on 2019/1/14
 */
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

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

然后我们新建一个application.yml文件,我们写入如下配置项:

server:
  port: 8761
  
eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
        defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka

这里简单介绍下上述配置:
(1).server.port表示监听8761端口。
(2).eureka.client.register-with-eureka为false则表示不注册自己。
(3).eureka.client.fetch-registry为false则表示不做服务检索。
(4).eureka.client.service-url.defaultZone是一个默认的注册中心地址。
此时我们的结构如下所示:
在这里插入图片描述

然后我们运行main方法启动程序,待程序起来之后,我们访问8761端口,我们会看到如下信息:
在这里插入图片描述
其中红色箭头指向的地方会显示服务注册的列表,因为我们这里还没有注册服务,所以这里为空。

服务注册

然后我们向注册中心来注册一个服务吧,首先我们在pom.xml中导入如下依赖:

<?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">
    <parent>
        <artifactId>sc-demo</artifactId>
        <groupId>com.mengzhidu.java.demo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>user-service</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

</project>

然后我们编写启动类,如下所示:

package com.mengzhidu.java.demo.scdemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

/**
 * Created by xinxing on 2019/1/14
 */
@SpringBootApplication
@EnableEurekaClient
public class UserServiceApplication {

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

然后我们来配置application.yml文件吧,如下所示:

eureka:
  client:
    service-url:
        defaultZone: http://localhost:8761/eureka

server:
  port: 9001

spring:
  application:
    name: user-service

这里我们简单介绍下配置文件吧:
(1).server.port是这里监听的端口。
(2).spring.application.name是当前服务的名称。
(3).eureka.client.service-url.defaultZone则是注册中心的地址。

然后我们启动当前的微服务,我们可以看到,它被注册到了注册中心,如下所示:
在这里插入图片描述
可以看到,我们的status中显示了我们当前服务的状态,在192.168.1.103这个ip下面,9001端口是可用状态,而它是为user-service这个服务提供支持的。

小节

对于服务注册,我们本小节就介绍到这里啦。我们下一小节的任务是介绍服务发现。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值