SpringCloud 学习笔记(一)spring
Spring Cloud并非一个具体的框架,你们能够把它理解为一个工具箱,它提供的各种工具,能够帮助咱们快速的构建分布式系统。apache
基于SpringBoot框架。服务器
将Netflix的多个框架进行封装,而且经过自动配置的方式将这些框架绑定到Spring的环境中,从而简化了这些框架的使用。网络
为分布式系统提供了配置服务器和配置客户端,经过对它们的配置,能够很好的管理集群中的配置文件。架构
服务跟踪框架,能够与Zipkin、Apache HTrace和ELK等数据分析、服务跟踪系统进行整合,为服务跟踪、解决问题提供了便利。负载均衡
用于构建消息驱动微服务的框架,该框架在Spring Boot的基础上,整合了“Spring Integration”来链接消息代理中间件。框架
链接RabbitMQ、Kafka等消息代理的集群消息总线。maven
等等分布式
编译工具:maven微服务
开发工具:IDEA
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>
Eureka提供基于REST的服务,在集群中主要用于服务管理。
一个简单的Eureka集群,须要有一个Eureka服务器、若干个服务提供者。咱们能够将业务组件注册到Eureka服务器中,其余客户端组件能够向服务器获取服务而且进行远程调用。
角色:Eureka服务器、Eureka客户端(服务提供者)、Eureka客户端(服务消费者)
服务器端 对于注册到服务器端的服务组件,Eureka服务器并无提供后台的存储,这些注册的服务实例被保存在内存的注册中心,它们经过心跳来保持其最新状态,这些操做均可以在内存中完成。客户端存在着相同的机制,一样在内存中保存了注册表信息,这样的机制提高了Eureka组件的性能,每次服务的请求都没必要通过服务器端的注册中心。
服务提供者 做为Eureka客户端存在的服务提供者,主要进行如下工做:第1、向服务器注册服务;第2、发送心跳给服务器;第3、向服务器端获取注册列表。当客户端注册到服务器时,它将会提供一些关于它本身的信息给服务器端,例如本身的主机、端口、健康检测链接等。
服务调用者 对于发布到Eureka服务器的服务,使用调用者可对其进行服务查找与调用,服务调用者也是做为客户端存在,但其职责主要是发现与调用服务。在实际状况中,有可能出现自己既是服务提供者,也是服务调用者的状况,例如传统的企业应用三层架构中,服务层会调用数据访问层的接口进行数据操做,它自己也会提供服务给控制层使用。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
Eureka服务器支持集群部署,每一个Eureka服务器也能够做为Eureka客户端进行相互注册与复制。
负载均衡框架Ribbon;
Ribbon是Netflix下的负载均衡项目,它在集群中为各个客户端的通讯提供了支持,它主要实现中间层应用程序的负载均衡。Ribbon提供如下特性:
Ribbon主要有如下三大子模块:
Ribbon的负载均衡器主要与集群中的各个服务器进行通讯,负载均衡器须要提供如下基础功能:
为了实现负载均衡的基础功能,Ribbon的负载均衡器有如下三大子模块:
<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>