SpringCloud 与 SpringBoot 微服务 架构 | 面试题及答案详解
目录
1.什么是微服务?
2.微服务之间如何独立通讯的?
3.SpringCloud 和 Dubbo 有哪些区别?
4.SpringBoot 和 SpringCloud 之间关系?
5.什么是熔断?什么是服务降级?
6.微服务的优缺点是什么?说下你在项目中碰到的坑。
7.eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
8.你所知道微服务的技术栈有哪些?列举一二。
9.什么是微服务架构?
练武不练功,到头一场空。
1.什么是微服务?
单个轻量级服务一般为一个单独微服务,微服务讲究的是 专注某个功能的实现,比如登录系统只专注于用户登录方面功能的实现,讲究的是职责单一,开箱即用,可以独立运行。微服务架构系统是一个分布式的系统,按照业务进行划分服务单元模块,解决单个系统的不足,满足越来越复杂的业务需求。
马丁福勒(Martin Fowler):就目前而言,对于微服务业界并没有一个统一的、标准的定义。但通常而言,微服务架构是一种架构模式或者说是架构风格,它提倡将单一应用程序划分成一组小的服务。每个服务运行在其独立的自己的进程中服务之间相互配合、相互协调,为用户提供最终价值。服务之间采用轻量级通信。每个服务都围绕具体业务进行构建,并能够独立部署到生产环境等。另外应尽量避免统一的、集中的服务管理机制。
通俗的来讲:
微服务就是一个独立的职责单一的服务应用程序。在 intellij idea 工具里面就是用maven开发的一个个独立的module,具体就是使用springboot 开发的一个小的模块,处理单一专业的业务逻辑,一个模块只做一个事情。
微服务强调的是服务大小,关注的是某一个点,具体解决某一个问题/落地对应的一个服务应用,可以看做是idea 里面一个 module。
比如你去医院:你的牙齿不舒服,那么你就去牙科。你的头疼,那么你就去脑科。一个个的科室,就是一个微服务,一个功能就是一个服务。
更多了解见:https://blog.csdn.net/sunming709424/article/details/80578559
业界大牛 马丁福勒(Martin Fowler)讲解 :https://martinfowler.com/bliki/
看不懂英文,这里有中文博客翻译的:https://blog.csdn.net/u013970991/article/details/53333921
2.微服务之间如何独立通讯的?
同步通信:dobbo通过 RPC 远程过程调用、springcloud通过 REST 接口json调用 等。
异步:消息队列,如:RabbitMq、ActiveM、Kafka 等。
3.SpringCloud 和 Dubbo 有哪些区别?
首先,他们都是分布式管理框架。
dubbo 是二进制传输,占用带宽会少一点。SpringCloud是http 传输,带宽会多一点,同时使用http协议一般会使用JSON报文,消耗会更大。
dubbo 开发难度较大,所依赖的 jar 包有很多问题大型工程无法解决。SpringCloud 对第三方的继承可以一键式生成,天然集成。
SpringCloud 接口协议约定比较松散,需要强有力的行政措施来限制接口无序升级。
最大的区别:
Spring Cloud抛弃了Dubbo 的RPC通信,采用的是基于HTTP的REST方式。
严格来说,这两种方式各有优劣。虽然在一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适。
参考:https://www.cnblogs.com/cbxBlog/p/9198401.html
4.SpringBoot 和 SpringCloud 之间关系?
SpringBoot:专注于快速方便的开发单个个体微服务(关注微观);
SpringCloud:关注全局的微服务协调治理框架,将SpringBoot开发的一个个单体微服务组合并管理起来(关注宏观);SpringBoot可以离开SpringCloud独立使用,但是SpringCloud不可以离开SpringBoot,属于依赖关系。
参考:https://blog.csdn.net/qq_41497111/article/details/91042405
5.什么是熔断?什么是服务降级?
服务熔断的作用类似于我们家用的保险丝,当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止对该服务的调用。
服务降级是从整个系统的负荷情况出发和考虑的,对某些负荷会比较高的情况,为了预防某些功能(业务场景)出现负荷过载或者响应慢的情况,在其内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个提前准备好的fallback(退路)错误处理信息。这样,虽然提供的是一个有损的服务,但却保证了整个系统的稳定性和可用性。
参考:https://blog.csdn.net/pengjunlee/article/details/86688858
6.微服务的优缺点是什么?说下你在项目中碰到的坑。
优点:松耦合,聚焦单一业务功能,无关开发语言,团队规模降低。在开发中,不需要了解多有业务,只专注于当前功能,便利集中,功能小而精。微服务一个功能受损,对其他功能影响并不是太大,可以快速定位问题。微服务只专注于当前业务逻辑代码,不会和 html、css 或其他界面进行混合。可以灵活搭配技术,独立性比较舒服。
缺点:随着服务数量增加,管理复杂,部署复杂,服务器需要增多,服务通信和调用压力增大,运维工程师压力增大,人力资源增多,系统依赖增强,数据一致性,性能监控。
7.eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
zookeeper 是CP原则,强一致性和分区容错性。
eureka 是AP 原则 可用性和分区容错性。
zookeeper当主节点故障时,zk会在剩余节点重新选择主节点,耗时过长,虽然最终能够恢复,但是选取主节点期间会导致服务不可用,这是不能容忍的。
eureka各个节点是平等的,一个节点挂掉,其他节点仍会正常保证服务。
8.你所知道微服务的技术栈有哪些?列举一二。
微服务条目 | 落地技术 |
---|---|
服务开发 | SpringBoot、Spring、SpringMVC |
服务配置与管理 | Netfix公司的Archaius、阿里的Dlamond等 |
服务注册与发现 | Eurka、Consul、Zookeeper等 |
服务调用 | Rest(服务通信)、RPC(Dubbo)、GRpc |
服务熔断器 | Hystrix、Envoy等 |
负载均衡 | Nginx、Ribbon等 |
服务接口调用(客户端简化工具) | Fegin等 |
消息队列 | Kafka、RabbitMQ、ActiveMQ等 |
服务配置中心管理 | SpringCloudConfig、Chef等 |
服务路由(API网关) | Zuul等 |
服务监控 | Zabbix,Nagios,Metrics,Spectator等 |
全链路追踪 | Zipkin,Brave,Dapper等 |
服务部署 | Docker,OpenStack,Kubernetes等 |
数据流操作开发包 | SpringCloud Stream(封装与Redis,Rabbit,kafka等发送接收消息) |
事件消息总线 | Spring Cloud Bus |
9.什么是微服务架构?
在前面你理解什么是微服务,那么对于微服务架构基本上就已经理解了。
微服务架构 就是 对微服务进行管理整合应用的。微服务架构 依赖于 微服务,是在微服务基础之上的。
例如:上面已经列举了什么是微服务。在医院里,每一个科室都是一个独立的微服务,那么 这个医院 就是 一个大型的微服务架构,就类似 院长 可以 对下面的 科室进行管理。微服务架构主要就是这种功能。
天上飞的理念,必然有落地的实现。
SpringCloud 与 SpringBoot 微服务 架构 | 面试题及答案详解相关推荐
- Springboot+MySQL+VUE实现的在线教育网站源码+视频教程(Springboot微服务架构)
下载地址:https://download.csdn.net/download/BSDKT/85347133?spm=1001.2014.3001.5503 项目介绍: Springboot+MySQ ...
- SpringBoot微服务架构下的MVC模型总结
SpringBoot微服务架构下的MVC模型产生的原因: 微服务概念改变着软件开发领域,传统的开源框架结构开发,由于其繁琐的配置流程 , 复杂的设置行为,为项目的开发增加了繁重的工作量,微服务致力于解 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- 2014计算机应用基础试题及答案,2014年计算机应用基础试题及答案详解.doc
2014年计算机应用基础试题及答案详解.doc 计算机应用基础2资料 一.单选题 1.第一台电子计算机是1946年在美国研制成功的,该机的英文缩写名是______.答案: A A:ENIAC B:ED ...
- (二)SpringCloud,Alibaba微服务架构之——核心模块及相应技术
一.微服务架构中核心模块及其使用技术总览 二.各模块详细说明 1.注册中心 该模块主要功能为 自动提供服务的注册与发现,集中式管理服务,让 服务调用端发现服务,让服务提供端注册服务,倘若没有注册中心, ...
- 深析SpringCloud与Docker微服务架构
前言 微服务架构师当前软件开发领域的技术热点.它在各种博客,社交媒体和会议演讲上的出镜率非常之高,相信大家也听说过微服务这个名词.然而微服务似乎又是非常虚幻的--我们找不到微服务的完整定义,以至于很多 ...
- SpringCloud简介与微服务架构
1. 微服务架构 1.1 微服务架构理解 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦.你可以将其看作是在 ...
- gradle 指定springcloud 版本_SpringCloud微服务架构开发实战:实现服务注册与发现
实现服务的注册与发现 在前面分别用Eureka Server和Eureka Client来搭建了一台注册服务器,以及多个Eureka Client客户端.Eureka Client在启动后,就会将自己 ...
- SpringCloud与Docker微服务架构实战pdf
下载地址:网盘下载 作为一部帮助大家实现微服务架构落地的作品,<Spring Cloud与Docker微服务架构实战>覆盖了微服务理论.微服务开发框架(Spring Cloud)以及运行平 ...
- 微信架构总监:微信10亿日活场景下,后台系统微服务架构实践 15页ppt全解
01 微信发展主要的技术里程碑 微信在2011年1月21日发布了1.0版本,以即时消息为主:2011年5月上线了语音对讲.查看附近的人:2012年4年发布了里程碑式的朋友圈功能:2013年游戏中心.表 ...
最新文章
- 将Project的内容导出成单独的XPO文件
- 通过反射获取及调用方法(Method)
- python空类型-在Python中__________表示空类型。
- Flutter 实例 - 加载更多的ListView
- Android访问网络系列之--访问图片
- Anaconda3自带jupyter
- microsoft azure
- CSS3常用功能 旋转等
- 数字信号处理实验一 系统响应及系统稳定性
- java 生成kml文件_java使用dom4j解析大量坐标点的kml文件
- abb机器人编程指令写字_ABB机器人编程指令与函数
- 对数幅度谱图像matlab,fft2绘制图像的对数幅度谱,比较图像旋转、平移和缩放后的频谱...
- Internet Download Manager IDM无反弹 切换中文教程
- 为什么计算机里没有桌面显示不出来,电脑开机不显示桌面怎么办解决教程
- Prioritizing Web Usability
- js实现千位分隔符运算
- 服务器硬盘上面的12gb和6gb的区别,4GB和6GB有什么区别?看完千万别买错,已有多人后悔!...
- 如何使用CAD软件来修改表格中CAD字体颜色?
- 如何批量生成矩阵25码
- 《卓有成效的管理者》第一次心得
热门文章
- 实施工程师职业的前景和发展思考
- 几何基础,多种矩阵的学习,世界坐标到屏幕坐标的两种转换方法,三种绘制方框的原理,hookd3d,hookopengl,骨骼透视,主播的秘密,FPS各种BT功能的原理 和检测对抗原理,UE4引擎,U3D
- vscode 软件 git提交代码步骤(结合webstorm软件)
- JAVA JSP javaweb餐厅点餐系统源码(点餐系统)点餐系统网上订餐系统在线订餐系统
- 吉利博越L为何被称为新三好SUV
- t3软件怎么生成报表_用友t3财务报表生成的步骤和流程
- matlab输出动态gif图片
- Tomcat日志配置远程rsyslog采集
- excel熵值法计算权重_小技巧1:Excel进行熵值法计算权重,查收一下!
- js 实现文件上传 php,JS+php后台实现文件上传功能详解