springcloud

一 什么是SpringCloud?

Author:呆萌老师 QQ:2398779723 微信:it_daimeng

Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案,是若干个框架的集合。

Spring Cloud为微服务架构开发涉及的配置管理,服务治理,熔断机制,智能路由,微代理,控制总线,一次性token,全局一致性锁,leader选举,分布式session,集群状态管理等操作提供了一种简单的开发方式。

Spring Cloud 为开发者提供了快速构建分布式系统的工具,开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。

二 SpringCloud结构

SpringCloud包含了很多子项目:

在这里插入图片描述

  • Spring Cloud Config:配置管理工具,支持使用Git存储配置内容,支持应用配置的外部化存储,支持客户端配置信息刷新、加解密配置内容等

  • Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。

  • Spring Cloud Netflix:针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。

    ​ Netflix Eureka:一个基于rest服务的服务治理组件,包括服务注册中心、服务注册与服务发现机制的实现,实现了云端负载均衡和中间层服务器的故障转移。

    ​ Netflix Hystrix:容错管理工具,实现断路器模式,通过控制服务的节点,从而对延迟和故障提供更强大的容错能力。

    ​ Netflix Ribbon:客户端负载均衡的服务调用组件。

    ​ Netflix Feign:基于Ribbon和Hystrix的声明式服务调用组件。

    ​ Netflix Zuul:微服务网关,提供动态路由,访问过滤等服务。

    ​ Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。

  • Spring Cloud for Cloud Foundry:通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。

  • Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。

  • Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。

  • Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。

  • Spring Cloud Consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。

  • Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。

  • Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。

  • Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。

二 服务的注册与发现–Eureka

1.Eureka介绍

Eureka是spring cloud中的一个负责服务注册与发现的组件。

一个Eureka中分为eureka server和eureka client。其中eureka server是作为服务的注册与发现中心。eureka client既可以作为服务的生产者(服务注册),又可以作为服务的消费者(服务发现)。

如图所示:

在这里插入图片描述

基本原理:

服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。

2.Eureka服务注册和发现

Eureka使用需要服务器端和客户端,他们都需要使用到SpringCloud版本,所以这里我们使用maven父子工程来处理。

2.1 创建父工程

创建一个最简单的SpringBoot项目

在这里插入图片描述

修改pom.xml文件

添加版本管理器,添加SpringCloud版本,子项目里就不用设置版本号了,将pom文件中的dependencies和build删除,只需要这些:

<!-- springcloud版本 只是对版本进行管理,不会实际引入jar -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2020.0.3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

修改packaging的类型为pom,代表父工程只有pom文件

<!-- 父类型都为pom类型 -->
<packaging>pom</packaging>

父工程中的src等文件夹也可以删除

2.2 创建Eureka的服务器端

在父工程上右键->new Module–>选择maven–>next
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

输入子工程的名字

在pom文件中添加jar包

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值