springboot+springcloud微服务入门

肖镜泽      2022-05-18     175

关键词:

MicroService实现技术:

  用springBoot来创建单个服务,用SpringCloud来管理这些微服务。

  ##SpringCloud的五大神兽

  #1.注册/服务发现——Netflix Eureka
    管理服务器地址和ip的

  #2.客服端负载均衡——Netflix Ribbon\Feign
    服务请求的分配

  #3.断路器——Netflix Hystrix
    对有故障的服务进行处理

  #4.服务网关——Netflix Zuul
    微服务的统一入口。

  #5.分布式配置——Spring Cloud Config
    对微服务的配置文件做同一管理

SpringCloud入门步奏

  1.注册中心
    用于管理微服务的地址
    1.1当微服务可以解决注册的注册表(IP、端口、服务名称)

    1.2从每个微服务注册微服务地址清单

    1.3使用心跳机制微服务合同:每N秒发送一个请求到注册表,告诉注册表,

      我还活着,如果微服务挂,有心跳合同失败,

      注册表微服务地址列表,其他服务将更新地址列表

  2.用户管理微服务
  3.订单管理微服务

 

1.注册中心配置

  1.1先创建个普通的maven项目父级模块,

    在pom.xml里配置公用的jar包管理

    

<properties>
        <!--编码-->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <!--
   1.管理SpringBoot的jar包
   -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
    </parent>

    <!--
    2.管理spring-cloud的jar包
    -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <!--
        测试
    -->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

 1.2.创建注册中心 --项目名:eureka-server-1000

 在父级模块中创建个spring-boot项目,也是maven项目,

  但是要选中quickstart

  

 

 

 

  1.3在eureka-server-1000模块中的pom.xml添加依赖

  

<parent>
        <artifactId>spring-cloud-parent</artifactId>
        <groupId>spring-cloud-parent</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>eureka-server-1000</artifactId>

    <name>eureka-server-1000</name>



    <dependencies>
        <!--
            注册/服务发现的依赖
            有了它,才能获取到所有微服务的ip,端口,服务名
            有了它,其他的微服务才能获取到所有微服务的ip,端口,服务名清单
        -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <!--
            springboot-web的环境依赖
        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

 

  1.4再建个resources配置文件夹,

  在配置文件夹中建个application.yml文件

  在yml文件中添加

  

server:
  port: 1000 #端口号
eureka:
  instance:
    hostname: localhost #主机
  client:
    registerWithEureka: false #禁止注册中心向自己注册
    fetchRegistry: false #禁止注册中心拉取注册地址清单
    serviceUrl: #微服务向注册中心注册的地址
      defaultZone: http://localhost:1000/eureka/

 

  1.5在java中建个配置类添加

/**
 * @EnableEurekaServer
 * 启动注册中心,默认关闭
 */
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

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

}

  启动main方法可以看见页面

  在网页上输入http://localhost:1000/显示如下页面说明配置成功

 

 

 

2..用户管理微服务

  模块名:order-server-2000

  和创建注册模块一样但配置不一样

 

  2.1在pom.xml中添加依赖

  

<parent>
        <artifactId>spring-cloud-parent</artifactId>
        <groupId>spring-cloud-parent</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>order-server-2000</artifactId>

    <name>order-server-2000</name>



    <dependencies>
        <!--
            注册的微服务控制器
        -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--
            springboot的web环境配置
        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

    </dependencies>

  2.2在resources配置文件夹中新建个application.yml

  在yml中添加配置

  

eureka:
  client:
    serviceUrl: #指定注册中心的地址
      defaultZone: http://localhost:1000/eureka/
  instance: #是否显示ip地址
    prefer-ip-address: true
server: #端口号
  port: 2000
spring:
  application: #服务名
    name: orders-server
  cloud:
    discovery:
      client:
        simple:
          local:
            service-id: orders-server:2000 #显示的id

 2.3在java文件夹中建个

OrdersServerApplication.java
添加如下代码
@SpringBootApplication
@RestController
public class OrdersServerApplication {

