Eureka注册中心(一)


title: SpringCloud学习总结一
date: 2020-06-09
categories:

  • Eureka注册中心
    tags:
  • SringCloud
  • Eureka注册中心

Eureka注册中心(一)

注册中心在微服务架构中是必不可少的一部分,主要用来实现服务治理功能。

注册中心带来的好处是你不需要知道有多少提供方,你只需要关注注册中心有多少服务即可。

1.Eureka
Spring Cloud Eureka是Spring Cloud Netflix微服务套件的一部分,主要实现服务治理功能。
2.使用Eureka编写注册中心服务
创建一个maven项目eureka,需要这些依赖:spring boot,eureka,spring cloud,代码如下:

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR5</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
            <version>2.3.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-commons</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </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>

在启动类上加上@EnableEurekaServer,开启Eureka Server
接着在application.properties属性文件增加以下配置:

# 设置spring应用命名,可以自定义,非必要
spring.application.name=eureka-server
# 设置Eureka Server WEB控制台端口,自定义
server.port=8761

eureka.instance.hostname=localhost

#是否将自己注册到Eureka-Server中,默认的为true
eureka.client.registerWithEureka=false
#是否从Eureka-Server中获取服务注册信息,默认为true
eureka.client.fetchRegistry=false

eureka.client.service-url.defaultZone=http://ctzeng:123456@localhost:8761/eureka/
#快速移除已经失效的服务信息
#关闭自我保护模式
eureka.server.enable-self-preservation=false
#默认60000毫秒
eureka.server.eviction-interval-timer-in-ms=5000
#开启认证
spring.security.basic.enable=true
#用户名
spring.security.user.name=ctzeng
#密码
spring.security.user.password=123456

3.编写服务提供者

3.1 创建项目注册到Eureka

注册中心建好并启动后,接下来将一个服务提供者service-provider注册到Eureka中,并提供一个接口给其他服务调用。

还是创建maven项目,写上相关依赖:

<properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR5</spring-cloud.version>
    </properties>

    <dependencies>

        <!-- https://mvnrepository.com/artifact/com.netflix.ribbon/ribbon -->
        <dependency>
            <groupId>com.netflix.ribbon</groupId>
            <artifactId>ribbon</artifactId>
            <version>2.7.18</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </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>

在启动类上加入@EnableDiscoveryClient,表示当前服务是一个Eureka的客户端。
接下来创建一个application.properties文件(创建springboot项目时直接包含的,接下来不在说创建,直接用),添加配置:

spring.application.name=service-provider
server.port=8081

#注册到注册中心去
eureka.client.service-url.defaul-zone=http://localhost:8761/eureka

启动服务,打开Eureka的Web控制台,就可以看到新注册的服务信息了。
3.2 编写提供接口

创建一个Controller,提供一个接口给其他服务查询:

@RestController
@RequestMapping("/provider")
public class ProviderController {

    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }
}

这时通过访问localhost:8081/provider/hello,如果能看到返回的hello字符串,证明接口提供成功了。
注意点

  • SpingCloud是依赖于SpringBoot,注意maven依赖版本问题,建议使用idea快捷创建SpringCloud项目
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值