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

简介: 快速学习服务发现与配置管理高可用最佳实践

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

课程地址: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

相关文章
|
机器学习/深度学习 传感器 算法
数字图像处理实验(五)|图像复原{逆滤波和伪逆滤波、维纳滤波deconvwnr、大气湍流扰动模型、运动模糊处理fspecial}(附matlab实验代码和截图)
数字图像处理实验(五)|图像复原{逆滤波和伪逆滤波、维纳滤波deconvwnr、大气湍流扰动模型、运动模糊处理fspecial}(附matlab实验代码和截图)
2183 0
数字图像处理实验(五)|图像复原{逆滤波和伪逆滤波、维纳滤波deconvwnr、大气湍流扰动模型、运动模糊处理fspecial}(附matlab实验代码和截图)
|
Linux
Centos6配置阿里云yum源报错
在CentOS 6配置阿里云Yum源时,可能出现EPEL仓库访问报错(404 Not Found)。解决方法:编辑`/etc/yum.repos.d/epel.repo`文件,将`enabled`和`gpgcheck`参数设为0 ``` 此设置可解决仓库无法访问的问题。
2515 29
|
SQL 存储 分布式计算
三分钟教你学会分析MaxCompute消费明细
很多用户经常被MaxCompute收费所困扰,比如执行了一条 select xxx from yyy 然后扣费1元 ,不知道如何查询到明细,也无法做优化。 接下来,我来教大家学习如何通过控制台消费功能查看你在MaxCompute(DataWorks/Studio)中的每一条SQL/MR计算、存储、下载的消费明细。
7438 110
|
Ubuntu Linux 网络安全
/var/log/auth.log日志详解
`/var/log/auth.log`是Linux(尤其是Debian系如Ubuntu)记录身份验证和授权事件的日志文件,包括登录尝试(成功或失败)、SSH活动、sudo使用和PAM模块的操作。登录失败、SSH连接、sudo命令及其它认证活动都会在此记录。查看此日志通常需root权限,可使用`tail`、`less`或`grep`命令。文件内容可能因发行版和配置而异。例如,`sudo tail /var/log/auth.log`显示最后几行,`sudo grep "failed password" /var/log/auth.log`搜索失败密码尝试。
3102 8
|
Python
Python面向对象编程学习应用案例详解
面向对象编程在Python中通过类定义对象结构和行为。示例:1) 使用`class`关键字定义类,如`class Person`;2) `__init__`方法初始化对象属性,如`self.name`和`self.age`;3) 实例化对象,如`person1 = Person("张三", 25)`;4) 访问属性和方法,如`person1.name`;5) 定义类方法,如`def introduce(self)`;6) 调用方法,如`person1.introduce()`;7) 类继承,如`class Student(Person)`;8) 多态,通过继承重写方法实现。
297 1
|
机器学习/深度学习 算法 数据挖掘
Lesson 7.2 Mini Batch K-Means与DBSCAN密度聚类
Lesson 7.2 Mini Batch K-Means与DBSCAN密度聚类
|
安全 iOS开发
Method Swizzling
Method Swizzling
408 0
Method Swizzling
人工智能 缓存 前端开发
11655 57
人工智能 JavaScript 开发工具
4634 17