一起来学Spring Cloud | 前言:Spring Cloud 与Spring Boot

目前大家都在说微服务,其实微服务不是一个名字,是一个架构的概念,大家现在使用的基于RPC框架(dubbo、thrift等)架构其实也能算作一种微服务架构。

目前越来越多的公司开始使用微服务架构,所以在目前招聘java岗位时,有springcloud经验还是会占一点优势,今天young就和大家一起来学习Spring Cloud微服务框架。

本章,我们先解决新人都头疼的一个问题,spring Cloud 与spring Boot到底是什么关系????

一 、什么是spring Boot

在讲解什么是spring Boot之前,我们先可以思考一下,目前使用spring时,有没有感觉以下的两个问题经常被频繁的吐槽

  1. 在过去的 Spring 发中,需要引入大量的 xml 文件。Spring 2.5 引入了包扫描,消除了显式的配置 Bean。 Spring 3.0 又引入了基于 JavaBean 的配置,这种方式可以取代 xml 文件。
    尽管如此,在实际的开发中还是需要配置 xml 文件,例如配 SpringMVC 事务管理器、过滤器、切面等等。

  2. 在项目的开发过程中,会引入大量的第三方依赖,选择依赖是一件不容易的事,解决依赖与依赖之间的冲突也很耗费精力。所以,在以前的Spring开发中,依赖管理也是一件棘手的事情。

结合上面Spring的两点瑕疵,我们在来总结一下,什么是SpringBoot:

  1. Spring Boot并不是一个全新的框架,它不是spring解决方案的一个替代品,而是spring的一个封装。所以,你以前可以用spring做的事情,现在用spring Boot都可以做。

  2. Spring Boot是一种全新的编程规范,是一个服务于框架的框架,服务范围是简化配置文件和起步依赖,他的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件。

二 、什么是spring Cloud

  1. Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案,它依赖于 Spring Boot ,有快速开发、持续交付和容易部署等特点。

  2. Spring Cloud不像其他Spring子项目那样相对独立,它是一个拥有诸多子项目的大型综合项目。

三 、Spring Cloud与Spring Boot的对比

  1. Spring Boot 是 Spring的一套快速配置脚手架,可以基于Spring Boot 快速开发单个微服务;Spring Cloud是一个基于Spring Boot实现的云应用开发工具;

  2. Spring Boot专注于快速、方便集成的单个个体;Spring Cloud是关注全局的服务治理框架;

  3. Spring Boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置;Spring Cloud很大的一部分是基于Spring Boot来实现。

  4. Spring Boot可以离开Spring Cloud独立使用开发项目,但是SpringCloud离不开Spring Boot,属于依赖的关系。

四、Spring Cloud的常用组件

Spring Cloud 提供了开发分布式微服务系统的一些常用组件,例如服务注册和发现、配置中心、熔断器、 智能路由 、微代理、控制总线、全局锁、分布式会话等。

spring Cloud的子项目很多,但是目前在实际工作中,我们一般业务项目使用到的组件就是常规的几个,其它的一般开发用不到,做为新手,我们先熟悉常用且重要的几个。

接下来的这8个常用组件的描述来自(方志朋的《深入理解Spring Cloud 与微服务构建一书》)

(1)服务注册和发现组件 Eureka

利用 Eureka 组件可以很轻松地实现服务的注册和发现功能。 Eureka 组件提供了服务的健康监测,以及界面友好的 UI 。通过 Eureka 组件提供的 UI, Eureka 组件可以让开发人员随时了解服务单元的运行情况。另外 Spring Cloud 也支持 Consul 和Zookeepe ,用于注册和发现服务。

(2)熔断组件 Hystrix

Hystrix是一个 熔断组件,它除了有一些基本的熔断器功能外,还能够实现服务降级、服务限流的功能。另外 Hystrix 提供了熔断器的健康监测,以及熔断器健康数据的 API 口。 Hystrix Dashboard 组件提供了单个服务熔断器的健康状态数据的界面展示功能,Hystrix Turbine 组件提供了多个服务的熔断器的健康状态数据的界面展示功能。

(3)负载均衡组件 Ribbon

Ribbon 是一个负载均衡组件,它通常和 Eureka 、Zuul、 RestTemplate、Feign 配合使用。Ribbon 和Zuul 配合,很容易做到负载均衡,将请求根据负载均衡策略分配到不同的服务实例中。Ribbon和RestTemplate、Feign配合,在消费服务时能够做到负载均衡。