    @RequestMapping("/")
    public String home() {
        return "Hello world";
    }

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

}

启动main方法可以看见页面

  在网页上输入http://localhost:2000/页面显示

  Hello world

  说明配置成功

  再重启动注册模块的main方法
  在网页上输入http://localhost:1000/页面显示如下就说明微服务配置成功
  

 

  3.订单管理微服务 

项目名:user-server-3000

和创建注册模块一样但配置不一样

 

3.1在pom.xml中添加依赖

<parent>
        <artifactId>spring-cloud-parent</artifactId>
        <groupId>spring-cloud-parent</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>user-server-3000</artifactId>

    <name>user-server-3000</name>



    <dependencies>
        <!--
            注册的微服务控制器
        -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <!--
            springboot的web环境配置
        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

    </dependencies>

3.2在resources配置文件夹中新建个application.yml

  在yml中添加配置

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:1000/eureka/
  instance:
    prefer-ip-address: true
server:
  port: 3000
spring:
  application:
    name: user-server
  cloud:
    discovery:
      client:
        simple:
          local:
            service-id: user-server:3000

 3.3在java文件夹中建个

OrdersServerApplication.java
添加如下代码

/**
 * @EnableEurekaClient
 * 启动微服务;
 * 默认开启
 */
@SpringBootApplication
@RestController
@EnableEurekaClient
public class UserServerApplication {

    @RequestMapping("/")
    public String home() {
        return "Hello world2";
    }

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

}

启动main方法可以看见页面

  在网页上输入http://localhost:3000/页面显示

  Hello world2

  说明配置成功

  再重启动注册模块的main方法
  在网页上输入http://localhost:1000/页面显示如下就说明微服务配置成功

 

 

 

 

  

springcloud

SpringCloud和SpringBoot关系SpringBoot专注于快捷方便的开发单个个体微服务SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供:配置管理,服务发现,断路... 查看详情

基于springcloud的微服务构建学习-2springboot

基于SpringCloud的微服务构建学习-2SpringBoot为什么使用SpringBoot而不是Spring  SpringBoot具有自动化配置,快速开发,轻松部署优点,非常适合用作微服务架构中各项具体微服务的开发框架。它不仅可以帮助我们快速的构建微服务,... 查看详情

devops架构师--07springboot与springcloud微服务项目交付

文章目录SpringCloud微服务项目交付微服务扫盲篇单体应用架构微服务应用架构微服务架构问题及挑战微服务框架了解SpringCloud核心项目及组件与Dubbo对比SpringBoot交付实践从零开始创建SpringBoot项目编写功能代码如何在java项目中使用... 查看详情

springcloud第一节

1.SpringCloud是什么?SpringCloud=分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶。2.SpringCloud和SpringBoot是什么关系?SpringBoot专注于快速方便的开发单个个体微服务。SpringCloud是关注全... 查看详情

springcloud:构建微服务-springboot

微服务的特点及构建遵循的原则约束:微服务遵循UNIX理念,即应用程序是服务的集合,每个服务只做一件事,并做好一件事。松耦合:基于微服务的应用程序是小型服务的集合,服务之间使用HTTP和REST通过非特定实现的接口彼此... 查看详情

springcloud从入门到进阶——使用springboot搭建微服务

内容  SpringBoot整合SpringCloud的Eureka、Zuul等组件,快速实现简单易懂且具有服务熔断、负载均衡的分布式架构1.0,体验微服务的魅力。版本  IDE:IDEA2017.2.2x64  JDK:1.8.0_171  manve:3.3.3  SpringBoot:1.5.9.RELEASE  SpringCloud... 查看详情

微服务,springboot,springcloud

