Spring Cloud

文章目录
1. Spring Cloud之Eureka
2. Spring Cloud之Ribbon
3. Spring Cloud之Hystrix
4. Spring Cloud之Feign
5. Spring Cloud之Zuul
6. Spring Cloud之Config
7. Spring Cloud之Bus
8. Spring Cloud与Dubbo区别
1. Spring Cloud之Eureka
作用:将应用根据不同的功能划分成不同的服务,方便维护和复用,但是服务如何找到需要的服务地址较为麻烦,在配置文件中写死,硬编码并不可取。该组件的功能就是提供一个服务的注册和发现的功能。特点:高可用,由以下几点保证,1.客户端会缓存服务的注册表信息,2.服务端会向客户端发起心跳,确认是否断开,3.可以存在多个服务端,他们之间的数据可以相互同步。
实现:
创建Eureka Server(注册中心)
创建Maven工厂
引入Cloud的依赖,加入eureka-server的包
编写启动类
application.yml配置文件中进行配置
启动
创建Eureka Client
创建Maven工厂
引入Cloud的依赖,加入eureka-server的包
编写启动类,启动类上加入@EnableDiscoveryClient注解
application.yml配置文件中进行配置服务端的地址,从而注册
注入DiscoveryClient,并通过服务ID获取服务实例,从而获取IP和端口
启动
原理:客户端将服务的信息注册到注册中心,Eureka Server会将这些信息存储在自己的注册表中,当有其他的Eureka Server注册时,注册表中的内容会进行同步,并且Eureka Server会定时对客户端发起心跳,确保客户端可用的状态。客户端也会缓存一份服务端的注册表,及时注册中心和客户端间出现网络故障,客户端依然能够找到需要的服务的地址,从而保证系统高可用。
2. Spring Cloud之Ribbon
作用:可切换服务间调用的负载均衡算法
实现:
引入Ribbon的依赖
在定义RestTemplate的实例方法上加@LoadBalanced注解
原理:底层使用了拦截器,在调用服务时,会经过Ribbon的拦截器,将服务名解析为服务的地址:IP+端口的形式替换原有的服务名,从而完成调用
3. Spring Cloud之Hystrix
作用:解决因其中的一个服务挂掉而无法调用,导致级联故障,整个系统都无法使用,从而产生雪崩的结果,提供容错保护的机制,
实现:
引入Hystrix的依赖
在应用上加入@EnableHystrix注解
在调用服务的Service方法上加入@HystrixCommand注解,并标明备用方法
实现备用方法,调用即可
原理:发起请求通过Histrix线程池,不同的服务调用会走不同的线程池,实现了服务调用的隔离,在调用达到容错的阈值时,会调用备用的方法进行处理,避免级联故障
4. Spring Cloud之Feign
作用:使用Spring MVC申明式注解调用,基于Ribbon实现,有负载均衡的功能,还整合了Hystrix,但在Dalston版本中是关闭的
实现:
引入Feign的依赖
在应用上加入@EnableFeignClients注解
在调用服务的Service类上加上@FeignClient注解,标注服务名,并根据Spring MVC的注解格式注解接口的方法
调用服务,直接调用上述的接口方法即可
原理:通过动态代理实现,实际调用的是根据注解解析生成的一个代理,代理实现的功能是找到服务地址,调用后再将数据组装返回
5. Spring Cloud之Zuul
作用:对外提供统一的网关功能,统一的调用方式,校验、权限控制、负载均衡的功能
实现:
创建项目,引入zuul依赖
在应用上加入@EnableZuulProxy注解
配置路由规则
配置ZuulFilter
启动测试
原理:在服务调用前,先通过一层网关,统一封装了网关的功能
6. Spring Cloud之Config
作用:集中管理服务的配置,提高了复用性和维护性
实现:
创建Config Server
引入Cloud的依赖,加入config-server的包
编写启动类
application.yml配置文件中进行配置,配置获取配置文件的方式和位置
启动
创建Config Client
引入Cloud的依赖,加入config和actuator(加入refresh配置的功能)的包
bootstrap.yml配置文件中加入配置服务的地址,在application.yml配置文件中启用actuator
通过注解的方式引入配置,在类上加入@RefreshScope的功能
调用refresh请求会进行配置文件的刷新
原理(猜测):客户端在启动时,会首先根据配置的Config服务取获取相应的配置文件,当收到refresh方法时,会再去获取一遍参数,进行更新
7. Spring Cloud之Bus
作用:统一的通知所有的服务或者配置的维度的服务
实现:
在conifg-server中加入bus-amqp依赖
配置文件中加入rabbitmq配置
web-hook地址修改为config-server地址/bus/refresh
启动测试
原理:会将refresh统一分发出去
8. Spring Cloud与Dubbo区别
spring cloud集成的组件更多,本身含有注册中心,而dubbo的注册中心是zookeeper
服务和注册中心间的连接协议不同,spring cloud是http,而dubbo的协议更加多样,基于长连接的方式交互,性能相对更好
spring cloud通过心跳通知服务的消费者,而zookeeper通过长连接通知服务的变更
dubbo是RPC,依赖关系更大,需要接口相同,而spring cloud是REST方式,更为轻量化,但是容易导致接口定义和文档不一致,但可通过swagger解决
 

你可能感兴趣的:(Spring Cloud)