1.Spring Cloud微服务基本介绍

目录


Spring Cloud专栏目录(点击进入…)



微服务基本介绍

简介

微服务是一种架构方式、一种概念。需要技术架构去实施

Spring Cloud是Spring旗下的项目之一,官网地址:http://projects.spring.io/spring-cloud/
Spring最擅长的就是集成,把世界上最好的框架拿过来,集成到自己的项目中。Spring Cloud也是一样,它将现在非常流行的一些技术整合到一起,实现了诸如:配置管理,服务发现,智能路由,负载均衡,熔断器,控制总线,集群状态等功能

Spring Cloud是一个基于Spring Boot实现的云原生应用开发工具,Spring Cloud以快速构建分布式系统中的某些常见模式(配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态)等操作提供了一种简单的开发方式

Spring Cloud全家桶系列,SpringCloud是若干个框架的集合,包括spring-cloud-config、spring-cloud-bus等近20个子项目,提供了服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理等领域的解决方案。

Spring Cloud通过Spring Boot风格的封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、容易部署的分布式系统开发工具包。

一般来说,Spring Cloud包含以下组件,主要以Netflix开源为主:
在这里插入图片描述


为什么使用Spring Cloud?

微服务的实现方式很多,但是最火的莫过于Spring Cloud了。为什么?

①后台硬
作为Spring家族的一员,有整个Spring全家桶靠山,背景十分强大

②技术强
Spring作为Java领域的前辈,可以说是功力深厚。有强力的技术团队支撑

③群众基础好
可以说大多数程序员的成长都伴随着Spring框架,试问:现在有几家公司开发不用Spring?Spring Cloud与Spring的各个框架无缝整合,对大家来说一切都是熟悉的配方,熟悉的味道

④使用方便
相信都体会到了Spring Boot给开发带来的便利,而Spring Cloud完全支持Spring Boot的开发,用很少的配置就能完成微服务框架的搭建

微服务背后一个重要的理念就是持续集成、快速交付,而在服务内部使用一个统一的技术框架,显然比把分散的技术组合到一起更有效率。更重要的是,相比于Dubbo,它是一个正在持续维护的、社区更加火热的开源项目,这就保证使用它构建的系统,可以持续地得到开源力量的支持


功能

(1)Spring Cloud是一个微服务框架,与Spring Boot结合,开发简单。将一个大工程项目,分成多个小Web服务工程,可以分别独立扩展,又可以共同合作

(2)Spring Cloud是一个基于Spring Boot实现的服务治理工具包,在微服务架构中用于管理和协调服务的(微服务架构)
微服务:就是把一个单体项目,拆分为多个微服务,每个微服务可以独立技术选型,独立开发、独立部署、独立运维;并且多个服务相互协调、相互配合、最终完成用户的价值

(3)Spring Cloud是一系列框架的有序集合。利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发。如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署

(4)并不是云计算解决方案,而是在Spring Boot基础之上构建的,用于快速构建分布式系统的通用模式的工具集

使用Spring Cloud开发的应用程序非常适合在Docker和PaaS(比如Pivotal Cloud Foundry)上部署,所以又叫做云原生应用(Cloud Native Application)。云原生可以简单地理解为面向云环境的软件架构


Spring Cloud具有如下特点

(1)约定优于配置
(2)适用于各种环境。开发、部署PC Server或各种云环境(例如阿里云、AWS等)均可
(3)隐藏了组件的复杂性,并提供声明式、无xml的配置方式
(4)开箱即用,快速启动
(5)轻量级的组件。Spring Cloud整合的组件大多比较轻量。例如Eureka、Zuul等,都是各自领域轻量级的实现;
(6)组件丰富,功能齐全。Spring Cloud 为微服务架构提供了非常完整的支持。例如、配置管理、服务发现、断路器、微服务网关等
(7)选型中立、丰富。例如,Spring Cloud支持使用Eureka、Zookeeper或Consul实现服务发现
(8)灵活。Spring Cloud的组成部分是解耦的,开发人员可以按需灵活挑选技术选型


特征?

Spring Cloud专注于为典型的用例和可扩展性机制(包括其他用例)提供良好的开箱即用体验
(1)分布式/版本化配置
(2)服务注册和发现
(3)路由
(4)服务到服务的呼叫
(5)负载均衡
(6)断路器
(7)全局锁
(8)领导选举和集群状态
(9)分布式消息传递

Spring Cloud采用了一种非常声明性的方法,通常只需更改类路径或注释即可获得许多功能
作为发现客户端的示例应用程序
Spring Boot的启动类

@SpringBootApplication
@EnableDiscoveryClient
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

五大重要组件

(1)服务发现(Netflix Eureka)
服务治理组件,包含服务注册中心,服务注册与发现机制的实现。(服务治理,服务注册/发现)

