16、构建智能MSA企业系统:原理、实践与应用

构建智能MSA企业系统:原理、实践与应用

构建必要工具

创建项目工具的目的在于构建AI模型、模拟整个ABC - Intelligent - MSA系统,以及收集统计数据并分析系统操作。虽然网上可能有可用工具,但我们选择为特定用例定制简单工具。以下是主要工具:
1. API流量模拟器 simulate_api_rqsts.py 可模拟系统中一个或多个微服务的API请求负载。它能创建多线程API请求,并并行发送到各个目标微服务。API负载以每分钟请求数衡量,请求节奏可均匀或随机。
- 均匀节奏:若配置为每分钟600个API请求,每100ms发送1个API调用。
- 随机节奏:每个API调用在随机时间段 TR 后发送,且 TR 范围为 (1 - 95%)T <= TR <= (1 + 95%)T ,例如每分钟600个请求时, 5 ms <= TR <= 195 ms
2. 微服务性能监视器 ms_perfmon.py 是一个多线程工具,用于在理想条件模拟期间收集和构建AI训练数据。它向系统中的每个微服务发送并行API调用,并记录API调用超链接、发送日期和时间、接收微服务的响应时间以及HTTP响应代码。每个微服务的统计数据存储在以API链接命名的CSV日志文件中,位于 perfmon_stats 目录下。
3. 响应延迟模拟器 :为模拟延迟响应或有问题的微服务,关键微服务中添加了延迟API调用响应的功能。该功能有最小延迟和最大延迟两个可配置值,当微服务收到API调用时,会在配置的最小和最大延迟之间随机分配一个延迟值,然后等待该时间再响应。

#Simulate a delay if received an API to do so
if delay_max_sec > 0:
    delay_seconds = round(delay_min_sec + random.random()*(delay_max_sec - delay_min_sec), 3)
    #print("Adding a delay %s ..." %delay_seconds)
    time.sleep(delay_seconds)

可使用API调用配置最大和最小延迟响应,例如:

curl http://inventory_ms:8080/api/simulatedelay?min=1500&max=3500
  1. API响应错误模拟器 :该功能仅用于演示,使用每小时平均HTTP错误这一可配置值。启用后,微服务会随机选择适用的服务器500错误,并以匹配配置错误率的随机节奏响应API请求。可使用API调用配置错误率,例如:
curl http://inventory_ms:8080/api/response_err?rate=5

系统初始化与训练数据构建

系统初始化步骤

  1. 使用系统的Docker compose文件 abc_msa.yaml 初始化MSA系统:
$ docker-compose -f abc_msa.yaml up &
  1. 启用Docker的API远程管理:
    1. 在Ubuntu系统上,使用 vi vim 等工具编辑 /lib/systemd/system/docker.service 文件。
    2. 找到 ExecStart 条目并修改为:
ExecStart=/usr/bin/dockerd -H=fd:// -H=tcp://0.0.0.0:2375
3. 保存文件。
4. 重新加载Docker引擎:
systemctl daemon-reload
5. 验证Docker引擎是否正常响应API调用:
curl http://localhost:8080/version

构建和使用训练数据

  1. 使用 ms_perfmon 工具在 <ms_perfmon's working path>/perfmon_stats 目录下为每个微服务创建单独的统计文件。建议至少收集48小时的训练数据,理想情况下应考虑季节性负载。
  2. 运行 training_data_cleanup.py 工具检测异常值并清理性能数据:
python training_data_cleanup.py
  1. 编写Python代码训练PBW:
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# 读取数据
payment_ms_stats_df = pd.read_csv('scrubbed_stats/payment_ms_stats.csv')

# 提取要预测的列
payment_ms_rt = np.array(payment_ms_stats_df['response_time'])

# 加载其余性能数据列
model_data = payment_ms_stats_df.drop('response_time', axis = 1)
model_data = np.array(model_data)

# 划分训练和测试数据
model_data_train, model_data_test, payment_ms_rt_train, payment_ms_rt_test = train_test_split(model_data, payment_ms_rt, test_size = 0.20, shuffle=True)

# 构建模型
lr_model = LinearRegression()
lr_model.fit(model_data_train, payment_ms_rt_train);

# 保存数据到CSV文件
trend_payment_ms_rt_predictions = lr_model.predict(payment_ms_rt)
df = payment_ms_rt_df.assign(predicted_payment_ms_rt = trend_payment_ms_rt_predictions)
df.to_csv("predicted_payment_ms_rt_trend.csv", mode = 'w', index=False)

系统初始化流程图

graph LR
    A[开始] --> B[使用abc_msa.yaml初始化系统]
    B --> C[启用Docker API远程管理]
    C --> D[编辑docker.service文件]
    D --> E[修改ExecStart条目]
    E --> F[保存文件]
    F --> G[重新加载Docker引擎]
    G --> H[验证Docker引擎响应]
    H --> I[系统运行收集训练数据]

模拟ABC - Intelligent - MSA的操作

使用 docker-compose 重新初始化系统,使用 abc_intelligent_msa.yaml 文件:

$ docker-compose -f abc_intelligent_msa.yaml up &

该文件包含AI服务的初始化。系统运行后,AI工具会监控和收集微服务性能,当检测到系统问题且指标超过配置的性能阈值时触发修复操作。可使用 simulate_api_rqsts API流量模拟器和响应延迟模拟器模拟生产流量,必要时使用API响应错误模拟器模拟HTTP错误。

PBW的实际应用

监控与预警

