微服务入门
1、什么是微服务?
微服务的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底的去耦合,每个微服务提供单个业务功能的服务,一个服务做一件事,单一进程,能够自行单独启动或销毁,拥有自己独立的数据库。
微服务:强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题 提供落地对应服务的一个服务应用。
微服务架构:它是一种架构模式或者说是一种架构风格,它提倡将单一应用划分成一组小的服务,每个服务运行在独立的进程中,服务之间互相协调、互相配合,为用户提供最终的价值。
2、微服务之间是如何独立通信的?
3、springCloud和Dubbo有那些区别?
最大区别:springcloud抛弃了dubbo的RPC通信,采用的是基于http的REST方式。
两者所解决的问题领域不一样,dubbo的定位始终是一款RPC框架,而springcloud的目标是微服务架构下的一站式解决方案。
品牌机与组装机的区别,社区支持与更新力度
4、springBoot和springCloud,谈谈对他们的理解?
SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开SpringBoot,属于依赖的关系.
SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。
5、什么是服务熔断?什么是服务降级?
6、微服务的优缺点分别是什么?说下你在项目开发中碰到的坑?
7、你所知道的微服务技术栈有哪些?请列举一二?
1)服务开发:Springboot、Spring、SpringMVC
2)服务配置与管理:Netflix公司的Archaius、阿里的Diamond等
3)服务注册与发现:Eureka、Consul、Zookeeper等
4)服务调用:Rest、RPC、gRPC
5)服务熔断器:Hystrix、Envoy等
6)负载均衡:Ribbon、Nginx等
7)服务接口调用(客户端调用服务的简化工具):Feign等
8)消息队列:Kafka、RabbitMQ、ActiveMQ等
9)服务配置中心管理:SpringCloudConfig、Chef等
10)服务路由(API网关):Zuul等
11)服务监控:Zabbix、Nagios、Metrics、Spectator等
12)全链路追踪:Zipkin,Brave、Dapper等
13)服务部署:Docker、OpenStack、Kubernetes等
14)数据流操作开发包:SpringCloud Stream(封装与Redis,Rabbit、Kafka等发送接收消息)
15)事件消息总线:Spring Cloud Bus
8、eureka和zookeeper都可以提供服务注册与发现的功能,请说说两者区别?
服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。功能类似于dubbo的注册中心,比如Zookeeper。
Ribbon负载均衡:
Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。
主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。
Feign负载均衡:
是一个声明式的Web服务客户端,使得编写Web服务客户端变得非常容易,
只需要创建一个接口,然后在上面添加注解即可。
参考官网:https://github.com/OpenFeign/feign
Feign集成了Ribbon
利用Ribbon维护了MicroServiceCloud-Dept的服务列表信息,并且通过轮询实现了客户端的负载均衡。而与Ribbon不同的是,通过feign只需要定义服务绑定接口且以声明式的方法,优雅而简单的实现了服务调用
Hystrix断路器:
Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。
“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。
服务熔断:
熔断机制是应对雪崩效应的一种微服务链路保护机制。
当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回"错误"的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。在SpringCloud框架里熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败就会启动熔断机制。熔断机制的注解是@HystrixCommand。
服务降级:
整体资源快不够了,忍痛将某些服务先关掉,待渡过难关,再开启回来。服务降级处理是在客户端实现完成的,与服务端没有关系。
服务监控hystrixDashboard:
除了隔离依赖服务的调用以外,Hystrix还提供了准实时的调用监控(Hystrix Dashboard),Hystrix会持续地记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求多少成功,多少失败等。Netflix通过hystrix-metrics-event-stream项目实现了对以上指标的监控。Spring Cloud也提供了Hystrix Dashboard的整合,对监控内容转化成可视化界面。
Zuul包含了对请求的路由和过滤两个最主要的功能:
其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础.
zuul路由网关:
Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。
注意:Zuul服务最终还是会注册进Eureka
参考资料:
官网:http://projects.spring.io/spring-cloud/
参考书:https://springcloud.cc/spring-cloud-netflix.html
api:
http://cloud.spring.io/spring-cloud-static/Dalston.SR1/
https://springcloud.cc/spring-cloud-dalston.html
springcloud中国社区:http://springcloud.cn/
springcloud中文网:https://springcloud.cc/