1.SpringCloud包含的多个子项目
SpringCloudConfig:配置管理工具
SpringCloudNetflix:
- Eureka:服务治理组件,包含服务注册中心、服务注册与发现机制的实现
- Hystrix:容错管理组件
- Ribbon:客户端负载均衡的服务调用组件
- Feign:基于Ribbon和Hystrix的声明式服务调用组件
- Zuul:网关组件
- Archaius:外部化配置组件
SpringCloudBus:事件、消息总线,用于传播集群中的状态变化或事件,以触发后续的处理
(...后续用到再补充)
2.SpringCloudEureka
服务注册:
构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,将主机端口号、版本号、通信协议等信息告诉注册中心,同时注册中心会以心跳的方式监测清单中的服务是否可用,若不可用则从清单中剔除(如:我们有俩个提供服务A的进程分别于192.168.0.100:8000和192,168,0.101:8000)
服务发现:
服务间的调用不再通过具体的实例地址来实现,而是通过向服务发起请求调用实现,因此调用方需要向服务注册中心获取所有服务的实例清单,以实现对具体服务实例的访问。(如C希望访问A,C需要向注册中心发起请求,注册中心会将服务A的位置清单返回给服务C,然后当C调用服务时以某种轮询策略从清单中取出一个位置进行调用,这就是客户端负载均衡)
搭建服务注册中心:
首先创建一个SpringBoot的基础Demo :不熟悉的可以参考 SpringBoot开发日记(一)——快速创建HelloWorld!
然后在pom文件中引入
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR5</spring-cloud.version>
</properties>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<