天天看点

第一章 springcloud几大组件的介绍

不知道这个时候学习springcloud是否算太晚了。

        springcloud作为一种心的分布式架构被广泛应用到企业开发中,特别是中小型企业,现在已经基本取代了dubbo。为了增强自己的竞争力,不被这个时代淘汰,所以在慢慢学习springcloud,而且所在公司也在应用springcloud。

       springcloud作为一个分布式框架,将我们以前一个工程完成一个项目的方式做出了拆分,将项目按功能模块划分一个个小的项目,使得每个功能模块都能独立部署,独立对外提供服务,使得项目功能单一化,结构更加清晰,而且方便多人同时开发。springcloud由一个个组件或者说大的模块组成。这些模块共同作用,才让这个分布式框架的功能更加完美。springcloud所属的组件有eureka,ribbon,feign,hystrix,getway,config,bus组成。

      1.eureka

        eureka分为客户端和服务端,服务端的作用就是作为一个注册中心来使用,就像是dubbo里面的zookeeper,用来给服务提供者将信息注册到注册平台上,服务消费者从注册平台上获取服务提供者的信息,然后根据获取到的信息连接服务提供者。eureka的客户端就是给服务提供者和服务消费者使用的,只有当服务提供者和服务消费者是eureka的客户端的时候,他们才能注册到注册中心以及从注册中心获取服务信息。eureka服务端就像是淘宝平台,eureka客户端就像是在淘宝上买卖东西的商家和客户。为了保证服务的高可用性,eureka还拥有心跳机制,保护机制以及连带责任机制。

      2.ribbon和feign

      ribbon和feign的作用是一样的,服务消费者通过ribbon或者feign来调用服务提供者,也就是说服务消费者通过ribbon或者feign来像服务提供者发起请求获取自己想要的数据或者希望服务提供者执行某个动作,更重要的是ribbon和feign在客户端提供了负载均衡,用户可以选择相应的负载均衡算法来调用服务。ribbon和feign最大的不同是ribbon通过restTemplate来显示的向服务提供者发送http请求,而feign是对restTemplate做了一层封装,通过接口里面的方法来调用,就像是调用自己本地的方法一样来调用远程接口。

     3.hystrix

      为了保证服务的健壮性,hystrix对服务消费者调用服务提供者进行了隔离保护,能实现服务熔断和服务降级,这样是避免在整个分布式架构中,由于某一个服务的调用不可用而消耗掉太多的资源导致整个服务不可用的情况。hystrix提供了线程池隔离和信号量隔离机制,线程池隔离是将请求封装成一个个的任务,然后由线程池去执行请求,当线程池满了后,请求直接返回错误结果。信号量的隔离就是请求要去拿到信号量后才能继续执行。

    4.getway

    getway起到一个路由网关的作用,就像nginx一样,让服务消费者对外提供服务或者服务提供者给消费者提供服务统一一个url来进行调用,这样不仅起到一个提供统一的对外url,方便其他服务调用,还能起到一个保护以及使用拦截器优先处理请求的作用。

   5.config和bus

   springcloud提供了一种对各个服务模块的一种线上配置功能。其他服务可以通过config组件来获取自己想要的配置信息,这个配置信息可以统一存储,统一管理,配置信息可以存储到本地,也可以存储到git上面,结合bus,当我们在git上更改配置信息提交后,不需要重启服务,其他服务就能拿到最新的配置信息。

以上简单的介绍了springcloud的每个组件有什么作用,可能有不太准和不太全的情况,但这都是我自己的理解,后面随着对springcloud的理解更加深入,我会不断完善上面对每个组件的介绍。

继续阅读