spring cloud是Java语言的微服务框架,它依赖于spring boot,有快速开发、持续交付和容易部署等特点。下面结合微服务介绍spring cloud开发分布式微服务系统的一些常用组件。
常用组件
服务注册和发现组件Eureka
微服务系统是由多个单一职责的服务单元组成,服务之间的相互依赖成网状,所以该系统需要注册中心来统一管理微服务实例,方便查看每个服务的健康状态。利用Eureka组件可以很轻松的实现服务的注册和发现的功能。Eureka组件提供了服务的健康检测,以及界面友好的UI,可以让开发人员随时了解服务单元的运行情况。
负载均衡组件Ribbon
在微服务架构中,服务之间的相互调用一般是通过HTTPT通信协议来实现的。网络往往具有不可靠性,为了保证服务的高可用,服务单元往往是集群化部署。那么服务消费者该调用那个服务提供者的实例呢?这就涉及到服务之间的负载均衡。Ribbon是一个负载均衡组件,通常和Euraka、Zuul、RestTemplate、Feign配合使用。它的作用是将请求根据负载均衡策略分配到不同的服务实例中。
熔断器组件Hystrix
微服务中服务之间的相互依赖性错综复杂,一个网络请求通常需要调用多个服务实例才能完成。如果一个服务不可用,如网络延迟或故障,会影响依赖于这个服务的其它服务,最后导致整个系统处于瘫痪的状态。为解决这种雪崩效应,引进熔断组件Hystrix,当出现故障后会自动剔除服务实列。Hystrix除了一些基本的熔断器,还能实现服务降级、服务限流的功能,并提供了界面展示健康状态的功能。
路由网关Zuul
微服务系统通过将资源以API接口的形式暴露给外界来提供服务,在微服务系统中,API接口资源通常是由服务网关统一暴露,内部服务不直接对外提供API资源的暴露。这样做的好处是将内部服务隐藏起来,给外界的感受是一个服务在提供服务,在一定程度上保护了微服务系统的安全。Spring Cloud中Zuul为网关组件,提供智能路由和过滤的功能。默认的情况下,Zuul和Ribbon相结合,能够做到负载均衡。
声明式调用Feign
在微服务架构中,一个业务可能需要多个服务协同完成,这时候涉及到服务之间的内部调用。可以通过Feign来远程调度以他服务。
Spring Cloud Config
在实际的开发过程中,每个服务都有大量的配置文件,列如数据库配置、日志输出级别配置等,而往往这些配置在不同的环境中也是不一样的。随着服务的增加,配置文件的管理也是一件非常复杂的事。在微服务架构中,需要有统一管理配置文件的组件。在spring cloud中spring cloud config提供了这一功能。
Spring Coud Sleuth
服务和服务之间的调用有可能非常的复杂,一旦出现了异常和错误,就会很难去定位。所以在微服务架构中,必须实现分布式链路追踪,去跟进一个请求到底有哪些服务参与,参与的顺序又是怎样的,从而使每个请求链路清晰可见,出了问题很快就能定位。spring cloud sleuth是一个分布式链路追踪组件,通过它可以知道服务之间的依赖关系,并实时观察链路的调用情况。
Spring Cloud Security
向服务单元提供了用户验证和权限认证的功能。
总结
在这一章节中我们从总体上了解了Spring Cloud开发微服务架构的基本组件。在接下来的章节中深入这些组件,介绍组件的使用和从源码的程度介绍组件的实现。
网友评论