架构思考

Spring Cloud(Eureka、Ribbno、Hystrix、Feign、Zuul、Config)

Eureka 注册中心

服务注册与发现。

eureka服务器spring boot项目,客户端是服务的注册和消费

Eureka服务集群相互注册,互相守望,a服务配置指向b,b配置指向a. 集群环境下提供者和消费者通过url注册到多个Eureka服务器,一个提供者服务url填写多个Eureka地址,达到通知注册到多个Eureka集群。

Eureka服务集群:指向对方的路径

 

提供者配置集群:注册到集群的Eureka

服务注册集群是通过相同的服务名,url配置多个服务地址。调用时通过配置的服务名称调用。

提供者集群:配置相同的服务名,注册到eureka形成eureka提供者集群。

 

 

服务自我保护机制心跳机制,各一段时间服务向eureka发心跳,eureka服务界面会出现警告⚠️

保护机制暂时不会注销,应对网络异常,不盲目注销

eureka客户端可以配置发送心跳的时间,超过时间可以将服务提除。

---------------------------

Ribbno

ribbno配合Eureka使用,根据Eureka服务名字调用,负载均衡

fieign, 根据注解和接口调用

负载均衡,服务调用

ribbno解决单点故障(集群高可用)

ribbno通过RestTemplate进行调用实现负载均衡,ribbno对RestTemplate走了封装实现负载均衡

实现复制只有服务提供者配置的服务名称相同,多个相同服务提供者注册到eureka集群,消费者通过RestTemplate调用即可(默认使用轮训的策略,随机,加权等可选)

它是客户端组件,已经集成在Eureka客户端。

支持多种负载均衡算法,也支持自定义算法。属于工具栏框架,不用单独部署,导入依赖直接使用即可

 

--------------------------

CAP理论

                

Hystrix

服务熔断

属于工具栏框架,不用单独部署,导入依赖消费端入口方法注解开启直接使用

调用服务时使用注解HystrixCommend,如果出现异常,执行指定的方法,默认超时时间是一秒,可以修改

 

服务降级

自己服务抛出异常,或者调用的远程服务异常,均衡触发熔断方法,达到熔断降级。

也可以忽略异常,不触发熔断方法。降级可以拿到异常信息,如:500

可以不用注解,使用自定义熔断方法,可以实现异步。

 发生熔断获取异常信息

 服务监控

创建spring boot Hystrix项目,做为仪表盘监控服务,监控具体的服务,除了需要导入Hystrix依赖外还要导入spring boot健康检查监控依赖

 

 Feign(申明试接口调用)相当Ribbno的简化,基于Ribbno实现的

对Hystrix和ribbno做了整合,简化使用,声明之后直接调用,消费方导入feign依赖,配置文件指定注册中心地址,消费方通过注解调用,@feignClient(服务名),@GetMapping(访问地址)进行调用。

 

 注入调用

 

Zuul

网关将所有的外部请求经过它的调度实现鉴权、动态路由,

配置文件中配置不同的路由规则路由到不同的服务,可以忽略服务,或者访问路径添加前缀。

可以通过配置path配置映射路径,也可以通过url

 

 

 

 

 

 

Zuul是一个独立的服务是我们服务的统一入口。

 

config

分布式配置中心(server),是一个独立的微服务应用。

配置文件统一管理,方便维护,配置中心(server)存git上获取配置信息同步到各个需要修改配置文件的微服务(client)。配置问题保存在远程的git仓库,添加依赖的服务进行读取。

本地读取,创建提供配置文件项目,导入confg server依赖,创建配置目录供其他服务读取,读取服务方根据配置文件配置的url地址找读哪个服务地址进行读取。

远程读取,配置问题放在git仓库,confg server从git读取,其他服务从confg server进行读取。

----------------------------------------------------------------------------------------------------------------

Dubbo 

分布式服务的优势与不足

模块间分离,经常变动的模块可以单独部署

单体应该随着业务发展体量越来越大,难以维护和扩展

服务间通讯变的复杂

duboo特点:高性能的RPC框架,支持负载均衡、服务注册与发现、高可用扩展、灰度发布、管理监控后台等

ZooKeeper注册中心

搭建注册中心,创建服务提供者和服务消费者

搭建管理控制台

1.服务提供者导入ZooKeeper和dubbo依赖

2.暴露服务配置服务提供者(指定服务名、注册中心地址、真正需要暴露的接口)

服务提供者启动后dubbo管理后台可以看到启动的服务

配置服务消费这进行调用(配置服务名、注册中心地址、需要调用的接口)

安装配置监控中心

dubbo配置开启启动检查,启动时检查注册中心是否有服务提供者,没有时启动报错

 

 设置调用超时检查

 配置具体的方法调用超时

全局配置使用consumer

 

 

 

 

 配置重试次数

 幂等接口可以重试

配置多版本(灰度发布)

 dubbo直联

负载均衡机制默认随机

1.基于权重的随机负载

 

2.基于权重的轮训

 

 

 

 3.最新活跃数

4.一致性哈希

 默认开始随机负载

 后台管理修改服务权重

服务降级返回为空(屏蔽掉部分服务)

 

posted @ 2020-08-20 16:15  91程序猿  阅读(314)  评论(0)    收藏  举报