什么是微服务  将复杂的业务系统根据业务拆分成多个子系统协同完成主体业务。微服务的九大特性(根据MartinFowler在Microservices中的归纳)  服务组件化(灵活拆装,低耦合)  按业务组织团队(分工驱动团队的技术知... 查看详情

java之springcloud微服务的开源配置中心apollo(第四个阶段)springboot项目实现商品服务器端调用(代码片段)

SpringCloud学习目录点击跳转对应的文章Java之SpringCloud微服务搭建(第一个阶段)【一】【SpringBoot项目实现商品服务器端是调用】Java之SpringCloud微服务Eureka(第一个阶段)【二】【SpringBoot项目实现商品服务器端是调... 查看详情

5.springcloud微服务架构搭建之《springboot集成hystrix》(代码片段)

1.springcloud微服务架构搭建之《springboot自动装配Redis》2.springcloud微服务架构搭建之《springboot集成nacos注册中心》3.springcloud微服务架构搭建之《springboot自动装配ribbon》4.springcloud微服务架构搭建之《springboot集成openFeign》目录1.项目... 查看详情

《springcloud从入门到入土》第二章:微服务构建:springboot

...简介  本节主要简单介绍一下SpringBoot:除了它是SpringCloud的基础之外,也由于自身的各项优点,如自动配置、快速开发、轻松部署等,非常适合作为微服务架构中各项具体服务的构建单元。  SpringBoot除了解决配置... 查看详情

java之springcloud微服务eureka(第一个阶段)springboot项目实现商品服务器端是调用

SpringCloud学习目录点击跳转对应的文章Java之SpringCloud微服务搭建(第一个阶段)【一】【SpringBoot项目实现商品服务器端是调用】Java之SpringCloud微服务Eureka(第一个阶段)【二】【SpringBoot项目实现商品服务器端是调... 查看详情

微服务框架之springcloud简介

参考技术A在了解SpringCloud之前先了解一下微服务架构需要考量的核心关键点,如下图:对于以上等核心关键点的处理,不需要我们重复造车轮,SpringCloud已经帮我们集成了,它使用SpringBoot风格将一些比较成熟的微服务框架组合起... 查看详情

springcloud导入一个新的springboot项目作为springcloud的一个子模块微服务,怎么做/或者每次导入一个新的springboot项目,idea不识别子module(代(代码片段

如题:导入一个新的springboot项目作为springcloud的一个子模块微服务,怎么做或者说每次导入一个新的springboot项目,IDEA不识别,启动类无法启动,怎么解决下面一起来走一遍这个流程:1.将一个springboot服务导入springcloud中作为一... 查看详情

javacloud微服务项目实战springboot2.x+springcloud

课程目录第1章课程介绍课程导学和学习建议1-1SpringCloud导学1-2获取源码说明1-3提问建议1-4点餐项目演示说明第2章微服务介绍什么是微服务,单体架构优缺点,常见的几种架构模式。2-1微服务和其他常见架构2-2从一个极简的微服务架... 查看详情

java之springcloud微服务搭建consul(第一个阶段)springboot项目实现商品服务器端是调用(代码片段)

SpringCloud学习目录点击跳转对应的文章Java之SpringCloud微服务搭建(第一个阶段)【一】【SpringBoot项目实现商品服务器端是调用】Java之SpringCloud微服务Eureka(第一个阶段)【二】【SpringBoot项目实现商品服务器端是调... 查看详情

springcloud微服务

SpringCloud简介    SpringCloud是一系列框架的有序集合。它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的开发... 查看详情

springboot和springcloud?

...件繁杂的基于Maven的解决方案,旨在快速搭建单个微服务而SpringCloud专注于解决各个微服务之间的协调与配置,服务之间的通信,熔断,负载均衡等技术维度并相同,并且SpringCloud是依赖于SpringBoot的,而SpringBoot并不是依赖与SpringCloud,甚至... 查看详情

maven聚合工程用springboot搭建springcloud微服务模块式开发项目

项目的简单介绍:项目采用maven聚合工程用springboot搭建springcloud的微服务 模块式开发项目的截图: 搭建开始:能上图我少打字1.首先搭建maven的聚合工程  1.1创建聚合工程的父模块           1.2设置父模块的... 查看详情