geek的技术日志,记录每一次技术思考的闪光点。

Spring Cloud学习第一课:Spring Cloud简介

Spring  Cloud介绍

Spring Cloud跟dubbo类似,是一种分布式架构框架。跟SpringMVC这种引入一个Jar包就完事的技术框架不同,Spring Cloud是一个架构体系,里面包括很多具体的技术细节(这种就跟dubbo很像了,比如说dubbo一定需要个zookeeper作为服务注册中心)。Spring Cloud分布式微服务架构体系里包括的具体技术如下:

  1. Spring boot。Spring boot的这种把服务器都一并打包进去的打包方式,是微服务的关键。可以简单的认为Springboot是一种对配置和打包做了优化的技术,原来无论是使用了SpringMVC、mybatis、hibenate等等各种技术的项目,都可以使用Springboot去搭建。使用Spring boot和注解,可以大量精简各种配置文件,项目构建和部署的时候都会简单得多。Spring boot的存在,使得我们即使不使用docker,项目的构建和发布也一样可以很简单不复杂。Springboot是Spring Cloud技术体系的核心,基本上所有的SpringCloud项目,默认都是使用Springboot去搭建的。
  2. Eureka。服务注册中心。Spring Cloud技术体系不可缺少的一个环节,功能类似于dubbo体系里的zookeeper。优势在于eureka是一个Java的实现,只要是装了JDK的电脑就可以跑,无论是linux还是windows。Spring Cloud体系的集群就靠他了。
  3. Zuul。这是Spring Cloud技术体系里的一个API gateway的项目。Zuul路由是微服务架构的不可或缺的一部分,提供动态路由,监控,弹性,安全等的边缘服务。Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器。 通过zuul可以实现web前端的请求跟后端请求隔离,所有请求都到网关,网关再路由到具体的微服务,还可以完美的避免跨域。Zuul可以反向代理所有的请求到eureka服务注册中心,从而实现负载均衡。如下(下面是配置在yml的,还可以配置在db里):

    zuul: 
    
     routes: 
    
     abc: #让zuul方向代理微服务,路径是/user-path abc只要是唯一的就行,可随意写 
    
     path: /user-path/** #封层匹配 
    
     serviceId: microservice-provider-user #匹配上面path的请求通通都会转发到eureka的这个微服务。
    
    ribbon: 
    
     eureka: 
    
     enabled: false 
    
    microservice-provider-user: #这是Ribbon要请求的微服务的ServiceId 
    
     ribbon: 
    
     listOfServers: http://localhost:7900,http://localhost:7901
  4. Spring Security。这是Spring Cloud体系的权限控制框架,当然了,你在Spring Cloud里使用shiro也是可以的。Spring Cloud的宽容度,超乎你想象。
  5. Spring Cloud Config。分布式配置,跟Spring Cloud无缝集成,分布式框架里再也不需要在各个子项目一个个改配置文件了。
  6. Hystrix。断路器,就是主要用来处理当服务器hold不住的时候,不允许新的请求再进入业务处理单元。
  7. 负载均衡。SpringCloud提供两种负载均衡ribbon,feign。1)Ribbon是一个基于HTTP和TCP客户端的负载均衡器。

    Ribbon可以在通过客户端中配置的ribbonServerList服务端列表去轮询访问以达到均衡负载的作用。

    当Ribbon与Eureka联合使用时,ribbonServerList会被DiscoveryEnabledNIWSServerList重写,扩展成从Eureka注册中心中获取服务端列表。同时它也会用NIWSDiscoveryPing来取代IPing,它将职责委托给Eureka来确定服务端是否已经启动。

    2)Feign是一个声明式的Web Service客户端,它使得编写Web Serivce客户端变得更加简单。Feign中也使用Ribbon。我们只需要使用Feign来创建一个接口并用注解来配置它既可完成。它具备可插拔的注解支持,包括Feign注解和JAX-RS注解。Feign也支持可插拔的编码器和解码器。Spring Cloud为Feign增加了对Spring MVC注解的支持,还整合了Ribbon和Eureka来提供均衡负载的HTTP客户端实现。

  8. 以上就是Spring Cloud框架体系里主要的技术。你可以认为一个Springboot项目就是一个微服务,一般来说,SpringCloud体系最少要三个微服务,一个是api gateway的微服务,作为服务路由。一个是eureka服务,作为服务注册中心。一个是你自己的具体业务的微服务。如果需要权限控制,则需要加一个Spring Security的微服务。
打赏作者

未经允许不得转载:极客技术 » Spring Cloud学习第一课:Spring Cloud简介

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址