标签:服务提供者 www. 解决 org 用户 恢复 结合 log 功能
微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路,例如 Dubbo 和 Spring Cloud。
目前微服务实现方式主要有两种Dubbo和SpringCloud:
一、Dubbo:(https://www.cnblogs.com/liangblog/p/6165070.html)
Dubbo是一个分布式服务框架,致力于提供高性能透明化RPC远程调用方案,提供SOA服务治理解决方案。
Dubbo使用 RPC 通讯协议。
架构原理:(http://dubbo.apache.org/zh-cn/docs/user/preface/architecture.html)
zookeeper注册中心:
流程说明:
/dubbo/com.foo.BarService/providers
目录下写入自己的 URL 地址/dubbo/com.foo.BarService/providers
目录下的提供者 URL 地址。并向 /dubbo/com.foo.BarService/consumers
目录下写入自己的 URL 地址/dubbo/com.foo.BarService
目录下的所有提供者和消费者 URL 地址。支持以下功能:
<dubbo:registry check="false" />
时,记录失败注册和订阅请求,后台定时重试<dubbo:registry username="admin" password="1234" />
设置 zookeeper 登录信息<dubbo:registry group="dubbo" />
设置 zookeeper 的根节点,不设置将使用无根树*
号通配符 <dubbo:reference group="*" version="*" />
,可订阅服务的所有分组和所有版本的提供者dubbo服务治理:
服务治理主要作用是改变运行时服务的行为和选址逻辑,达到限流,权重配置等目的;主要配置有:条件路由(包括黑白名单),动态配置(包括权重,负载均衡)
动态配置是和路由规则平行的一类服务治理治理功能,主要作用是在不重启服务的情况下,动态改变调用行为。
权重调节是动态配置的子功能,主要作用是改变服务端的权重,更大的权重会有更大的几率被客户端选中作为服务提供者,从而达到流量分配的目的:
负载均衡也是动态配置的子功能,主要作用是调整客户端的选址逻辑,目前可选的负载均衡策略有随机,轮训和最小活跃;
二、SpringCloud: (https://www.cnblogs.com/liangblog/p/9566525.html)
Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,是一系列框架的有序集合,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追踪等。Spring Cloud 并不重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成本。
Spring Cloud 使用 HTTP 协议的 REST API。
总体架构:
Spring Cloud运行基础组件:
服务治理: Spring Cloud Eureka
Eureka是微服务架构中的注册中心,专门负责服务的注册与发现
客户端负载均衡: Spring Cloud Ribbon
Ribbon作用是负载均衡,会帮你在每次请求时选择一台机器,均匀的把请求分发到各个机器上。默认使用的最经典的Round Robin轮询算法。
服务容错保护: Spring Cloud Hystrix
Hystrix是隔离、熔断以及降级的一个框架。通过Hystrix的线程池来发起请求,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题
声明式服务调用: Spring Cloud Feign
Feign的一个关键机制就是使用了动态代理:
首先,如果你对某个接口定义了@FeignClient注解,Feign就会针对这个接口创建一个动态代理
接着你要是调用那个接口,本质就是会调用 Feign创建的动态代理,这是核心中的核心
Feign的动态代理会根据你在接口上的@RequestMapping等注解,来动态构造出你要请求的服务的地址
最后针对这个地址,发起请求、解析响应
API 网关服务:Spring Cloud Zuul
如果前端、移动端要调用后端系统,统一从Zuul网关进入,网关会根据请求中的一些特征,将请求转发给后端的各个服务。
好处是可以做统一的降级、限流、认证授权、安全,
大致流程如下:
SpringCloud相较于Dubbo来说更为全面,拥有服务治理,配置服务,网关路由,异常处理等,比Dubbo更全面,尤其是在结合SpringBoot框架时只需添加依赖,使用方便,简化配置文件。在集群中各功能组件协调工作时使用SpringCloud架构项目能承受更高并发量,具有更强大的容错高可用性。
三、服务降级:(服务治理时配置服务降级,或代码级别设置)
服务降级就是当服务响应超时或连接请求超时,不用继续等下去,而采用降级措施,意思就是返回一个planB,返回一个我们自己定义好的提示。
而为什么要使用服务降级,这是防止分布式服务发生雪崩效应,什么是雪崩?就是蝴蝶效应,当一个请求发生超时,一直等待着服务响应,那么在高并发情况下,很多请求都是因为这样一直等着响应,直到服务资源耗尽产生宕机,而宕机之后会导致分布式其他服务调用该宕机的服务也会出现资源耗尽宕机,这样下去将导致整个分布式服务都瘫痪,这就是雪崩。如果你要问为什么不做集群?集群当然做,但是一台服务宕机之后,其他流量分发到其他集群机器上,压力也会随之加大,时间久了整个集群也会垮了,这只是个时间问题。为了防止产生了雪崩效应那么就该对服务配置降级,一旦请求超过规定时间立即返回自定义好的提示,无需继续等待。
几种服务降级方式:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
标签:服务提供者 www. 解决 org 用户 恢复 结合 log 功能
原文地址:https://www.cnblogs.com/liangblog/p/10531901.html