Springcloud系列-简介

  • 时间:
  • 来源:互联网
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/A_dg_Jffery/article/details/103315579

Springcloud系列-简介

        首先SpringCloud带有“cloud”的字样,但它并不是云计算解决方案,而是在SpringBoot的基础上构建的,用于快速构建分布式系统的通用模式的工具集。
        使用SpringCloud开发的应用程序非常适合在Docker或者Paas上部署,所以又叫做云原生应用。
        springCloud是基于SpringBoot的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。SpringBoot旨在简化创建产品级的Spring 应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功能。

什么是微服务

        微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间的通信采用轻量级通信机制(通常使用http资源api)。微服务架构应具备以下特征:

  • 每个微服务可独立运行在自己的进程里。
  • 一系列独立运行的微服务共同构建起整个系统
  • 每个服务为独立的业务开发,一个微服务只关注某个特定的功能
  • 微服务之间通过一些轻量级的通信机制进行通信
  • 可以使用不同的语言与数据存储技术
  • 全自动的部署机制

说到微服务,就不得不说一下当下的分布式与rpc:

  1. 分布式
            SOA 分布式重要的就是面向服务,简单点说就是把整个系统拆分成不同的服务,将这些服务放在不同的服务器上减轻单体服务的压力提高并发量和性能。比如电商系统可以简单地拆分程订单系统、商品系统、登陆系统等等,部署在不同机器上,如果某个服务访问量比较大的话,还可以将这个服务同时部署在多台机器上。

  2. rpc
            RPC(Romote Procedure Call):远程过程调用,允许一台计算机程序远程调用另外一台计算机的子程序,不用关心底层网络通信。
    在socket基础上实现,比socket需要更多资源。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jwHG1k2r-1575018699617)(./images/1575010957687.png)]

        基于分布式与RPC的介绍,其实我们今天所记录的springCloud微服务就是分布式的一种,现在市场上比较火的还有dubbo (ApacheDubbo)可以通过以下图片看看两者之间的区别:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DkrpDDeI-1575018667718)(./images/1575011044538.png)]

Dubbo:

         Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
        Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
在这里插入图片描述
在这里插入图片描述

节点 角色说明
Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器

在这里插入图片描述
Dubbo 的四个特性:

  1. 负载均衡
    同一个服务部署在不同的机器时该调用哪一台机器上的服务
  2. 服务调用链路生成:
    随着系统发展,服务越来越多,服务间依赖关系错综复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整描述应用的架构关系。Dubbo 可以为我们解决服务之间互相是如何调用的。
  3. 服务访问压力以及时长统计、资源调度和治理:
    基于访问压力实时管理集群容量,提高集群访问率。
  4. 服务降级:
    某个服务挂掉之后调用备用服务。
为什么选用dubbo:
  • 1.远程通讯: 提供对多种基于长连接的NIO框架抽象封装, 包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
  • 2.软负载均衡及容错机制: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
  • 可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
  • 3.服务自动注册与发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器
  • 4.提供完善的管理控制台dubbo-admin与简单的控制中心dubbo-monitor
  • 5.Dubbo提供了伸缩性很好的插件模型,很方便进行扩展(ExtensionLoader)
  • 6.支持多协议
SpringCloud:

在这里插入图片描述

spring cloud子项目包括:

  • Spring Cloud Config:配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion。
  • Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。
  • Spring Cloud Netflix:针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。
  • Netflix Eureka:云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移。
  • Netflix Hystrix:容错管理工具,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
  • Netflix Zuul:边缘服务工具,是提供动态路由,监控,弹性,安全等的边缘服务。
  • Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
  • Spring Cloud for Cloud Foundry:通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。
  • Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。
  • Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。
  • Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。
  • Spring Cloud Consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。
  • Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。
  • Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。
  • Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。

(以上这些组件在后续的章节中会陆续写出来。)

由于SpringCloud是基于SpringBoot开发的,所以也具有以下特征:

  • 约定优于配置
  • 开箱即用、快速启动
  • 适用于各种环境
  • 轻量级的组件
  • 组件支持丰富,功能齐全

二者区别:

         SpringCloud是基于REST API的请求方式,而Dubbo是基于RPC的请求;SpringCloud的服务治理是使用Eureka来进行服务的注册及发现,而Dubbo是使用Zookeeper来做服务治理。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0kgfm99o-1575021882882)(./images/1575015570402.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LiPvUijN-1575021882885)(./images/1575015673655.png)]

总结:
         Dubbo和Spring Cloud并不是完全的竞争关系,两者所解决的问题域不一样:Dubbo的定位始终是一款RPC框架,而SpringCloud的目的是微服务架构下的一站式解决方案。 非要比较的话,Dubbo可以类比到Netflix OSS技术栈,而SpringCloud集成了Netflix OSS作为分布式服务治理解决方案,但除此之外SpringCloud还提供了包括config、stream、security、sleuth等分布式服务解决方案。
         当前由于RPC协议、注册中心元数据不匹配等问题,在面临微服务基础框架选型时Dubbo与SpringCloud只能二选一,这也是两者总拿来做对比的原因。 Dubbo之后会积极寻求适配到SpringCloud生态,比如作为SpringCloud的二进制通讯方案来发挥Dubbo的性能优势,或者Dubbo通过模块化以及对http的支持适配到SpringCloud。

结束语:

         本篇文章主要介绍微服务,分布式以及RPC相关的知识点,SpringCloud的各大组件会在后续的文章中陆续发出。

本文链接http://element-ui.cn/news/show-461.aspx