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

本文涉及的产品
云原生网关 MSE Higress,422元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
服务治理 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

相关文章
|
存储 缓存 自然语言处理
【Elasticsearch专栏 05】深入探索:Elasticsearch在处理非结构化数据时,倒排索引有何优势
在处理非结构化数据时,倒排索引的优势在于其高效的查询性能,能够迅速匹配文本中的关键词,实现全文搜索。此外,倒排索引支持复杂的查询操作,可扩展性强,且通过压缩技术优化存储空间。这些特点使倒排索引成为处理非结构化数据的理想选择。
214 1
|
7月前
|
数据采集 Web App开发 存储
深度解析:使用 Headless 模式 ChromeDriver 进行无界面浏览器操作
本文介绍了基于无界面浏览器(如ChromeDriver)和代理IP技术的现代爬虫解决方案,以应对传统爬虫面临的反爬机制和动态加载内容等问题。通过Selenium驱动ChromeDriver,并结合亿牛云爬虫代理、自定义Cookie和User-Agent设置,实现高效的数据采集。代码示例展示了如何配置ChromeDriver、处理代理认证、添加Cookie及捕获异常,确保爬虫稳定运行。性能对比显示,Headless模式下的ChromeDriver在数据采集成功率、响应时间和反爬规避能力上显著优于传统爬虫。该方案广泛应用于电商、金融和新闻媒体等行业。
409 0
深度解析:使用 Headless 模式 ChromeDriver 进行无界面浏览器操作
|
12月前
|
机器学习/深度学习 自然语言处理 并行计算
多模态大模型技术原理与实战(2)
大模型被广泛应用有以下几个前提:效果好、效率高、成本可控,目前,大模型在这几个方面还不够理想。
446 5
如何初始化PoolingHttpClientConnectionManager
【8月更文挑战第26天】如何初始化PoolingHttpClientConnectionManager
613 7
|
消息中间件 运维 Kubernetes
探索微服务架构的演变与实践
在软件开发的长河中,微服务架构如同一股清流,它改变了我们构建和部署应用的方式。本文将深入探讨微服务架构从诞生到成熟的发展历程,分析其核心价值与面临的挑战,并分享实践中的经验教训。通过具体案例,我们将揭示如何在不断变化的技术生态中有效运用微服务架构,以及如何克服实施过程中的障碍。
|
存储 数据库 监控
|
数据采集 数据可视化 大数据
R语言在统计分析中的应用与实践
【7月更文挑战第30天】R语言以其强大的统计分析能力和开源自由的特性,在统计分析领域发挥着重要作用。无论是基础的描述性统计、推断性统计,还是复杂的回归分析、时间序列分析和生存分析,R语言都提供了丰富的函数和包来支持。通过学习和掌握R语言,数据分析师和研究者可以更加高效地进行数据分析,获取有价值的信息和结论。未来,随着大数据和云计算等新兴技术的发展,R语言的应用前景将更加广阔。
|
数据安全/隐私保护
BUUCTF-MISC-08基础破解
BUUCTF-MISC-08基础破解
|
SQL 安全 算法
数字堡垒之下:网络安全漏洞与加密技术的较量
在数字化时代的浪潮中,网络安全成为保护个人隐私与企业资产的关键防线。本文深入探讨了网络系统中的安全漏洞及其成因,分析了当前主流的加密技术如何为我们的数字生活提供保障,并强调了提升安全意识在防御网络攻击中的不可或缺之作用。文章旨在为读者揭示网络安全的重要性,并提供实用的防护建议。
60 1
|
数据安全/隐私保护
wpa_supplicant 的使用
wpa_supplicant 的使用
427 1