当前微服务架构逐渐成为系统开发的主流方向,搭建微服务方式可以有多种,例如springcloud、dubbo、k8s等,本系列文章将基于本人参与的实际项目,来介绍基于springcloud搭建微服务的方式,Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。其主要模块有:
- eureka: 是springcloud体系结构中的服务治理模块,spring cloud eureka 由两个模块组成,Eureka服务器 和 Eureka客户端。Eureka服务器充当微服务架构体系中的服务注册中心。其他的微服务,使用 Eureka 客户端连接到 Eureka Server,并维持心跳连接,系统维护人员可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。
- zuul:充当微服务架构中api网关对外进行统一暴露,起到限流、动态路由等作用,此处可以根据需要进行扩展,实现日志记录、权限验证等系统级功能;
- ribbon:Spring Cloud Ribbon 是一个基于Http和TCP的客服端负载均衡工具,它是基于Netflix Ribbon实现的。它不像服务注册中心(eureka)、API网关(zuul)那样独立部署,但是它几乎存在于每个微服务的基础设施中,当Ribbon可以方便的从注册中心中获取已有服务的列表,因此可以方便的实现服务的负载均衡
- feign:Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端,它使得编写Web服务客户端变得更加简单
,只需要创建接口并用注解来进行配置,既可以实现对
其他微服务的访问; -
熔断器hystrix:微服务架构中,可能会存在多个微服务的级联调用,例如 A为服务提供者,B即消费A服务,也为C和D提供服务;这时,如果A不可用,不仅仅会造成B服务不可用,也会将不可用传到至C和D;从而造成雪崩效应
熔断器的原理与电路中的保险丝很强,其实本质就是快速失败;当一定时间内,hystrix检测到一定数量的相同错误,会强迫之后的访问快速失败,不需要系统资源浪费在等待超时连接上;防止造成整个系统的崩溃;
- Spring Cloud Config:为分布式应用或微服务提供外部的配置支持。其分为客户端和服务端2部分。服务端也可以称之为分布式配置中心,可以作为一个单独的微服务进行部署,用来连接配置仓库,并为客户端提供配置信息访问接口;
- spring cloud bus:通过消息中间件连接微服务中的各个节点,他可以用于推送配置文件变更通知或节点间的通讯。其本质是利用MQ广播机制在节点间传送信息