springcloud详解及核心组件

Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量。

Springboot主要服务於单体项目,小项目能够快速开发。

springcloud 主要是分布式项目,大型微服务项目首先考虑。

Spring Cloud 是什么?

Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追踪等。Spring Cloud 并不重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成本。

Spring Cloud 现状
目前,国内使用 Spring Cloud 技术的公司并不多见,不是因为 Spring Cloud 不好,主要原因有以下几点:

Spring Cloud 中文文档较少,出现问题网上没有太多的解决方案。
国内创业型公司技术老大大多是阿里系员工,而阿里系多采用 Dubbo 来构建微服务架构。
大型公司基本都有自己的分布式解决方案,而中小型公司的架构很多用不上微服务,所以没有采用 Spring Cloud 的必要性。
但是,微服务架构是一个趋势,而 Spring Cloud 是微服务解决方案的佼佼者,这也是作者写本系列课程的意义所在。

Spring Cloud 优缺点
其主要优点有:

集大成者,Spring Cloud 包含了微服务架构的方方面面。
约定优于配置,基于注解,没有配置文件。
轻量级组件,Spring Cloud 整合的组件大多比较轻量级,且都是各自领域的佼佼者。
开发简便,Spring Cloud 对各个组件进行了大量的封装,从而简化了开发。
开发灵活,Spring Cloud 的组件都是解耦的,开发人员可以灵活按需选择组件。


接下来,我们看下它的缺点:

项目结构复杂,每一个组件或者每一个服务都需要创建一个项目。
部署门槛高,项目部署需要配合 Docker 等容器技术进行集群部署,而要想深入了解 Docker,学习成本高。
Spring Cloud 的优势是显而易见的。因此对于想研究微服务架构的同学来说,学习 Spring Cloud 是一个不错的选择。

核心组件

 1,eureka 注册中心。

   1)一个eureka服务也是客户端,可以自己注册自己,也可以相互注册形成高可用集群。

   2)eureka是客户端发现服务,客服端自己过滤,和选择负载均衡策略。

           3)eureka与注册服务器保持通信是通过心跳检测机制。

2,ribbon负载均衡器,三个方法核心。

          1)获取所有服务列表。

   2)rule。选择服务器规则(默认轮询)

           3)监听可用服务列表

3,通讯方式。

           1)restTempte 请求

   2)feign 请求。

 4,config 统一配置中心。

           1)config-server从远端git服务器拉取配置到本地的git.

    2) 调用端config-client,在注册中心获取config-server服务。

    注意把application.yml改成bootstrap.yml。

    3)获取方式 ,看日志或者文档(lable/name-dev.yml)

 5,bus动态配置刷新。用于config自动刷新。

    1)config-server和config-client配置bus和MQ。

    2) 远端git服务配置 webhook回调bus.

    3)使用就在pom.xml配置bus的maven。

6,zuul服务网管。

   1)性能比nginx差。

   2)路由+过滤器 =zuul

   3) 核心是一系列的过滤器。

               前置(pre)

    后置(post)

       路由(Route)

    错误(Error)

            4)限流(RateLimiter)令牌算法,放在fiter优先级最高。也可以配合nginx分流用。

            5)可以鉴权和统一跨域配置(nginx也可以做跨域)。

 7,hystrix服务容错。服务之间调用会有各种问题。这个组件用在所有调用方。

  1)为服务器提供容错保护。在资源不够或者业务压力大的时候使用优先核心服务。主要四点作用

    服务降级

    依赖隔离(线程池隔离)

    服务熔断

    监控(hystrix-dashboard)

  2)使用:

    a,通过hystrixCommand注解指定请求。

    b,fallbavkMethed实现降级后的实现逻辑。

       3) 超时降级默认1秒。所有要根据具体业务,和调用链具体配置。

  4)服务熔断主要四个配置。

    设置熔断为true

    请求数(统计单位)

    熔断时间(这段时间请求都执行fallback)

    错误百分比

  5)dashboard监控要配合使用。监控熔断,界面监控。

8,dashboard服务监控界面。给hystrix提供界面监控。

9,sleuth链路监控。主要是唯一标识对应一个请求,和一个请求的服务。

      1,日志打印唯一请求标识。

    2,配置把数据推向zipkin

   3,抽样百分比(开发环境设置为1)

10,zipkin链路监控可视化。

  1,主要界面可视化查看链路调用情况。

  2,使用的时候,一般pom.xml配置zipkin,包含了sleuth。

 

11,SpringCloudGateway

Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代Netflix ZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等

后续一段时间会不定时更新一些springcloud的东西,有些东西也是借鉴来再改改的整合成一套适合自己的springcloud学习方案,供大家参考
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章