栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

简单明了!学Spring Cloud,看这一篇就够了!(附面试题)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简单明了!学Spring Cloud,看这一篇就够了!(附面试题)

如今微服务架构十分流行,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。同时,支持微服务的技术栈也是多种多样的,而Spring Cloud就是这些技术中的翘楚。

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

而且作为Spring的拳头项目,它也能够与Spring framework、Spring Boot、Spring Data、Spring Batch等其他Spring项目完美融合,这些对于微服务而言是至关重要的。

理论概念的梳理

在系统架构与设计的实践中,从宏观上可以总结为三个阶段;

1、集中式架构:就是把所有的功能、模块都集中到一个项目中,部署在一台服务器上,从而对外提供服务(单体架构、单体服务、单体应用);
直白一点:就是只有一个项目,只有一个war;

2、分布式架构:就是把所有的功能、模块拆分成不同的子项目,部署在多台不同的服务器上,这些子项目相互协作共同对外提供服务。
直白一点:就是有很多项目,有很多war包,这些项目相互协作完成需要的功能,不是一 个war能完成的,一个war包完成不了;

比如:

Shop项目:单体应用

Shop项目:拆分--> (user-center, order-center, trade-center) 分布式应用

3、微服务架构:分布式强调系统的拆分,微服务也是强调系统的拆分,微服务架构属于分布式架构的范畴;
并且到目前为止,微服务并没有一个统一的标准的定义,那么微服务究竟是什么?

微服务一词源于 Martin Fowler(马丁.福勒)的名为 Microservices 的博文,可以在他的官方博客上找到这篇文章:

http://martinfowler.com/articles/microservices.html

中文翻译版本:

https://www.martinfowler.cn/articles/microservices.html

简单地说, 微服务是系统架构上的一种设计风格, 它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于 HTTP 的 RESTful API 进行通信协作;

(dubbo -->dubbo协议 )

RESTful API (controller --> 调用 congtroller)

被拆分后的每一个小型服务都专注于完成系统中的某一项业务功能,职责单一, 并且每个服务都是一个独立的项目,可以进行独立的测试、开发和部署等;

由于各个独立的服务之间使用的是基于 HTTP 的 JSON 作为数据通信协作的基础,所以这些微服务也可以使用不同的语言来开发;

比如:项目里面有User模块和Order模块,但是User模块和Order模块并没有直接关系,仅仅只是一些数据需要交互,那么就可以把这2个模块单独分开来,当user需要调用order的时候,order是一个服务方,但是order需要调用user的时候,user又是服务方了, 所以,它们并不在乎谁是服务方谁是调用方,他们都是2个独立的服务,这就是微服务的概念;

经典面试:分布式和微服务有什么区别?

分布式,就是将巨大的一个系统划分为多个模块,这一点和微服务是一样的,都是要把系统进行拆分,部署到不同机器上,因为一台机器可能承受不了这么大的访问压力,或者说要支撑这么大的访问压力需要采购一台性能超级好的服务器,其财务成本非常高,有这些预算完全可以采购很多台普通的服务器了,分布式系统各个模块通过接口进行数据交互,其实分布式也是一种微服务,因为都是把模块拆分变为独立的单元,提供接口来调用,那么它们本质的区别是什么?

它们的本质的区别体现在“目标”上, 何为目标,就是你采用分布式架构或者采用微服务架构,你最终是为了什么,要达到什么目的?

分布式架构的目标是什么? 就是访问量很大一台机器承受不了,或者是成本问题,不得不使用多台机器来完成服务的部署;

而微服务的目标是什么?只是让各个模块拆分开来,不会被互相影响,比如模块的升级或者出现BUG或者是重构等等都不要影响到其他模块,微服务它是可以在一台机器上部署;

但是:分布式也是微服务的一种,微服务也属于分布式;

面试:微服务与Spring-Cloud的关系或区别?

微服务只是一种项目的架构方式、架构理念,或者说是一种概念,就如同我们的MVC架构一样, 那么Spring Cloud便是对这种架构方式的技术落地实现;

面试:微服务一定要使用Spring Cloud吗?

微服务只是一种项目的架构方式、架构理念,所以任何技术都可以实现这种架构理念,只是微服务架构里面有很多问题需要我们去解决,比如:负载均衡,服务的注册与发现,服务调用,服务路由,服务熔断等等一系列问题,如果你自己从0开始实现微服务的架构理念,那头发都掉光了,所以Spring Cloud 帮我们做了这些事情,Spring Cloud将处理这些问题的的技术全部打包好了,我们只需要开箱即用;

What is Spring Cloud?

官网:
https://spring.io/projects/spring-cloud

版本:Greenwich SR3

出自官方:

Spring Cloud为开发人员提供了一些工具用来快速构建分布式系统中的一些常见模式和解决一些常见问题(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、群集状态)。分布式系统的协调导致了很多样板式的代码(很多固定套路的代码),使用Spring Cloud开发人员可以快速建立实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地运行,包括开发人员自己的笔记本电脑、裸机数据中心和云计算等托管平台;

Spring Cloud是目前最流行的进行微服务架构的框架之一,是一个一站式的开发分布式系统的框架,为开发者提供了一系列的构建分布式系统的工具集。

目前已经在各大互联网公司得到广泛应用,是进行微服务架构的优先选择工具,也是程序员进阶和架构师必备的技术。

本课程将全面细致地讲授Spring Cloud的方方面面,涵盖Spring Cloud进行微服务架构的常用工具集,如:注册中心eureka、ribbon、hystrix、feign、zuul、config等,并通过一个个示例为大家清晰地展示Spring Cloud进行微服务开发的点点滴滴,让你学习更快更轻松。

在线观看: https://www.bilibili.com/video/BV1ZV411y7ix

资料下载: http://www.bjpowernode.com/javavideo/204.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/338054.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号