当前微服务架构逐渐成为系统开发的主流方向,搭建微服务方式能够有多种,例如springcloud、dubbo、k8s等,本系列文章将基于本人参与的实际项目,来介绍基于springcloud搭建微服务的方式,Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操做提供了一种简单的开发方式。其主要模块有:spring
- 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广播机制在节点间传送信息