目录

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 微服务 架构 | 面试题及答案详解相关推荐

  1. Springboot+MySQL+VUE实现的在线教育网站源码+视频教程(Springboot微服务架构)

    下载地址:https://download.csdn.net/download/BSDKT/85347133?spm=1001.2014.3001.5503 项目介绍: Springboot+MySQ ...

  2. SpringBoot微服务架构下的MVC模型总结

    SpringBoot微服务架构下的MVC模型产生的原因: 微服务概念改变着软件开发领域,传统的开源框架结构开发,由于其繁琐的配置流程 , 复杂的设置行为,为项目的开发增加了繁重的工作量,微服务致力于解 ...

  3. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  4. 2014计算机应用基础试题及答案,2014年计算机应用基础试题及答案详解.doc

    2014年计算机应用基础试题及答案详解.doc 计算机应用基础2资料 一.单选题 1.第一台电子计算机是1946年在美国研制成功的,该机的英文缩写名是______.答案: A A:ENIAC B:ED ...

  5. (二)SpringCloud,Alibaba微服务架构之——核心模块及相应技术

    一.微服务架构中核心模块及其使用技术总览 二.各模块详细说明 1.注册中心 该模块主要功能为 自动提供服务的注册与发现,集中式管理服务,让 服务调用端发现服务,让服务提供端注册服务,倘若没有注册中心, ...

  6. 深析SpringCloud与Docker微服务架构

    前言 微服务架构师当前软件开发领域的技术热点.它在各种博客,社交媒体和会议演讲上的出镜率非常之高,相信大家也听说过微服务这个名词.然而微服务似乎又是非常虚幻的--我们找不到微服务的完整定义,以至于很多 ...

  7. SpringCloud简介与微服务架构

    1. 微服务架构 1.1 微服务架构理解 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦.你可以将其看作是在 ...

  8. gradle 指定springcloud 版本_SpringCloud微服务架构开发实战:实现服务注册与发现

    实现服务的注册与发现 在前面分别用Eureka Server和Eureka Client来搭建了一台注册服务器,以及多个Eureka Client客户端.Eureka Client在启动后,就会将自己 ...

  9. SpringCloud与Docker微服务架构实战pdf

    下载地址:网盘下载 作为一部帮助大家实现微服务架构落地的作品,<Spring Cloud与Docker微服务架构实战>覆盖了微服务理论.微服务开发框架(Spring Cloud)以及运行平 ...

  10. 微信架构总监:微信10亿日活场景下,后台系统微服务架构实践 15页ppt全解

    01 微信发展主要的技术里程碑 微信在2011年1月21日发布了1.0版本,以即时消息为主:2011年5月上线了语音对讲.查看附近的人:2012年4年发布了里程碑式的朋友圈功能:2013年游戏中心.表 ...

最新文章

  1. 将Project的内容导出成单独的XPO文件
  2. 通过反射获取及调用方法(Method)
  3. python空类型-在Python中__________表示空类型。
  4. Flutter 实例 - 加载更多的ListView
  5. Android访问网络系列之--访问图片
  6. Anaconda3自带jupyter
  7. microsoft azure
  8. CSS3常用功能 旋转等
  9. 数字信号处理实验一 系统响应及系统稳定性
  10. java 生成kml文件_java使用dom4j解析大量坐标点的kml文件
  11. abb机器人编程指令写字_ABB机器人编程指令与函数
  12. 对数幅度谱图像matlab,fft2绘制图像的对数幅度谱,比较图像旋转、平移和缩放后的频谱...
  13. Internet Download Manager IDM无反弹 切换中文教程
  14. 为什么计算机里没有桌面显示不出来,电脑开机不显示桌面怎么办解决教程
  15. Prioritizing Web Usability
  16. js实现千位分隔符运算
  17. 服务器硬盘上面的12gb和6gb的区别,4GB和6GB有什么区别?看完千万别买错,已有多人后悔!...
  18. 如何使用CAD软件来修改表格中CAD字体颜色?
  19. 如何批量生成矩阵25码
  20. 《卓有成效的管理者》第一次心得

热门文章

  1. 实施工程师职业的前景和发展思考
  2. 几何基础,多种矩阵的学习,世界坐标到屏幕坐标的两种转换方法,三种绘制方框的原理,hookd3d,hookopengl,骨骼透视,主播的秘密,FPS各种BT功能的原理 和检测对抗原理,UE4引擎,U3D
  3. vscode 软件 git提交代码步骤(结合webstorm软件)
  4. JAVA JSP javaweb餐厅点餐系统源码(点餐系统)点餐系统网上订餐系统在线订餐系统
  5. 吉利博越L为何被称为新三好SUV
  6. t3软件怎么生成报表_用友t3财务报表生成的步骤和流程
  7. matlab输出动态gif图片
  8. Tomcat日志配置远程rsyslog采集
  9. excel熵值法计算权重_小技巧1:Excel进行熵值法计算权重,查收一下!
  10. js 实现文件上传 php,JS+php后台实现文件上传功能详解