(4)路由网关 Zuul

路由网关 Zuul 有智能路由和过滤的功能。内部服务的 API 接口通过 Zuul 网关统一对外暴露,内部服务的 API 接口不直接暴露,防止了内部服务敏感信息对外暴露。在默认的情况下,Zuul和Ribbon相结合,能够做到负载均衡、智能路由。Zuul过滤功能是通过拦截请求来实现的,可以对一些用户的角色和权限进行判断,起到安全验证的作用,同时也可以用于输出实时的请求曰志。
上述的4个组件都来自于 Netflix 的公司,称为 Spring Cloud Netflix。

(5)Spring Cloud Config

Spring Cloud Config 组件提供了配置文件统一管理的功能。Spring Cloud Config包括Server端和Client端,Server 端读取本地仓库或者远程仓库的配置文件,所有的Client 向Server读取配置信息,从而达到配置文件统一管理的目的。 通常情况下, Spring Cloud Config 和 Spring Cloud Bus 相互配合刷新指定 Client 或所有Client的配置文件。

(6) Spring Cloud Security

Spring Cloud Security 是对 Spring Security 组件的封装,Spring Cloud Security 向服务单元提供了用户验证和权限认证。一般来说,单独在微服务系统中使用 Spring Cloud Security 是很少见的,一般它会配合 Spring Security 0Auth2 组件一起使用, 通过搭建授权服务,验证 Token或者 JWT 这种形式对整个微服务系统进行安全验证。

(7)Spring Cloud Sleuth

Spring Cloud Sleuth 是一个分布式链路追踪组件,它封装了 Dapper Zipkin 和 Kibana 等组件,通过它可以知道服务之间的相互依赖关系,并实时观察链路的调用情况。

(8)Spring Cloud Stream

Spring Cloud Stream Spring Cloud 框架的数据流操作包,可以封装 RabbitMq 、ActiveMq 、Kafka 、Redis 等消息组件,利用 Spring Cloud Stream 可以实现消息的接收和发送。

五、微服务相比单体服务的优缺点

关于微服务的优缺点,我也不想用官网模板或者书上说的一大堆,young我也经历了从单体服务到微服务项目的过渡,接下来,我就从个人工作体会接地气的讲解一下微服务的优缺点。

优点:

  1. 新人上手快:新人在参与新项目时,只需要下载需求相关模块的代码,了解这部分代码就行了,不需要关注整个项目的代码逻辑,可以减少上手时间。

  2. 本地调试快:以前修改一个功能,整个项目启动,花费时间很长。现在只启动修改的单个模块,启动很快。(不知道有没有和我一样,以前本地启动一个复杂项目花费30s-60s,调试启动一次就能喝杯茶了)。

  3. 开发进度加快:以前一个项目,多个人开发,你改的代码,影响我,我改的代码影响你,某个人改了错误代码提交,整个项目都启动不了。微服务不同功能模块,互不影响,你自己的锅自己背。

  4. 测试难度降低: 单体应用修改一个功能,很容易影响到其他功能,测试难度加大。

  5. 跨语言合作: 同一个项目不同的功能模块可以使用不同语言开发,java,js,php,随心所欲。不同语言只需要提供 http 客户端,便可以实现跨语言调用。

  6. 简单的分库: 同一个项目,不同模块连接不同的数据库,主要是配置简单。(我们项目就连接3个不同的mysql业务数据库,1个redis集群,1个mongo集群)。

  7. 服务集群扩展容易 :现在springcloud做服务集群,节省资源,并且搭建速度快。比如项目中,资源服务功能模块压力大,运维只要快速copy一份配置,部署一台资源服务模块的服务就行了,其它功能服务模块不用管。

缺点:

  1. 运维人员压力大: 单体应用以前运维同事只要监控个一个应用正常运行,而现在却需要保证几十甚至上百个应用运转正常,这是一个艰巨的任务。

  2. 事务、异步、测试面临挑战:跨进程之间的事务、大量的异步处理、多个微服务之间的整体测试都需要有一整套的解决方案,而现在看起来,这些技术并没有成熟。

  3. 服务分割难度大:对于一个项目,如何进行功能划分,哪些功能归属同一个服务模块,对架构师和设计人员的要求较高。

如果你对我的文章感兴趣,可以观看更多我的文章
请点击,前往我的博客:https://www.cnblogs.com/haly/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容