(2)客服端负载均衡(Netflix Ribbon/Feign)
客户端负载均衡的服务调用组件(客户端负载)/服务调用,给予Ribbon和Hystrix的声明式服务调用组件(声明式服务调用)

(3)服务网关(Netflix Zuul)
网关组件,提供智能路由,访问过滤功能

(4)断路器(Netflix Hystrix)
容错管理组件,实现断路器模式,帮助服务依赖中出现的延迟和为故障提供强大的容错能力(熔断、断路器,容错)

(5)分布式配置(Spring Cloud Config)
配置管理工具,实现应用配置的外部化存储,支持客户端配置信息刷新、加密/解密配置内容等


Spring Cloud组件详细

(1)Spring Cloud Netflix(核心组件)

可以对多个Netflix OSS开源套件进行整合,包括以下几个组件:
Eureka:服务治理组件。包含服务注册与发现
Hystrix:容错管理组件。实现了熔断器
Ribbon:客户端负载均衡的服务调用组件
Feign:基于Ribbon和Hystrix的声明式服务调用组件
Zuul:网关组件,提供智能路由、访问过滤等功能
Archaius:外部化配置组件

(2)Spring Cloud Config

配置管理工具。实现应用配置的外部化存储,支持客户端配置信息刷新、加密/解密配置内容等

(3)Spring Cloud Config Server

(1)用于外部配置的HTTP,基于资源的API(名称 - 值对或等效的YAML内容)
(2)加密和解密属性值(对称或非对称)
(3)使用可轻松嵌入Spring Boot应用程序@EnableConfigServerConfigClient功能(适用于Spring应用程序)
(4)绑定到Config Server并Environment使用远程属性源初始化Spring
(5)加密和解密属性值(对称或非对称)

(4)Spring Cloud Bus

事件、消息总线。用于传播集群中的状态变化或事件,以及触发后续的处理

(5)Spring Cloud Security

基于Spring Security的安全工具包,为应用程序添加安全控制

(6)Spring Cloud Consul

封装了Consul操作,Consul是一个服务发现与配置工具(与Eureka作用类似),与Docker容器可以无缝集成
在这里插入图片描述


Dubbo

Dubbo是阿里开源的一个SOA服务治理解决方案,文档丰富,在国内的使用度非常高

在这里插入图片描述
(1)调用中间层变成了可选组件,消费方可以直接访问服务提供方
(2)服务信息被集中到Registry中,形成了服务治理的中心组件
(3)通过Monitor监控系统,可以直观地展示服务调用的统计信息
(4)服务消费者可以进行负载均衡、服务降级的选择

对于微服务架构而言,Dubbo并不是十全十美的,也有一些缺陷,比如:
(1)Registry严重依赖第三方组件(ZooKeeper或者Redis),当这些组件出现问题时,服务调用很快就会中断
(2)Dubbo只支持RPC调用。这使得服务提供方与调用方在代码上产生了强依赖,服务提供方需要不断将包含公共代码的Jar包打包出来供消费方使用。一旦打包出现问题,就会导致服务调用出错


Spring Cloud与Dubbo功能对比

功能名称DubboSpring Cloud
服务注册中心ZooKeeperSpring Cloud Netflix Eureka
服务调用方式RPCREST API
服务网关Spring Cloud Netflix Zuul
断路器不完善Spring Cloud Netflix Hystrix
分布式配置Spring Cloud Config
服务跟踪Spring Cloud Sleuth
消息总线Spring Cloud Bus
数据流Spring Cloud Stream
批量任务Spring Cloud Task

Spring Cloud好在哪里?

作为新一代的服务框架,Spring Cloud目标是开发“面向云的应用程序”,它为微服务架构提供了更加全面的技术支持

Spring Cloud 抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式。严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者牺牲了服务调用的性能,但也避免了原生RPC带来的问题。而且REST相比RPC更为灵活。服务提供方和调用方,不存在代码级别的强依赖,这在强调快速演化的微服务环境下显得更加合适

很明显,Spring Cloud的功能比Dubbo更加强大,涵盖面更广,而且作为Spring的拳头项目,它也能够与Spring Framework、Spring Boot、Spring Data、Spring Batch等其他Spring项目完美融合,这些对于微服务而言是至关重要的

更重要的是,相比于Dubbo,它是一个正在持续维护的、社区更加火热的开源项目,这就可以保证使用它构建的系统持续地得到开源力量的支持


Spring Cloud的几个优势

(1)Spring Cloud来源于Spring,质量、稳定性、持续性都可以得到保证
(2)Spring Cloud天然支持Spring Boot,更加便于业务落地
(3)Spring Cloud发展得非常快,从开始接触时的相关组件版本为1.x,到现在将要发布2.x系列
(4)Spring Cloud是 Java 领域最适合做微服务的框架
相比于其他框架,Spring Cloud 对微服务周边环境的支持力度最大。对于中小企业来讲,使用门槛较低

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未禾

您的支持是我最宝贵的财富!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值