SpringCloud介绍及入门一

springcloud是什么

基于spring boot实现的服务治理工具包,管理和协微服务java

把别人的东西拿来组合在一块儿,造成各类组件web

微服务协调者【service registtry注册中心 Eureka】--统一的网关【api gateway-zuul】spring

负载均衡【ribbon】--分布式配置 【config】-断路器【hystrix】api

服务者--消费者 都向Eureka注册中心去注册,一个负责生产,一个负责消费springboot

idea 如何建立多个模块 。

和eclipse有点区别,建立maven项目服务器

1560645685703

1560645747856

看下项目结构架构

1560645856922

和eclipse中的workspace同样。app

1.建立EurekaServer

1560646031234

带个端口明确一下。负载均衡

2.建立生产者和消者共用的接口

1560646255153

3.建立服务提供者

1560646364005

4.建立服务消费者

1560646472608

如今的项目架构

1560646574203

开始配置

想让项目中的四个模块 都拥有spring boot

让四个模块继承一个父亲 。在总项目的pom.xml中添加spring boot ,这个下面的四个模块都会继承eclipse

总项目的pom.xml

${spring-cloud.version} 是一个变量,要定义在properties中。

如下代码是引入spring cloud.

必定要注意版本是否正确。我在这里就入了一个大坑 。

先开始定义的spring-cloud.version写成了 spring-cloud.verison,致使cloud怎么也导入不进来

费了很大功夫才发现。

<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>Finchley.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>
springboot 与springcoud 的版本选择

这里要注意springboot 与springcoud 的版本的匹配,能够参考:

https://spring.io/projects/spring-cloud

springboot的最新版 ,springcloud不必定就支持,要看对应关系 。

这里有一位同窗写的踩坑旅程,有兴趣的能够参考一下。少走一些弯路

https://blog.51cto.com/honly/2156583?source=dra

如下图中能够看到。srpingboot 2.0开 头的版本,要用springcloud的Finchley来适配

Finchley 又分为 Release ,SR1-SR4 . 选择本身须要的就能够。 好比Finchley Release 或者Finchley SR1

1560695281495

如下网址是springcloud maven中面仓库的地址

https://repo1.maven.org/maven2/org/springframework/cloud/spring-cloud-dependencies/

能够看到Finchley.Release是Finchley最新发布的一个版本,以后才有sr1-4

而后是Greenwich.Releash版本,这个是针对springboot 2.1.x版本作的适配

1560696078500

每一个版本都有针对的说明 : 好比

finchley.Release的官方说明:https://spring.io/blog/2018/06/19/spring-cloud-finchley-release-is-available

中文说明 参考:https://www.oschina.net/news/97226/spring-cloud-finchley-released

显著变化:

  • 与 Spring Boot 2.0.x 兼容
  • 不支持 Spring Boot 1.5.x
  • 最低要求 Java 8
  • 新增 Spring Cloud Function 和 Spring Cloud Gateway

如下代码是表示全部的模块都继承springboot

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

若是表示模块继承了,在模块的pom.xml中

//<artifactId>microservice_paent</artifactId> 表示继承了父类
<parent>
        <artifactId>microservice_paent</artifactId>
        <groupId>com.project</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

Eureka注册中心的pom.xml

添加springboot ,spring.cloud的依赖。

<dependencies>
        <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-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

Eureka注册的配置

在src->main->resources中添加 application.yml.指定服务器端口号,同时配置 Eureka的配置

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

在src->main->java中添加新类。

这些相似于单项目 springboot项目的建立。

这里若是@EnableEurekaServer不出现智能提示,或者明显有错误,须要去检查springcloud是否导入 进来

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

@SpringBootApplication
@EnableEurekaServer
public class EurekaServiceApplication {
    public static void main(String[] args) {

        SpringBootApplication.run(EurekaServiceApplication.class,args);
    }
}

也能够去检查依赖的包里是否有cloud的字样,好比下图,若是没有,检查配置 pom.xml确保springcloud导入进来再进行操做。

1560696681305

下面就会有区别了。请等下一篇 ,今天有几个坑入的比较深

相关文章
相关标签/搜索