1.微服务是什么

2014年马丁.福勒(Martin Fowler)提出了微服务一说,强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应用,简单说可以看作Idea里面的一个个微服务工程/或者Module

微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事,从技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行单独启动或销毁,拥有自己独立的数据库

2.SpringCloud与Dubbo的差别

SpringCloud:分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶
Dubbo 2017年重启dubbo维护的主要负责人刘军,是阿里巴巴中间件高级研发工程师,曾表示:Dubbo的定位是一款RPC框架
在这里插入图片描述

3.什么是 服务注册发现 Eureka(尤里卡)

3.1 功能
Eureka Server 提供服务注册和发现
Service Provider服务提供方将自身服务注册到Eureka,从而使服务消费方能够找到
Service Consumer服务消费方从Eureka获取注册服务列表,从而能够消费服务

3.2 Eureka和ZooKeeper的主要区别
在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾

eureka 注重实现AP,可用性和容错性高
zookeeper 强调CP,服务宕机后有选举机制,保证一致性

4.负载均衡 Ribbon 和 Feign

Ribbon在客户端实现软负载,工作时分成两步
第一步先选择 EurekaServer ,它优先选择在同一个区域内负载较少的server.
第二步再根据用户指定的策略,在从server取到的服务注册列表中选择一个地址。
其中Ribbon提供了多种策略:比如轮询、随机和根据响应时间加权

Feign通过接口的方法调用Rest服务该请求发送给Eureka服务器,
通过Feign直接找到服务接口,由于在进行服务调用的时候融合了Ribbon技术,所以也支持负载均衡作用

5. 断路器 Hystrix

Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。

“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。

5.1 服务降级
整体资源快不够了,忍痛将某些服务先关掉,待渡过难关,再开启回来,服务降级处理是在客户端实现完成的,与服务端没有关系

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

5.3 服务监控HystrixDashboard
除了隔离依赖服务的调用以外,Hystrix还提供了准实时的调用监控(Hystrix Dashboard),Hystrix会持续地记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求多少成功,多少失败等。Netflix通过hystrix-metrics-event-stream项目实现了对以上指标的监控。Spring Cloud也提供了Hystrix Dashboard的整合,对监控内容转化成可视化界面。

6.路由网关 zuul

Zuul包含了对请求的路由和过滤两个最主要的功能:
其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础.

Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得, 注意:Zuul服务最终还是会注册进Eureka

7.分布式配置中心SpringCloud Config

集中管理配置文件,动态化配置更新,分环境部署
运行期间动态调整配置,不再需要在每个服务部署的机器上写配置文件
当配置发生变动时,服务不需要重启即可感知到配置的变化并应用的配置
将配置信息以rest接口的形式暴露

注意:如果配置bootstrap.yml的内容会最先加载,特别是在application.yml前

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