什么是微服务?

看笔记二

微服务之间是如何独立通讯的?

服务与服务间采⽤轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)

SpringCloud和Dubbo有什么区别?

Dubbo是通过rpc远程调用,微服务cloud是通过rest调用。

最大区别:
SpringCloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式。
严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适。

品牌机与组装机的区别
很明显,Spring Cloud的功能比DUBBO更加强大,涵盖面更广,而且作为Spring的拳头项目,它也能够与Spring Framework、Spring Boot、Spring Data、Spring Batch等其他Spring项目完美融合,这些对于微服务而言是至关重要的。使用Dubbo构建的微服务架构就像组装电脑,各环节我们的选择自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,总是让人不怎么放心,但是如果你是一名高手,那这些都不是问题;而Spring Cloud就像品牌机,在Spring Source的整合下,做了大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础有足够的了解。

社区支持与更新力度
最为重要的是,DUBBO停止了5年左右的更新,虽然2017.7重启了。对于技术发展的新需求,需要由开发者自行拓展升级(比如当当网弄出了DubboX),这对于很多想要采用微服务架构的中小软件组织,显然是不太合适的,中小公司没有这么强大的技术能力去修改Dubbo源码+周边的一整套解决方案,并不是每一个公司都有阿里的大牛+真实的线上生产环境测试过。

SpringBoot和SpringCloud,请你谈谈对他们的理解。

SpringBoot专注于快速方便的开发单个个体微服务。

SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,
为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务

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

SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。

什么是服务熔断?什么是服务降级?

服务熔断
熔断机制是应对雪崩效应的一种微服务链路保护机制。
当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级, 进而熔断该节点微服务的调用,快速返回"错误"的响应信息。 当检测到该节点微服务调用响应正常后恢复调用链路。在SpringCloud框架里熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败就会启动熔断机制。熔断机制的注解是@HystrixCommand。

服务降级
整体资源快不够了,忍痛将某些服务先关掉,待渡过难关,再开启回来。

如上图,client同时访问abc三个服务,某个时间访问a的人突然变多了,这个时候c访问的人很少,就需要将c中的资源借到a中,c中没有了资源,不如直接将c关掉,可是c关掉的话,还是会有人不断的来访问,这个时候怎么办?就像银行的服务窗口,c窗口的人都去a窗口帮忙了,还开着,人会不停地过来,这个时候就需要如果有人来访问c的话,就返回一个json格式的数据,告知client,以便client做出相应的对策。

服务降级处理是在客户端实现完成的,与服务端没有关系

微服务的优缺点分别是什么?说下你在项目开发中碰到的坑。

优点

每个服务足够内聚、租后小,代码容易理解,这样能聚焦一个置顶的功能和也无需求。
开发简单、开发效率提高,一个服务可能就是专一的干一件事。
微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。
微服务是松耦合的,是有功能意义的服务,无论是在开发阶段还是部署阶段都是独立的。
微服务能使用不同的语言开发。
易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如kenkins,Hudson,banboo。微服务易于被一个开发人员理解,修改和维护,这样的小团队能够更关注自己的工作成果。无需通过合作才能体现价值。
微服务允许你李永荣和最新技术。
微服务只是业务逻辑代码,不会和heml css和其他的界面组件混合。
每个微服务都有自己的fun出能力,可以有自己的数据库,也可以有统一的数据库。

缺点

开发人员要处理分布式系统的复杂性
多服务运维难度,随着服务的增加,运维的压力也会增大
系统部署依赖
服务间通信成本
数据一致性
系统集成测试
性能监控。。。

你所知道的微服务技术栈有哪些?请列举一二

eureka和zookeeper都可以提供服务注册与发现功能,请说说两个的区别?

作为服务注册中心,Eureka比Zookeeper好在哪里
著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性P在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。
因此

Zookeeper保证的是CP,
Eureka则是AP。

1 Zookeeper保证CP
当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接受服务直接down掉不可用。也就是说,服务注册功能对可用性的要求要高于一致性。但是zk会出现这样一种情况,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举。问题在于,选举leader的时间太长,30 ~ 120s, 且选举期间整个zk集群都是不可用的,这就导致在选举期间注册服务瘫痪。在云部署的环境下,因网络问题使得zk集群失去master节点是较大概率会发生的事,虽然服务能够最终恢复,但是漫长的选举时间导致的注册长期不可用是不能容忍的。

2 Eureka保证AP
Eureka看明白了这一点,因此在设计时就优先保证可用性。 Eureka各个节点都是平等的 ,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。而Eureka的客户端在向某个Eureka注册或时如果发现连接失败,则会自动切换至其它节点,只要有一台Eureka还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证强一致性)。除此之外,Eureka还有一种自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,此时会出现以下几种情况:

  1. Eureka不再从注册列表中移除因为长时间没收到心跳而应该过期的服务
  2. Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上(即保证当前节点依然可用)
  3. 当网络稳定时,当前实例新的注册信息会被同步到其它节点中

因此, Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像zookeeper那样使整个注册服务瘫痪。

学习网站:

官网:http://spring.io/projects/spring-cloud
参考书:https://springcloud.cc/spring-cloud-netflix.html
详细中文文档:https://springcloud.cc/spring-cloud-dalston.html
中国社区:http://springcloud.cn/
中文网:https://springcloud.cc/

转载于:https://www.cnblogs.com/LeesinDong/p/10835452.html

