spring Cloud

Spring Cloud作为Java领域的微服务框架,结合Spring Boot提供了强大的服务治理功能。本文详细介绍了Spring Cloud的集成框架,如Eureka、Zuul、Ribbon、Feign和Hystrix等,并通过创建项目、注册中心、服务调用来演示其实战应用。文中还探讨了Eureka的高可用、负载均衡策略和熔断机制,以及Feign的远程调用和Zuul的网关功能。
摘要由CSDN通过智能技术生成

初始springCloud

  • 后台硬:作为spring家族的一员,有整个spring全家桶靠山,背景十分强大
  • 技术强:spring作为java领域的前辈,可以说是功力深厚,有强力的技术团队支撑
  • 群众基础好:大多数程序员的成长都伴随着spring框架,springCloud与spring的各个框架无缝整合
  • 使用方便:springCloud完全支持springBoot的开发,用很少的配置就能完成微服务框架的搭建
  • springCloud将现在非常流行的一些技术整合到一起,实现了诸如:配置管理,服务发现,智能路由,负载均衡,熔断器,控制总线,集群状态等等功能
  • 官网

主要集成框架

Netflix(国外影视公司)

  • Eureka:注册中心
  • Zuul:服务网关
  • Ribbon:负载均衡
  • Feign:服务调用
  • Hystix:熔断器

spring Cloud项目

idea

创建父工程

一般父工程只负责包的版本

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath/>
    </parent>
    <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>
        <mapper.starter.version>2.0.3</mapper.starter.version>
        <mysql.version>5.1.32</mysql.version>
        <pageHelper.starter.version>1.2.5</pageHelper.starter.version>
        <leyou.latest.version>1.0.0-SNAPSHOT</leyou.latest.version>
        <fastDFS.client.version>1.26.1-RELEASE</fastDFS.client.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!--springCloud-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--通用mapper-->
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper-spring-boot-starter</artifactId>
                <version>${mapper.starter.version}s</version>
            </dependency>
            <!--分页助手-->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>${pageHelper.starter.version}</version>
            </dependency>
            <!--mysql驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!--fastDFS客户端-->
            <dependency>
                <groupId>com.github.tobato</groupId>
                <artifactId>fastdfs-client</artifactId>
                <version>${fastDFS.client.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
        </dependency>
        <dependency>
            <groupId>com.github.tobato</groupId>
            <artifactId>fastdfs-client</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

创建子工程步骤

右键项目=>new =>module=>选择springBoot工厂
目录 一定要在父工程里面
例如

父工程项目路径
D:\java\project\springClouddemo1
子工程项目路径
D:\java\project\springClouddemo1\userservice

创建子工程(功能)

写一个有返回值的功能

创建子工程(调用)

使用RestTemplate调用 子工程(功能)

存在问题

  • 在调用方吧url写死,后期不便于维护
  • 如果功能方路径出现变化,调用方地址失效
  • 调用方不知道功能方是否开启(是否处于工作状态)
  • 功能方只有一台服务不具备高可用性
  • 即使功能方形成集群,调用方还需实现负载均衡

以上问题概括

  • 服务管理
    • 如何自动注册和发现
  • 如何实现状态监管
  • 如何实现动态路由
  • 服务如何实现负载均衡
  • 服务如何解决荣灾文件
  • 服务如何实现统一配置

入门案例

Eureka 注册中心

所有子项目都在Eureka注册,调用者需要调用更能是让Eureka去找功能完成调用

  • Eureka:就是注册中心(可以是一个集群),对外暴露自己的地址
  • 提供者(功能):启动后向Eureka注册自己
  • 消费者(调用):向Eureka订阅服务,Eureka会将对应服务的所有提供地址列表发送给消费者,并且定期更新
  • 心跳(续约):提供者定期通过http方式向Eureka刷新自己的状态
  • 原理
    在这里插入图片描述

创建Eureaka注册中心

创建maven或者springBoot项目

  1. 导入依赖

    
    <parent>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-parent</artifactId>
    	<version>2.0.1.RELEASE</version>
    	<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值