服务发现与配置管理高可用最佳实践|学习笔记(三)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 快速学习服务发现与配置管理高可用最佳实践

开发者学堂课程【服务发现与配置管理高可用最佳实践服务发现与配置管理高可用最佳实践】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/968/detail/14889


五、实践

1.介绍方案:

高可用的方案,服务提供者所有机器都发生注册异常的情况:观察服务的消费者在推空保护打开的情况表现如何。

(1) 右侧是简单的调用场景,外部流量通过网关接入,选择 MSE 产品云原生网关,通过它提供的可观测的能力,方便的观察整个服务调用的具体情况。

image.png

网关的下游有 a,b,c 三个应用,a,b,c 应用是相同的代码,能够支持使用配置管理的方式,动态的去调整他们之间的调用关系,现在设计上的调用关系 a 是调用 b,b 调用 c,通过模拟网络的问题,将应用 b 与注册中心之间的心跳的链路断开(红色××),通过这种方式可以模拟注册异常发生。

为了方便对照,在应用a部署了两个版本(开启推空保护和未开启推空保护)

(2)最终期望结果:

开启推空保护:能够帮助应用a在注册异常的情况下,能够继续调用b。

没有开启推空保护:应用a会调用b发生异常,在网关流量达到应用a之后,观察到网关的请求成功率正好在50%。

2.演示:

(1)购买一套 MSE 注册中心的专业版和云原生网关,并且能够将他们关联起来。

image.png

(2) 配置 next.appmsc-c,现在这个应用下游是那一个应用。

先将应用a 的下游配置成 c,让 a 可以调用 c;

b配置下游是 c;

应用 c 可以配置没有下游,就会只返回它自己的 IP。image.png

(3) 部署应用。

基于 K8S 应用环境部署的配置就是你有的。

应用a版本打开推空保护,把名称命名为 spring.cloud-a-b 的;

应用a没有开启推空保护,选用了 demo1.4.2的版本(客户端),客户端的版本的在1.42之后才支持推空保护开关。

3.操作部署:

Mse-ha k apply -f mse.yaml

Mse-ha k get pod -w

网关上注册服务,网关只需要调用服务a,所以只需要注册服务a,创建一个服务的路由,关联到服务a,点击确定,发布路由。

image.png

mse-ha curl  http://47.102.137.69/ip

调用网关,看具体效果。应用上的路径的是ip,应用a通过 http://47.102.137.69/ip调用应用c,

将配置的改回之前计划的调用关系:

将应用 a 的下游,重新配到应用b,点击发布。

mse-ha curl  http://47.102.137.69/ip

配置成功之后,配置已经生效。符合 a 调用 b,b 调用 c

image.png

通过命令连续的调用接口,模拟真实场景下不间断的业务流量。查看网关的大台,在监控中心里。

image.png

页面放大,看到请求的成功率是100%,一切都正常

image.png

注入故障;

mse-ha ll

mse-ha cat block.yaml

通过k8s的networkplus的机制,模拟应用出口网络发生了异常,应用配置选择了 spring-cloud-b,这个应用出口的流量的只能返回8080。

8080端口:应用之间的调用都是通过8080端口去调用,所以模拟了这个场景,该场景所有的内网调用是不受影响,要通过外网去访问注册中心的时候发生的异常。

b的下游是c(b通过端口去调用c)

注入故障:

mse-ha aooly -f block.yaml

mse-ha curl  http://47.102.137.69/ip

网络阶段之后,注册中心的心跳无法续约,会在大概30秒的时间才会把这个应用b所有的IP摘除。我们在整个链路上没有开启推空保护的应用 a 的版本,调用b会发生失败,在网观测观看会直接报错。

服务列表中应用 b 已经消失,说明调用链出现问题.

image.png

mse-ha curl  http://47.102.137.69/ip

大概50%的概率成功

可以观察到,成功率已经开始下降,一分钟的流量的监控统计的成功率大约是50%,符合预期。

image.png

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
6月前
|
NoSQL API Nacos
Nacos是一个开源的微服务架构下的服务发现和配置管理工具,
Nacos是一个开源的微服务架构下的服务发现和配置管理工具,
63 2
|
10月前
|
存储 缓存 JSON
Nacos配置中心:优化微服务架构的配置管理利器
Nacos配置中心:优化微服务架构的配置管理利器
286 0
|
缓存 前端开发 安全
55-微服务技术栈(高级):微服务网关Soul(数据同步原理)
Soul 网关在启动时,会从从配置服务同步配置数据,并且支持推拉模式获取配置变更信息,并且更新本地缓存。而管理员在管理后台,变更用户、规则、插件、流量配置,通过推拉模式将变更信息同步给 Soul 网关,具体是 push 模式,还是 pull 模式取决于配置。关于配置同步模块,其实是一个简版的配置中心。
385 0
|
Kubernetes 负载均衡 网络协议
K8s如何实现服务发现与配置管理
K8s在实现负载均衡与配置管理上的原理是咋样的呢?
|
缓存 Kubernetes 监控
服务发现与配置管理高可用最佳实践
本篇是微服务高可用最佳实践系列分享的开篇,系列内容持续更新中,期待大家的关注。
服务发现与配置管理高可用最佳实践
|
缓存 运维 容灾
服务发现与配置管理高可用最佳实践|学习笔记(二)
快速学习服务发现与配置管理高可用最佳实践
224 0
服务发现与配置管理高可用最佳实践|学习笔记(二)
|
域名解析 存储 缓存
服务发现与配置管理高可用最佳实践|学习笔记(一)
快速学习服务发现与配置管理高可用最佳实践
109 0
服务发现与配置管理高可用最佳实践|学习笔记(一)
|
20天前
|
Kubernetes Java Nacos
如何快速构建服务发现的高可用能力
本文是阿里云微服务引擎MSE在服务发现高可用的最佳实践介绍。
如何快速构建服务发现的高可用能力
|
开发框架 Sentinel 微服务
SpringCloud微服务实战——搭建企业级开发框架(十五):集成Sentinel高可用流量管理框架【熔断降级】
Sentinel除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。由于调用关系的复杂性,如果调用链路中的某个资源不稳定,最终会导致请求发生堆积。Sentinel 熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断。
200 0
SpringCloud微服务实战——搭建企业级开发框架(十五):集成Sentinel高可用流量管理框架【熔断降级】
|
开发框架 监控 算法
SpringCloud微服务实战——搭建企业级开发框架(十四):集成Sentinel高可用流量管理框架【限流】
Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 安装部署请参考:https://www.jianshu.com/p/9626b74aec1e Sentinel 具有以下特性: • 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
220 0
SpringCloud微服务实战——搭建企业级开发框架(十四):集成Sentinel高可用流量管理框架【限流】