(一).SpringCloud 从入门到放弃Eureka注册中心入门

文章目录

      • 初识SpringCloud
        • 什么是springcloud
        • springcloud的项目模块
        • Eureka简介
        • Eureka入门案例
          • 创建一个普通的springboot工程
          • maven依赖如
          • 配置我们的启动类
          • 配置我们的配置文件
          • 配置文件详解
        • 测试
        • 注册服务
          • 创建一个服务
            • 解决问题
        • 总结

初识SpringCloud

什么是springcloud

1.springcloud是spring官方开发维护的,基于springboot开发,提供一套完整的微服务解决方案.
2.包括服务注册与发现,配置中心,全链路监控,API网关,熔断器等选型中立的开源组件,可以随需扩展和替换组装

springcloud的项目模块

组件名称 所属项目 组件分类
Eureka spring-cloud-netflix 注册中心
zuul spring-cloud-netflix 第一代网关
Sidecar spring-cloud-netflix 多语言
Hystrix spring-cloud-netflix 负载均衡
Turbine spring-cloud-netflix 熔断器
Eureka spring-cloud-netflix 集群监控
Feign spring-cloud-openfeign 声明式HTTP客户端
Consul spring-cloud-consul 注册中心
Gateway spring-cloud-gateway 第二代网关
Sleuth spring-cloud-sleuth 链路追踪
Config spring-cloud-config 配置中心
Bus spring-cloud-bus 消息总线
Pipeline spring-cloud-pipeline 部署管道
Dataflow spring-cloud-dataflow 数据处理

Eureka简介

Eureka是netflix公司开源的一款服务发现组件,该组件提供的服务发现可以为负载均衡,failover等提供支持
Eureka包括Eureka Server和Eureka Client
Eureka Server提供REST服务,而Eureka Client则是使用java编写的客户端,用于简化与Eureka Server的交互

Eureka入门案例

创建一个普通的springboot工程

这里就不创建父工程了,我始终觉得这样有违微服务的初衷,选择依赖如下
(一).SpringCloud 从入门到放弃Eureka注册中心入门_第1张图片

maven依赖如

cloud版本就选择格林威治(Greenwich.SR1)了,springboot我们选择最新版的2.1.4发行版
一是我觉得这个读起来顺口,
二是该版本对应的springboot版本为2.x


<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.0modelVersion>
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.1.4.RELEASEversion>
        <relativePath/> 
    parent>
    <groupId>org.apdoergroupId>
    <artifactId>eurekaartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>eurekaname>
    <description>Demo project for Spring Bootdescription>

    <properties>
        <java.version>1.8java.version>
        <spring-cloud.version>Greenwich.SR1spring-cloud.version>
    properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
            <version>2.1.1.RELEASEversion>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <version>1.18.6version>
        dependency>
    dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-dependenciesartifactId>
                <version>${spring-cloud.version}version>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>
project>
配置我们的启动类
@SpringBootApplication
@EnableEurekaServer 
public class EurekaApplication {

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

}

@EnableEurekaServer表示应用为eureka server端

配置我们的配置文件
server:
  port: 10086
eureka:
  instance:
    hostname: localhost
  client:
    fetch-registry: false
    register-with-eureka: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

配置文件详解

这里我将properties配置文件改成了yml
server.port : 启动的端口号,没什么好说的
eureka.instance.hostname : 设置该eureka服务注册中心的hostname,如果你想配成自定义的,需要去配置本地域名映射
eureka.client.register-with-eureka : 是否在注册中心中注册自己,当前的注册中心也是一个springboot项目,默认为true,false为不注册自己
eureka.client.fetch-registry : 表示不去检索其他服务,注册中心的职责是维护服务实例,不需要检索其他服务,当然,你也可以设置成true

测试

访问localhost:10086,可以看到 注册中心已经启动成功了,但是目前没有应用注册上来
(一).SpringCloud 从入门到放弃Eureka注册中心入门_第2张图片

注册服务

搭建好注册中心后,我们可以尝试在注册中心注册一个服务

创建一个服务
  • 新建springboot工程,添加依赖如下
    (一).SpringCloud 从入门到放弃Eureka注册中心入门_第3张图片
  • 启动类我们加上开启服务发现@EnableDiscoveryClient
@SpringBootApplication
@EnableDiscoveryClient
public class Server1Application {

    public static void main(String[] args) {
        SpringApplication.run(Server1Application.class, args);
    }
}
  • 配置文件如下
spring:
  application:
    name: server_one
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10086/eureka

配置文件很简单
spring.application.name : 定义服务名,这里最好指定以下名称,不然在eureka server界面会显示为unknown
eureka.client.service-url.defaultZone : 注册中心地址

  • 然后我们启动项目,果然出问题了,项目启动不了,是不是看不出来哪里有问题
解决问题
  • 我们加上web的依赖
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
            <version>2.1.4.RELEASEversion>
        dependency>
  • 再启动项目和注册中心访问localhost:10086
    (一).SpringCloud 从入门到放弃Eureka注册中心入门_第4张图片
  • 我们也可以访问 eureka server的 rest api接口,比如http://localhost:10086/eureka/apps 返回如下结果
    (一).SpringCloud 从入门到放弃Eureka注册中心入门_第5张图片
    注册成功!!!

总结

到这里,我们的简易注册中心就搭建好了,并且也有一个实例service-one注册上去了
但是这个注册中心只是一个学习版,并不能用于生产环境,
如同zookeeper一样,注册中心在项目中的作用非常重要,一旦挂掉整个服务就瘫痪了,我们将在后面介绍如何搭建高可用注册中心
本章代码在git地址 链接

你可能感兴趣的:(springcloud)