SpringCloud学习笔记(一):SpringCloudt相关面试题相关推荐

  1. 分布式系统服务注册与发现原理 SpringCloud 学习笔记

    分布式系统服务注册与发现原理 & SpringCloud 学习笔记 分布式系统服务注册与发现原理 引入服务注册与发现组件的原因 单体架构 应用与数据分离 集群部署 微服务架构 架构演进总结 服 ...

  2. SpringCloud学习笔记(1)- Spring Cloud Alibaba

    文章目录 SpringCloud学习笔记(1)- Spring Cloud Alibaba 服务治理 Nacos 服务注册 Nacos 服务发现与调用 Ribbon 负载均衡 Sentinel 服务限 ...

  3. SpringCloud学习笔记(1)- Spring Cloud Netflix

    文章目录 SpringCloud学习笔记(1)- Spring Cloud Netflix 单体应用存在的问题 Spring Cloud Eureka Eureka Server代码实现 Eureka ...

  4. 【学习笔记】多项式相关算法

    [学习笔记]多项式相关算法 手动博客搬家: 本文发表于20181125 13:19:28, 原地址https://blog.csdn.net/suncongbo/article/details/844 ...

  5. Spring-Cloud 学习笔记-(4)负载均衡器Ribbon

    目录 Spring-Cloud 学习笔记-(4)负载均衡器Ribbon 1.前言 2.什么是负载均衡 2.1.问题分析 2.2.什么是Ribbon 3.快速入门 3.1.实现方式一 3.1.1.修改代 ...

  6. SpringCloud学习笔记(6)----Spring Cloud Netflix之负载均衡-Ribbon的使用

    1. 什么是负载均衡? 负载均衡,就是分发请求流量到不同的服务器. 负载均衡一般分为两种 1. 服务器端负载均衡(nginx) 2. 客户端负载均衡(Ribbon) 2. 服务提供者(spring-c ...

  7. 吴恩达《机器学习》学习笔记十——神经网络相关(2)

    吴恩达<机器学习>学习笔记十--神经网络相关(2) 一. 代价函数 二. 反向传播算法 三. 理解反向传播算法 四. 梯度检测 五. 随机初始化 1.全部初始化为0的问题 2.随机初始化的 ...

  8. 吴恩达《机器学习》学习笔记九——神经网络相关(1)

    吴恩达<机器学习>学习笔记九--神经网络相关(1) 一. 非线性假设的问题 二. 神经网络相关知识 1.神经网络的大致历史 2.神经网络的表示 3.前向传播:向量化表示 三. 例子与直觉理 ...

  9. SpringCloud 学习笔记

    SpringCloud 学习笔记 最开始新建一个新的maven项目,什么都不选,直接写名字就好,这里是 springloud 新建后,把 src 目录删除,在pom.xml文件导入依赖 <!-- ...

  10. springcloud学习笔记---环境搭建--Linux下jdk安装

    springcloud学习笔记-环境搭建–Linux下jdk安装 1.官网下载jdk1.11 链接: https://pan.baidu.com/s/1vZ4PoJAnwczkRICfCNKHAA 提 ...

最新文章

  1. profiles 配置详解
  2. python 系统进程_在Python中监视所有系统进程
  3. 第二章 Matlab变量
  4. Python四道面试题
  5. unity中单位是米还是厘米_小学数学常用单位换算汇总,收藏起来方便孩子查阅...
  6. linux 强行安装软件,Linux下强制不检测依赖安装VNC
  7. SAP ABAP开发入门-徐春波-专题视频课程
  8. JAVA计算机毕业设计基于web的民宿预定系统源码+数据库+系统+lw文档
  9. 重要知识结构-持续更新中
  10. 波长缩短系数matlab,波长缩短效应,天线缩短系数:天线末端效应、相位常数
  11. 【MySQL基础】03:约束与运算符
  12. java实现猴子排序_Java排序 - 不实用的几个排序算法 -- 睡眠排序、猴子排序、面条排序、珠排序...
  13. 通过phpmyadmin修改帝国CMS的管理员密码
  14. 苏大计算机学院在哪,苏州大学计算机技术学院导师介绍:纪其进
  15. 加密市场的牛熊周期;NFT 定义的争论
  16. EWAHCompressedBitmap数据结构及原理
  17. UI设计是什么,就业前景怎么样?
  18. 【杰理AC632n】
  19. 高阶 numpy 数组快速插值(高阶快插)算法探讨
  20. 经典算法-递归-角谷定理

热门文章

  1. 什么是接口测试?为什么要做接口测试?【建议收藏】
  2. 《伟大的博弈》书中的精髓:华尔街是如何从一条小街,一步步发展为世界金融中心的。
  3. Scrapy抓取有关房屋租售信息并生成手机App(二)
  4. 聊一聊直播利器,连麦直播背后的混流方案:到底该怎么混?
  5. 织梦系统(DedeCMS)安全加固方案
  6. 小仙女都爱的五款高颜值蓝牙耳机,时尚与性能兼具高性价比蓝牙耳机推荐
  7. android 钢琴识别音阶对错_Sans钢琴音阶游戏
  8. Linux命令卸载谷歌浏览器,Ubuntu下彻底卸载Chrome浏览器
  9. Field stuMapper in com.jc.zj.service.StuServiceImpl required a bean of type ‘com.jc.zj.dao.StuMapper
  10. SpringMVC怎么样设定重定向和转发的?