借用一篇博客中的目录理下springcloud涉及的内容,整理自Finchley.RC1
的SpringCloud文档
服务注册与发现
SpringCloudNetflix整合了Netflix的部分模块,包括:Eureka(服务发现),Hystrix(断流),Zuul(路由),Ribbon(客户端负载均衡).
eureka
使用Eureka做服务发现
服务端:负责管理注册在服务端的所有的client,以下为相关配置
- 启动类添加
@EnableEurekaServer
注解 -
配置文件中添加服务注册地址和端口号
spring.application.name=eureka-server server.port=7001 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false #server,作为服务管理中心管理http://localhost:7001/eureka/地址的服务 eureka.client.service-url.defaultZone=http://localhost:${server.port}/eureka/
-
添加maven依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
客户端:
-
配置文件中添加服务注册地址和端口号
eureka.client.service-url.defaultZone=http://localhost:7001/eureka/
-
添加maven依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
consul
消费者
ribbon
feign
分布式配置中心
服务容错
断路器
SpringCloud采用了Netflix的Hystrix来实现断路器,为了解决服务中的雪崩问题,它采用的机制有:
资源隔离:线程池隔离和信号量隔离
每个服务分配独立的线程池,每个请求设置超时时间,堆积的请求进入线程池队列,从而保证了各个接口的请求不会因为抢占系统资源而互相影响。
每个线程池存在一个计数器,统计当前有多少个线程在运行,当超过设置的最大线程数则丢弃新的请求,调用回调函数返回。避免请求量大的时候新的请求不断堆积在内存中等待。
降级
当出现超时、资源不足时,会触发降级机制,此时不会请求接口,而是直接调用回调接口返回
熔断
当失败率达到设置的阈值,熔断器触发的快速失败会通过尝试连接来判断服务是否恢复