SpringCloud 学习笔记(一)

SpringCloud 学习笔记(一)spring

1.基本概念

Spring Cloud并非一个具体的框架,你们能够把它理解为一个工具箱,它提供的各种工具,能够帮助咱们快速的构建分布式系统。apache

基于SpringBoot框架。服务器

2.组成部分

2.1 Spring Cloud Netflix 模块

将Netflix的多个框架进行封装,而且经过自动配置的方式将这些框架绑定到Spring的环境中,从而简化了这些框架的使用。网络

  • Eureka:基于REST服务的分布式中间件,主要用于服务管理。
  • Hystrix:容错框架,经过添加延迟阀值以及容错的逻辑,来帮助咱们控制分布式系统间组件的交互。
  • Feign:一个REST客户端,目的是为了简化Web Service客户端的开发
  • Ribbon:负载均衡框架,在微服务集群中为各个客户端的通讯提供支持,它主要实现中间层应用程序的负载均衡
  • Zuul:为微服务集群提供过代理、过滤、路由等功能。

2.2 Spring Cloud Config 模块

为分布式系统提供了配置服务器和配置客户端,经过对它们的配置,能够很好的管理集群中的配置文件。架构

2.3 Spring Cloud Sleuth 模块

服务跟踪框架,能够与Zipkin、Apache HTrace和ELK等数据分析、服务跟踪系统进行整合,为服务跟踪、解决问题提供了便利。负载均衡

2.4 Spring Cloud Stream 模块

用于构建消息驱动微服务的框架,该框架在Spring Boot的基础上,整合了“Spring Integration”来链接消息代理中间件。框架

2.5 Spring Cloud Bus 模块

链接RabbitMQ、Kafka等消息代理的集群消息总线。maven

等等分布式

3.搭建环境

编译工具:maven微服务

开发工具:IDEA

3.1 maven依赖

pom.xml

<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.0</modelVersion>
	
    ...

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Edgware.SR5</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

    <dependencies>
        
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

    </dependencies>


</project>

3.2 Eureka服务

Eureka提供基于REST的服务,在集群中主要用于服务管理。

一个简单的Eureka集群,须要有一个Eureka服务器、若干个服务提供者。咱们能够将业务组件注册到Eureka服务器中,其余客户端组件能够向服务器获取服务而且进行远程调用。

角色:Eureka服务器、Eureka客户端(服务提供者)、Eureka客户端(服务消费者)

  • 服务器端 对于注册到服务器端的服务组件,Eureka服务器并无提供后台的存储,这些注册的服务实例被保存在内存的注册中心,它们经过心跳来保持其最新状态,这些操做均可以在内存中完成。客户端存在着相同的机制,一样在内存中保存了注册表信息,这样的机制提高了Eureka组件的性能,每次服务的请求都没必要通过服务器端的注册中心。

  • 服务提供者 做为Eureka客户端存在的服务提供者,主要进行如下工做:第1、向服务器注册服务;第2、发送心跳给服务器;第3、向服务器端获取注册列表。当客户端注册到服务器时,它将会提供一些关于它本身的信息给服务器端,例如本身的主机、端口、健康检测链接等。

  • 服务调用者 对于发布到Eureka服务器的服务,使用调用者可对其进行服务查找与调用,服务调用者也是做为客户端存在,但其职责主要是发现与调用服务。在实际状况中,有可能出现自己既是服务提供者,也是服务调用者的状况,例如传统的企业应用三层架构中,服务层会调用数据访问层的接口进行数据操做,它自己也会提供服务给控制层使用。

3.2.1 maven依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>

3.2.2 eureka服务端

Eureka服务器支持集群部署,每一个Eureka服务器也能够做为Eureka客户端进行相互注册与复制。

3.3 Ribbon服务

负载均衡框架Ribbon;

Ribbon是Netflix下的负载均衡项目,它在集群中为各个客户端的通讯提供了支持,它主要实现中间层应用程序的负载均衡。Ribbon提供如下特性:

  • 负载均衡器,可支持插拔式的负载均衡规则。
  • 对多种协议提供支持,例如HTTP、TCP、UDP。
  • 集成了负载均衡功能的客户端。

Ribbon主要有如下三大子模块:

  • ribbon-core:该模块为Ribbon项目的核心,主要包括负载均衡器接口定义、客户端接口定义,内置的负载均衡实现等API。-
  • ribbon-eureka:为Eureka客户端提供的负载均衡实现类。-
  • ribbon-httpclient:对Apache的HttpClient进行封装,该模块提供了含有负载均衡功能的REST客户端。

Ribbon的负载均衡器主要与集群中的各个服务器进行通讯,负载均衡器须要提供如下基础功能:

  • 维护服务器的IP、DNS名称等信息。-
  • 根据特定的逻辑在服务器列表中循环。

为了实现负载均衡的基础功能,Ribbon的负载均衡器有如下三大子模块:

  • Rule:一个逻辑组件,这些逻辑将会决定,从服务器列表中返回哪一个服务器实例。-
  • Ping:该组件主要使用定时器,来确保服务器网络能够链接。-
  • ServerList:服务器列表,能够经过静态的配置肯定负载的服务器,也能够动态指定服务器列表。若是动态指定服务器列表,则会有后台的线程来刷新该列表。

3.3.1 maven依赖

<dependency>
    <groupId>com.netflix.ribbon</groupId>
    <artifactId>ribbon</artifactId>
    <version>2.2.2</version>
</dependency>
<dependency>
    <groupId>com.netflix.ribbon</groupId>
    <artifactId>ribbon-httpclient</artifactId>
    <version>2.2.2</version>
</dependency>
相关文章
相关标签/搜索