当前位置: 首页 > 科技观察

厉害了,详细看过SpringCloud的微服务架构|附面试题

时间:2023-03-17 18:27:25 科技观察

现在微服务架构很流行,用微服务搭建系统也会带来更清晰的业务划分和扩展性。同时,支持微服务的技术栈也多种多样,而SpringCloud是这些技术中的佼佼者。作为新一代的服务框架,SpringCloud的口号是开发“面向云的应用”,为微服务架构提供更全面的技术支持。并且作为Spring的拳头项目,它还可以与其他Spring框架、SpringBoot、SpringData、SpringBatch等对微服务至关重要的Spring项目完美集成。SpringCloud的完整技术构成:今天给大家分享最全最通俗易懂的springcloud视频SpringCloud微服务架构实战https://www.ixigua.com/6895923297481916939系统架构与理论概念相结合设计在实践中,从宏观上可以概括为三个阶段;集中式架构:就是把所有的功能和模块都集中到一个项目中,部署在一台服务器上,对外提供服务(单体架构,单体服务,单体应用);直截了当:只有一个项目,只有一场战争;分布式架构:所有功能和模块拆分成不同的子项目,部署在多台不同的服务器上。项目相互合作,对外提供服务。直截了当:有很多项目和很多战争包。这些项目相互配合完成需要的功能,不是一个war能完成的,一个warpackage是不行的;例如:店铺项目:单体应用店铺项目:拆分->(user-center,order-center,trade-center)分布式应用微服务架构:分布式强调系统的拆分,微服务也强调拆分系统,微服务架构属于分布式架构范畴;而微服务至今还没有统一的标准定义,那么微服务到底是什么?微服务这个词来自MartinFowler的一篇博文Microservices,可以在他的官方博客找到这篇文章:http://martinfowler.com/articles/microservices.html中文翻译版:https://www.martinfowler.cn/articles/microservices.html简单来说,微服务是一种系统架构设计风格,其主要目的是将一个原本独立的系统拆分成多个小服务,这些小服务都运行在各自独立的进程中,服务之间相互通信并通过基于HTTP的RESTfulAPI进行合作;(dubbo-->dubboprotocol)RESTfulAPI(controller-->callingcontroller)拆分后的每个小服务都专注于完成系统中的某个业务功能,职责单一,每个服务都是一个独立的项目,可以进行独立测试、开发和部署等;由于基于HTTP的JSON作为独立服务之间数据通信和协作的基础,这些微服务也可以用不同的语言开发;例如:项目中有User模块和Order模块,但是User模块和Order模块没有直接关系,只是需要交互一些数据,那么这两个模块就可以分开了。当用户需要调用订单时,订单是服务器,但是当订单需要调用用户时,用户又是服务器,所以他们不关心谁是服务器,谁是调用者,他们是两个独立的服务,这就是微服务的概念;经典访谈:分布式和微服务有什么区别?分布式就是把一个庞大的系统分成多个模块。熊如果不能满足这么大的访问压力,或者支撑这么大的访问压力,就需要购买性能超好的服务器,其财务成本非常高。有了这个预算,你可以购买很多普通的服务器。分布式系统的各个模块通过接口进行数据交互,其实分布式也是微服务的一种,因为它们都是将模块拆分成独立的单元,提供接口调用,那么它们的本质区别是什么?它们的本质区别体现在“目标”上面,目标是什么,即如果你采用分布式架构或者微服务架构,你的最终目的是什么,你要达到什么目的?分布式架构的目标是什么?是访问量大的机器承受不了,或者是成本问题,不得不用多台机器来完成服务的部署;微服务的目标是什么?只是将模块分开,互不影响,比如模块升级或BUG或重构不影响其他模块等。微服务可以部署在一台机器上;但是:分布式也是微服务的一种,微服务也是分布式的;面试:微服务与Spring-Cloud的关系或区别?微服务只是一种项目架构,架构概念,或者一个概念,就像我们的MVC架构一样,那么SpringCloud就是这种架构方式的技术实现;专访:微服务一定要用SpringCloud吗?微服务只是一个项目的架构方式和架构理念,所以任何技术都可以实现这个架构理念,但是微服务架构中有很多问题需要我们去解决,比如:负载均衡,服务注册和发现,服务调用,服务路由、服务熔断等一系列问题,如果你从0开始去实现微服务的架构理念,那你的头发就掉光了,所以SpringCloud为我们做了这些事情,SpringCloud处理这些问题的所有技术已打包,我们只需要开箱即可使用;什么是春云?官网:https://spring.io/projects/spring-cloud版本:GreenwichSR3来自官方:SpringCloud是开发者提供的一些工具,可以快速构建分布式系统中的一些通用模式,解决一些常见的问题(比如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、Leader选举、分布式会话、集群状态)分布式系统的协调导致大量的样板代码(很多具有固定例程的代码),使用SpringCloud开发人员可以快速构建实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地工作,包括开发人员自己的笔记本电脑、裸机数据中心和云计算等托管平台;SpringCloud特性SpringCloud为分布式系统开发的典型应用场景提供了很好的开发。开箱即用的功能,例如:分布式/版本化配置服务注册和发现路由服务到服务调用负载均衡断路器全局锁Leader选举和集群状态分布式消息传递SpringCloud下的主项目SpringCloudConfigSpringCloudNetflixSpringCloudBusSpringCloudCloudfoundrySpringCloudOpenServiceBrokerSpringCloudClusterSpringCloudConsulSpringCloudSecuritySpringCloudSleuthSpringCloudDataFlowSpringCloudStreamSpringCloudStreamAppStartersSpringCloudTaskSpringCloudTaskAppStartersSpringCloudZookeeperSpringCloudAWSSpringCloudConnectorsSpringCloudStartersSpringCloudCLISpringCloudContractSpringCloudGatewaySpringCloudOpenFeignSpringCloudPipelinesSpringCloudFunctionSpringCloudversionsSpringCloud由一系列独立的项目组成,每个项目都有不同的发布节奏,每次SpringCloud发布一个版本,这个系列的子p项目将合并。为了避免版本号被误解,与子项目SpringCloud的版本号混淆,所以SpringCloudngCloud发布的版本是按伦敦地铁站名字母顺序排列的(“Angel”为第一个版本,“Brixton”为第二个),字母顺序从A-Z,最新稳定版为GreenwichSR3,当SpringCloud中的某些子项目出现严重bug或重大更新时,发布序列将推出名称以“.SRX”结尾的版本,其中“X”为数字,如:GreenwichSR1、GreenwichSR2、GreenwichSR3;SpringCloud是微服务开发的一整套解决方案。由SpringCloud开发,各个项目依然使用SpringBoot;SpringCloud与SpringBoot兼容。SpringCloud整体架构ServiceProvider:服务暴露方的服务提供方ServiceConsumer:调用远程服务的服务消费者。EureKaServer:服务注册中心和服务发现中心。服务消费者直接调用服务提供者。我们知道Springcloud是基于SpringBoot构建微服务的。1、创建一个SpringBoot项目,添加SpringBoot的相关依赖;2、创建服务提供者的访问方式,即后续消费者如何访问提供者;SpringCloud是基于rest访问的,所以我们添加了一个Controller,在Controller中提供一个访问入口:3.启动并运行SpringBoot程序来访问controller;服务消费者也是一个SpringBoot项目,服务消费者主要用于消费服务提供者提供的服务;1、创建一个SpringBoot项目,添加SpringBoot的相关依赖;2.开发一个消费者方法来消费服务提供者提供的服务。这个consumer方法也是一个Controller:3、启动SpringBoot程序,测试服务消费者调用服务提供者;