在训练期间,PBW构建了AI模型并计算了ABC - Intelligent - MSA系统中每个微服务的预期响应时间。例如,在正常系统负载下,库存微服务的平均响应时间约为20ms。我们配置PBW的警告阈值为250ms,行动阈值为750ms。通过 simulate_api_rqsts 增加库存微服务的API调用负载,并使用响应延迟模拟器添加延迟,观察PBW的反应。当响应时间持续超过250ms但低于750ms时,PBW会触发黄色警报并发送到NMS/OSS系统。

自我修复操作

当响应时间持续超过750ms时,PBW会发送红色警报到NMS/OSS系统,并采取自我修复操作。在我们的演示系统中,仅配置了在微服务出现问题时重启微服务容器。PBW会锁定库存微服务,避免与其他AI服务的修复操作冲突,然后向Docker引擎发送重启API调用,验证微服务是否恢复正常,最后解锁微服务。

# 重启Docker容器
POST /containers/<container id or name>/restart?t=10

PBW操作流程图

graph LR
    A[开始监控] --> B[检测响应时间]
    B --> C{响应时间 > 250ms?}
    C -- 是 --> D{响应时间 > 750ms?}
    C -- 否 --> B
    D -- 是 --> E[发送红色警报]
    D -- 否 --> F[发送黄色警报]
    E --> G[锁定微服务]
    G --> H[发送重启API调用]
    H --> I[验证微服务状态]
    I --> J[解锁微服务]
    F --> B

通过以上步骤和工具,我们可以构建一个智能的MSA企业系统,实现系统的监控、预警和自我修复功能。在实际应用中,可根据具体需求进一步优化和扩展系统,以应对不同的业务场景和挑战。

自我修复效果验证与深入分析

自我修复效果评估

在PBW触发自我修复操作后,我们需要验证其是否有效解决了库存微服务的问题。通过查看PBW的性能日志,我们可以对比修复前后的响应时间。在修复前,库存微服务的响应时间持续超过1秒,而修复后,响应时间下降到了最高170ms。虽然没有恢复到问题出现前的水平,但为微服务争取了一定的缓冲空间。

以下是修复前后性能日志的对比:
| 时间 | 修复前响应时间 | 修复后响应时间 |
| ---- | ---- | ---- |
| 2022 - 11 - 23 18:30:16.334608 | 1.326528787612915 | 0.1380960941314697 |
| 2022 - 11 - 23 18:30:27.629649 | 1.4279899597167969 | 0.1693825721740723 |
| 2022 - 11 - 23 18:30:38.486793 | 1.0108487606048584 | 0.1700718116760254 |

潜在问题与解决方案

虽然本次自我修复操作取得了一定的效果,但如果底层问题没有得到妥善解决,性能问题可能会再次出现。在实际应用中,我们可以根据不同的问题场景采取不同的解决方案:
1. 高API请求负载导致的性能问题 :当性能问题是由于API请求负载过高引起时,最恰当的修复操作是首先尝试扩展微服务,并分配更多的资源来响应高流量的API请求。
2. 未知原因导致的服务不稳定 :如本次模拟中库存微服务出现的问题,可能是由一些不可预见的因素导致服务不稳定,无法及时处理API调用。在这种情况下,重启微服务可能是一个有效的解决方案。

自我修复效果验证流程图

graph LR
    A[触发自我修复操作] --> B[等待修复完成]
    B --> C[收集修复后性能数据]
    C --> D[对比修复前后响应时间]
    D --> E{响应时间是否改善?}
    E -- 是 --> F[确认修复有效]
    E -- 否 --> G[分析潜在问题]
    G --> H[采取进一步解决方案]
    H --> B

系统扩展与优化建议

扩展AI服务功能

随着业务的发展,我们可能需要扩展系统的AI功能,以满足不同的需求和用例。例如,增加更多的AI服务来进行性能统计收集、异常检测和预测分析等。为了避免随着收集器数量的增加而出现可扩展性问题,我们可以将 ms_perfmon 功能扩展为MSA系统中所有AI或非AI服务的主要AI收集器。

优化系统配置

为了提高系统的性能和稳定性,我们可以对系统的配置进行优化。例如,调整API流量模拟器的请求节奏、优化PBW和PAD的性能阈值配置等。同时,我们还可以使用更安全的方式来模拟延迟,如使用安全的配置文件或本地参数。

系统扩展与优化步骤

  1. 扩展AI服务功能
    1. 分析业务需求,确定需要增加的AI服务功能。
    2. 扩展 ms_perfmon 功能,使其成为主要的AI收集器。
    3. 开发和集成新的AI服务。
  2. 优化系统配置
    1. 调整API流量模拟器的请求节奏,根据实际情况选择均匀或随机节奏。
    2. 优化PBW和PAD的性能阈值配置,根据系统的历史数据和业务需求进行调整。
    3. 使用安全的配置文件或本地参数来模拟延迟,提高系统的安全性。

系统扩展与优化流程图

graph LR
    A[分析业务需求] --> B[扩展AI服务功能]
    B --> C[扩展ms_perfmon功能]
    C --> D[开发和集成新AI服务]
    A --> E[优化系统配置]
    E --> F[调整API流量模拟器节奏]
    F --> G[优化性能阈值配置]
    G --> H[使用安全方式模拟延迟]
    D --> I[系统测试与验证]
    H --> I
    I --> J[系统上线运行]

总结

通过构建必要的工具、初始化系统、模拟生产操作和验证自我修复效果,我们成功构建了一个智能的MSA企业系统。该系统能够实现系统的监控、预警和自我修复功能,提高系统的性能和稳定性。在实际应用中,我们可以根据具体需求进一步扩展和优化系统,以应对不同的业务场景和挑战。同时,我们还需要不断地收集和分析系统的性能数据,及时调整系统的配置和策略,以确保系统始终保持最佳的运行状态。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值