Spring Cloud入门1

Spring Cloud入门学习1

Spring Cloud是什么

  • Spring Cloud是开发分布式系统的“全家桶”,是一系列框架的有序集合。Spring Cloud利用Spring Boot的开发便利性巧妙的简化了分布式系统基础设施的开发。

微服务是什么,它的优缺点

  • 是什么:微服务是一种架构风格,即将单体应用划分为小型的服务单元,微服务之间使用HTTP的API进行资源访问与操作
  • 优势:服务独立部署、服务快速启动、更加适合敏捷开发、职责专一、服务可以按需扩容、代码的复用
  • 劣势:分布式部署调用的复杂性高、独立的数据库分布式事务的挑战、测试难度的提升、运维难度的提升
  • 最初的微服务化实现方式
    • 最初的微服务化解决方案是给相同服务提供一个统一对的域名,然后服务调用者向这个域发送HTTP请求,由Nginx负责请求的分发和跳转
    • 这种架构存在的问题:Nginx作为中间层,在配置文件种耦合了服务调用的逻辑,这削弱了微服务的完整性,也使得Nginx在一定程度上变成了一个重量级的ESB:服务的信息分散在各分系统,无法统一管理和维护,每一次的服务调用都是一次尝试,服务的消费方并不知道哪些实例在给它们提供服务,无法直观的看到服务的提供方和消费方当前的运行状况和通信频率,消费方的失败重发、负载均衡等都没有统一的策略,加大开发每个服务的难度,不利于快速演化

Spring Cloud模块

  • Eureka:服务注册中心,用于服务管理
  • Ribbon:基于客户端的负载均衡组件
  • Hystrix:容错框架,能够防止服务的雪崩效应
  • Feign:Web服务客户端能够简化HTTP接口的调用、
  • Zuul:API网关,提供路由转发、请求过滤等功能
  • Config:分布式配置管理
  • Sleuth:服务跟踪
  • Stream:构建消息驱动的微服务应用程序的框架
  • Bus:消息代理的集群消息总线
  • Cli
  • Task

Spring Cloud版本

  • 没有大版本,它不是一个项目,而是一个拥有诸多子项目的大型综合项目,可以说是对微服务架构解决方案的综合套件组件,其中包含的各个子项目都独立进行着内容的迭代与更新,各自维护着自己的发布版本号

Spring Cloud与Dubbo比较

  • Dubbo
    • 服务的调用方在请求某项服务时,首先通过中心组建获取提供服务的实例信息ID,再通过默认或自定义的策略选择该服务的某一提供方直接访问
    • 调用的中间层变成了可选的组件,消费方可以直接访问服务提供方
    • 服务信息被集中到了Registry中,形成了服务治理的中间件
    • 通过Monitor监控系统,可以直观地展示服务调用的统计信息
    • 服务消费者可以进入负载均衡、服务降级的选择
    • 缺点:Registry严重依赖第三方组件(Zookeeper或Redis),当这些组件出现问题时,服务调用很快会中断;Dubbo只支持RPC调用,这使得服务的提供方和调用方在代码上产生了强依赖,服务提供方需要将包含公共代码的jar打包出来供消费者使用,一旦打包出现问题,就会导致服务调用出错
    • Dubbo的定位始终是一款RPC框架
    • Dubbo已经适配到Spring Cloud生态,比如作为Spring Cloud的二进制通讯方案来发挥Dubbo的性能优势,Dubbo通过模块化及对HTTP的支持适配到Spring Cloud
  • Spring Cloud
    • 口号:面向云的应用程序,为微服务架构提供了更加全面的技术支持
    • 抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式。虽然牺牲了服务调用额性能,但是REST比RPC更为灵活,服务的提供方和调用方不存在代码级别的强依赖,这在强调快速演化的微服务环境下显得更加合适
    • 优势:来源Spring,质量、稳定性、持续性都可以得到保证;天然支持SpringBoot,更加便于业务落地;是Java领域最适合做微服务的框架

你可能感兴趣的:(SpringCloud,java,spring,springcloud)