1 SpringCloud简介
1.1 什么是SpringCloud
http://projects.spring.io/spring-cloud/
1.2 SpringCloud与SpringBoot的关系
Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开 Spring Boot,属于依赖的关系。
1.3 SpringCloud主要框架
服务发现——Netflix Eureka
服务调用——Netflix Feign
熔断器——Netflix Hystrix
服务网关——Netflix Zuul
分布式配置——Spring Cloud Config
消息总线 —— Spring Cloud Bus
1.4 Spring Cloud和Dubbo对比

1.5 说说SpringCloud的版本

2 服务发现组件 Eureka
2.1 Eureka
(1)创建tensquare_eureka模块
(2)引入依赖 父工程pom.xml定义SpringCloud版本
<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring‐cloud‐dependencies</artifactId><version>Finchley.M9</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
tensquare_eureka模块pom.xml引入eureka-server
<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring‐cloud‐starter‐netflix‐eurekaserver</artifactId></dependency></dependencies>
(3)添加application.yml
server:port: 6868 #服务端口eureka:client:registerWithEureka: false #是否将自己注册到Eureka服务中,本身就是所有无需 注册fetchRegistry: false #是否从Eureka中获取注册信息serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址defaultZone: http://127.0.0.1:${server.port}/eureka/
(4)编写启动类
创建包com.tensquare.eureka ,包下建立类

(5)启动运行启动类,然后在浏览器地址栏输入 http://localhost:6868/ 运行效果如 下:

2.3 服务注册
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring‐cloud‐starter‐netflix‐eurekaclient</artifactId></dependency>
(2)修改每个微服务的application.yml,添加注册eureka服务的配置
eureka:client:service‐url:defaultZone: http://localhost:6868/eurekainstance:prefer‐ip‐address: true
(3)修改每个服务类的启动类,添加注解
@EnableEurekaClient
(4)启动测试:将每个微服务启动起来,会发现eureka的注册列表中可以看到这些微服 务了

2.4 保护模式

3.1 Feign简介
Feign是简化Java HTTP客户端开发的工具(java-to-httpclient-binder),它的灵感 来自于Retrofit、JAXRS-2.0和WebSocket。Feign的初衷是降低统一绑定Denominator到 HTTP API的复杂度,不区分是否为restful。
3.2 快速体验
(1)在tensquare_qa模块添加依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring‐cloud‐starter‐openfeign</artifactId></dependency>
(2)修改tensquare_qa模块的启动类,添加注解
@EnableDiscoveryClient@EnableFeignClients
(3)在tensquare_qa模块创建 com.tensquare.qa.client包,包下创建接口

@FeignClient注解用于指定从哪个服务中调用功能 ,注意 里面的名称与被调用的服务 名保持一致,并且不能包含下划线。
@RequestMapping注解用于对被调用的微服务进行地址映射。注意 @PathVariable注 解一定要指定参数名称,否则出错
(5)修改tensquare_qa模块的 ProblemController

(6)测试:http://localhost:9003/problem/label/1 能看到标签的信息
3.3 负载均衡





