如何安装和使用A-ops工具?
一、pip配置
1.配置信任域
pip3 config set global.trusted-host mirrors.tools.huawei.com2.配置pip源的url地址pip3 config set global.index-url http://mirrors.tools.huawei.com/pypi/simple
二、npm安装及配置
npm -v检测系统有无安装npm,如果没有的话需要配置openEuler源,然后yum install
[root@localhost ~]# npm -v
6.14.16
npm源需要配置国内镜像源,因为默认是国外的。
npm config set registry=https://registry.npm.taobao.org
三、安装aops-inside
注意虚拟机运行build.sh需要内存大于4GB,否则报错
[root@localhost ~]# git clone https://gitee.com/sjh2022new/A-Ops.git
[root@localhost ~]# cd A-Ops/aops-inside/
[root@localhost aops-inside]# ll
total 72K
drwxr-xr-x 6 root root 4.0K Feb 1 09:45 aops_inside
drwxr-xr-x 2 root root 4.0K Feb 1 11:03 aops_inside.egg-info
-rw-r--r-- 1 root root 280 Feb 1 10:44 aops-inside.service
-rwxr-xr-x 1 root root 1.7K Feb 1 09:45 build.sh
-rw-r--r-- 1 root root 74 Feb 1 09:45 requirements.txt
[root@localhost aops-inside]# sh build.sh
生成两个rpm包
[root@localhost aops-inside]# ll /root/rpmbuild/RPMS/x86_64/
total 2.9M
-rw-r--r-- 1 root root 2.8M Feb 1 11:03 aops-inside-1.0.0-1.x86_64.rpm
-rw-r--r-- 1 root root 80K Feb 1 11:03 python3-aops-inside-1.0.0-1.x86_64.rpm
四、对脚本生成的rpm进行安装
[root@localhost x86_64]# yum install aops-inside-1.0.0-1.x86_64.rpm python3-aops-inside-1.0.0-1.x86_64.rpm -y
其中python3-aops-inside-1.0.0-1.x86_64.rpm安装时很慢,是在生成一些东西,需要等待一会儿。
安装完成后会生成/etc/aops-inside目录
[root@localhost ~]# ll /etc/aops-inside/conf/
total 8.0K
-rw-r--r-- 1 root root 437 Feb 1 10:42 aops-inside.conf
-rw-r--r-- 1 root root 1.1K Feb 1 09:45 metrics.conf
可编辑aops-inside.conf配置文件
[root@localhost ~]# cat /etc/aops-inside/conf/aops-inside.conf
[Default]
backend_ip=192.168.137.17
backend_port=8080
fault_interval=259200
time_zone=Asia/Shanghai
[ArangoDB]
ip=192.168.137.17
port=8529
topo_db=spider
event_db=event
[Prometheus]
ip=192.168.137.17
port=9090
[Kafka]
ip=127.0.0.1
port=9092
abnormal_topic=gala_anteater_hybrid_model
root_cause_topic=gala_cause_inference
metadata_topic=gala_gopher_metadata
event_topic=gala_gopher_event
[fileserver]
ip=192.168.137.17
port=8123
五、尝试启动aops-inside
配置文件修改完,可试着启动服务,但是会显示服务秒停
[root@localhost ~]# systemctl status aops-inside
× aops-inside.service - Aops-insideLoaded: loaded (/usr/lib/systemd/system/aops-inside.service; enabled; vendor preset: disabled)Active: failed (Result: exit-code) since Wed 2023-02-01 13:56:42 CST; 44min agoProcess: 9448 ExecStart=/usr/bin/aops-inside runserver ${backend_ip}:${backend_port} (code=exited, status=1/FAILURE)Main PID: 9448 (code=exited, status=1/FAILURE)
Feb 01 13:56:40 localhost.localdomain systemd[1]: aops-inside.service: Main process exited, code=exited, status=1/FAILURE
Feb 01 13:56:40 localhost.localdomain systemd[1]: aops-inside.service: Failed with result 'exit-code'.
Feb 01 13:56:42 localhost.localdomain systemd[1]: aops-inside.service: Scheduled restart job, restart counter is at 5.
Feb 01 13:56:42 localhost.localdomain systemd[1]: Stopped Aops-inside.
Feb 01 13:56:42 localhost.localdomain systemd[1]: aops-inside.service: Start request repeated too quickly.
Feb 01 13:56:42 localhost.localdomain systemd[1]: aops-inside.service: Failed with result 'exit-code'.
Feb 01 13:56:42 localhost.localdomain systemd[1]: Failed to start Aops-inside.
把启动命令但拿出来运行会提示具体的报错信息:
[root@localhost ~]# /usr/bin/aops-inside runserver 192.168.137.17:8080
Traceback (most recent call last):File "/usr/bin/aops-inside", line 11, in mainfrom django.core.management import execute_from_command_line
ModuleNotFoundError: No module named 'django'
没有django
解决方法:
[root@localhost ~]# pip install django
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip install --user` instead.
Looking in indexes: http://mirrors.tools.huawei.com/pypi/simple
Collecting djangoDownloading http://mirrors.tools.huawei.com/pypi/packages/2d/ac/9f013a51e6008ba94a282c15778a3ea51a0953f6711a77f9baa471fd1b1d/Django-4.1.5-py3-none-any.whl (8.1 MB)|████████████████████████████████| 8.1 MB 3.1 MB/s
Collecting asgiref<4,>=3.5.2Downloading http://mirrors.tools.huawei.com/pypi/packages/8f/29/38d10a47b322a77b2d12c2b79c789f52956f733cb701d4d5157c76b5f238/asgiref-3.6.0-py3-none-any.whl (23 kB)
Collecting sqlparse>=0.2.2Downloading http://mirrors.tools.huawei.com/pypi/packages/97/d3/31dd2c3e48fc2060819f4acb0686248250a0f2326356306b38a42e059144/sqlparse-0.4.3-py3-none-any.whl (42 kB)|████████████████████████████████| 42 kB 1.9 MB/s
Installing collected packages: sqlparse, asgiref, django
再次运行启动命令,又提示缺少kafka,所以应该是要将配置文件中提到的插件全部安装才能启动服务
[root@localhost ~]# /usr/bin/aops-inside runserver 192.168.137.17:8080
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):File "/usr/lib64/python3.10/threading.py", line 1009, in _bootstrap_innerself.run()File "/usr/lib64/python3.10/threading.py", line 946, in runself._target(*self._args, **self._kwargs)File "/usr/local/lib/python3.10/site-packages/django/utils/autoreload.py", line 64, in wrapperfn(*args, **kwargs)。。。。。。。。。。。。File "/usr/lib/python3.10/site-packages/aops_inside/data_collection/observe_entity.py", line 2, in <module>from data_collection.kafka_adpter import KafkaCollectorFile "/usr/lib/python3.10/site-packages/aops_inside/data_collection/kafka_adpter.py", line 1, in <module>from kafka import KafkaConsumer
ModuleNotFoundError: No module named 'kafka'
六、安装kafka
1.安装kafka需要先安装java
在openEuler22.03上可直接安装[root@localhost local]# yum install java-17-openjdk.x86_64 java-17-openjdk-devel.x86_64 -y
配置环境变量
[root@localhost ~]# tail -5 /etc/profile
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-17.0.4.8-3.oe2209.x86_64/
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
[root@localhost ~]# source /etc/profile
[root@localhost ~]# java --version
openjdk 17.0.4 2022-07-19
OpenJDK Runtime Environment 21.9 (build 17.0.4+8)
OpenJDK 64-Bit Server VM 21.9 (build 17.0.4+8, mixed mode, sharing)
2.安装zookeeper
[root@localhost ~]# wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.1/apache-zookeeper-3.8.1-bin.tar.gz
[root@localhost ~]# tar xf apache-zookeeper-3.8.1-bin.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ll
total 44K
drwxr-xr-x 6 root root 4.0K Feb 1 16:21 apache-zookeeper-3.8.1-bin
drwxr-xr-x. 2 root root 4.0K Feb 1 14:22 bin
drwxr-xr-x. 2 root root 4.0K Mar 13 2022 etc
drwxr-xr-x. 2 root root 4.0K Mar 13 2022 games
drwxr-xr-x. 2 root root 4.0K Mar 13 2022 include
drwxr-xr-x. 4 root root 4.0K Feb 1 14:22 lib
drwxr-xr-x. 3 root root 4.0K Mar 13 2022 lib64
drwxr-xr-x. 2 root root 4.0K Mar 13 2022 libexec
drwxr-xr-x. 2 root root 4.0K Mar 13 2022 sbin
drwxr-xr-x. 5 root root 4.0K Mar 13 2022 share
drwxr-xr-x. 2 root root 4.0K Mar 13 2022 src
[root@localhost local]# mv apache-zookeeper-3.8.1-bin/ zookeeper
3.配置zookeeper环境变量
[root@localhost local]# vim /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:${ZOOKEEPER_HOME}/bin
[root@localhost local]# source /etc/profile
4.修改zookeeper配置文件
[root@localhost local]# cd /usr/local/zookeeper/conf/
[root@localhost conf]# ll
total 16K
-rw-r--r-- 1 501 games 535 Jan 26 00:31 configuration.xsl
-rw-r--r-- 1 501 games 4.5K Jan 26 00:31 logback.xml
-rw-r--r-- 1 501 games 1.2K Jan 26 00:31 zoo_sample.cfg
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg
[root@localhost conf]# vim zoo.cfg
#存放数据文件夹
dataDir=/usr/local/zookeeper/data
# the port at which the clients will connect
#添加日志存放文件夹
dataLogDir=/usr/local/zookeeper/datalog
5.启动zookeeper
[root@localhost bin]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@localhost bin]# netstat -lntup|grep 2181
tcp6 0 0 :::2181 :::* LISTEN 10269/java
6.安装kafka
[root@localhost ~]# wget http://archive.apache.org/dist/kafka/3.3.2/kafka_2.12-3.3.2.tgz
[root@localhost ~]# tar xf kafka_2.12-3.3.2.tgz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# mv kafka_2.12-3.3.2/ kafka
[root@localhost kafka]# ll
total 64K
drwxr-xr-x 3 root root 4.0K Dec 22 05:18 bin
drwxr-xr-x 3 root root 4.0K Dec 22 05:18 config
drwxr-xr-x 2 root root 4.0K Feb 1 17:42 libs
-rw-r--r-- 1 root root 15K Dec 22 05:14 LICENSE
drwxr-xr-x 2 root root 4.0K Dec 22 05:18 licenses
-rw-r--r-- 1 root root 28K Dec 22 05:14 NOTICE
drwxr-xr-x 2 root root 4.0K Dec 22 05:18 site-docs
[root@localhost kafka]# cd config/
[root@localhost config]# vim server.properties
broker.id=0
listeners=PLAINTEXT://192.168.137.17:9092
log.dirs=/usr/local/kafka-logs
zookeeper.connect=192.168.137.17:2181
保存退出
7.启动kafka
[root@localhost kafka]# bin/kafka-server-start.sh config/server.properties &
[root@localhost kafka]# netstat -lntup|grep 9092
tcp6 0 0 192.168.137.17:9092 :::* LISTEN 10395/java
8.安装和启动Prometheus
[root@localhost kafka]# yum search prometheus
Last metadata expiration check: 17:07:53 ago on Wed 01 Feb 2023 03:33:00 PM CST.
========================================================== Name & Summary Matched: prometheus ==========================================================
ceph-prometheus-alerts.noarch : Prometheus alerts for a Ceph deployment
collectd-write_prometheus.x86_64 : Prometheus output plugin for collectd
prometheus2.x86_64 : The Prometheus 2.x monitoring system and time series database.
[root@localhost kafka]# yum install prometheus2
[root@localhost prometheus]# systemctl start prometheus
[root@localhost prometheus]# systemctl enable prometheus
Created symlink /etc/systemd/system/multi-user.target.wants/prometheus.service → /usr/lib/systemd/system/prometheus.service.
9.安装Arangodb
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost ~]# curl -OL https://download.arangodb.com/arangodb37/RPM/arangodb.repo
[root@localhost ~]# yum -y install arangodb3-3.7.11-1.0
[root@localhost ~]# arango-secure-installation #设置密码
[root@localhost ~]# systemctl start arangodb3.service
[root@localhost ~]# systemctl enable arangodb3.service
再次启动aops-inside,服务可以启动,但是日志提示No module named kafka解决方法:[root@localhost aops-inside]# pip install -r requirements.txt
[root@localhost aops-inside]# python3 setup.py install
10.启动aops-inside
[root@localhost conf]# systemctl restart aops-inside
[root@localhost conf]# systemctl status aops-inside
● aops-inside.service - Aops-insideLoaded: loaded (/usr/lib/systemd/system/aops-inside.service; enabled; vendor preset: disabled)Active: active (running) since Thu 2023-02-02 10:03:50 CST; 116ms agoMain PID: 13209 (python3)Tasks: 1 (limit: 2304)Memory: 17.9MCGroup: /system.slice/aops-inside.service└─13209 python3 /usr/bin/aops-inside runserver 192.168.137.17:8080
Feb 02 10:03:50 localhost.localdomain systemd[1]: aops-inside.service: Scheduled restart job, restart counter is at 3.
Feb 02 10:03:50 localhost.localdomain systemd[1]: Stopped Aops-inside.
Feb 02 10:03:50 localhost.localdomain systemd[1]: Started Aops-inside.
相关文章:

如何安装和使用A-ops工具?
一、pip配置 1.配置信任域 pip3 config set global.trusted-host mirrors.tools.huawei.com2.配置pip源的url地址pip3 config set global.index-url http://mirrors.tools.huawei.com/pypi/simple 二、npm安装及配置 npm -v检测系统有无安装npm,如果没有的话需要配置ope…...

MySql数据库环境部署
MySql基础与Sql数据库概述基础环境的建立MYSQL数据库的连接方法MySql的默认数据库数据库端口号数据库概述 数据库(DataBase,DB)∶存储在磁带、磁盘、光盘或其他外存介质上、按定结构组织在一起的相关数据的集合。数据库管理系统〈DataBase Management S…...

极品笔记,阿里P7爆款《K8s+Jenkins》技术笔记,职场必备
前些日子从阿里的朋友那里取得这两份K8sJenkins的爆款技术笔记:《K8S(kubernetes)学习指南》《Jenkins持续集成从入门到精通》,非常高质量的干货,我立马收藏! 而今天咱们文章的主角就是这非常之干货的技术笔记:K8SJenk…...

数据结构:各种排序方法的综合比较
排序方法的选用应视具体场合而定。一般情况下考虑的原则有:(1)待排序的记录个数 n;(2)记录本身的大小;(3)关键字的分布情况:(4)对排序稳定性的要求等。 1.时间性能 (1) 按平均的时间性能来分,有三类排序方法: 时间复杂度为 O(nlogn)的方法有:快速排序、堆排序和归并排序,其中…...

【设计模式】 策略模式介绍及C代码实现
【设计模式】 策略模式介绍及C代码实现 背景 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂,而且有时候支持不使用的算法也是一个性能负担。 如何…...

【数据库】第二章 关系数据库
第二章 关系数据库 2.1关系数据结构及形式化定义 关系 域(domain) :域是一组具有相同数据类型的值的集合,可以取值的个数叫基数 笛卡尔积 :一个记录叫做一个元组(tuple),元组中每一个属性值,叫一个分量 基数&…...

oracle和mysql的分页
oracle的分页:rownum 注意:: 对 ROWNUM 只能使用 < 或 <, 用 、 >、 > 都不能返回任何数据。 rownum是对结果集的编序排列,始终是从1开始,所以rownum直接使用时不允许使用>、> 所以当查询中间部分的信息时&…...

深拷贝与浅拷贝的理解
浅拷贝的理解浅拷贝的话只会拷贝基本数据类型,例如像string、Number等这些,类似:Object、Array 这类的话拷贝的就是对象的一个指针(通俗来讲就是拷贝一个引用地址,指向的是一个内存同一份数据),也就是说当拷贝的对象数…...

Shell变量
一、变量分类 根据作用域分三种 (一)只在函数内有效,叫局部变量 (二)只在当前shell进程中有效,叫做全局变量 (三)在当前shell进程与子进程中都有效,叫做环境变量 shell进…...

Android 8请求权限时弹窗BUG
弹窗BUG 应用使用requestPermissions申请权限时,系统会弹出一个选择窗口,可进行允许或拒绝, 此窗口中有一个”不再询问“的选择框, ”拒绝”及“允许”的按钮。 遇到一个Bug,单点击“不再询问”,“允许”这个按钮会变…...

路漫漫:网络空间的监管趋势
网络空间是“以相互依存的网络基础设施为基本架构,以代码、信息与数据的流动为环境,人类利用信息通讯技术与应用开展活动,并与其他空间高度融合与互动的空间”。随着信息化技术的发展,网络空间日益演绎成为与现实人类生存空间并存…...

洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
最后水一篇水题题解(实在太水了) # [USACO1.3]混合牛奶 Mixing Milk ## 题目描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要。帮助 Marry 乳业找到最优的牛奶采购方案。 Marry 乳业从一些奶农手…...

数据库的基本查询
注意:LIMIT的两个参数,第一个是起始位置,第二个是一次查询到多少页。注意:什么类型的数字都是可以排序的。日期的降序是从现在到以前,MySQL ENUM值如何排序?在MYSQL中,我们知道每个ENUM值都与一…...

10 分钟把你的 Web 应用转为桌面端应用
在桌面端应用上,Electron 也早已做大做强,GitHub桌面端、VSCode、Figma、Notion、飞书、剪映、得物都基于此。但最近后起之秀的 Tauri 也引人注目,它解决了 Electron 一个大的痛点——打包产物特别大。 我们知道 Electron 基于谷歌内核 Chro…...

Delphi RSA加解密(二)
dll开发环境: Delphi XE 10.1 Berlin exe开发环境: Delphi 6 前提文章: Delphi RSA加解密(一) 目录 1. 概述 2. 准备工作 2.1 下载DEMO程序 2.2 字符编码说明 3. Cryption.dll封装 3.1 接口概况 3.2 uPub.pas单元代码 3.3 uInterface.pas单元代码 3.4 特别注意 4. 主程序…...

pytorch 深度学习早停设置
当你设置早停的时候你需要注意的是你可能得在几个epoch后才开始判断早停。 早停参数设置 早停(Early Stopping)是一种常用的防止深度学习模型过拟合的方法。早停的设置需要根据具体情况进行调整,常见的做法是在模型训练过程中使用验证集&am…...

【Vue学习】Vue高级特性
1. 自定义v-model Vue中的自定义v-model指的是在自定义组件中使用v-model语法糖来实现双向绑定。在Vue中,通过v-model指令可以将表单元素的值与组件实例的数据进行双向绑定。但是对于自定义组件,如果要实现v-model的双向绑定,就需要自定义v-…...

Android 12.0 系统Settings去掉开发者模式功能
1.概述 在12.0的系统rom产品定制化开发中,在系统Settings中的关于手机的选项中,系统默认点击版本号5次会自动打开开发者模式,但是在某些产品开发过程中,禁止打开开发者模式,需要去掉开发者模式的功能,所以需要在系统Settings中查看开发者模式的相关流程代码,然后禁用掉开…...

buu [NCTF2019]babyRSA 1
题目描述: 题目分析: 首先明确两个公式: e*d 1 mod (p-1)(q-1) ed1 e*d - 1 k(p-1)(q-1)想要解出此题,我们必须知道n,而要知道n,我们要知道p和q的值通过 e*d 的计算,我们知道其长度为2066位,而生成p的…...

Java:如何选择一个Java API框架
Java编程语言是一种高级的、面向对象的语言,它使开发人员能够创建健壮的、可重用的代码。Java以其可移植性和平台独立性而闻名,这意味着Java代码可以在任何支持Java运行时环境(JRE)的系统上运行。Java和Node js一样,是一种功能强大的通用编程…...

mt6735 MIC 音量的调整及原理介绍
[DESCRIPTION] MIC 音量的调整及原理介绍[SOLUTION] audio_ver1_volume_custom_default.h#define VER1_AUD_VOLUME_MIC \ 64,112,192,144,192,192,184,184,184,184,184,0,0,0,0,\ 255,192,192,180,192,192,196,184,184,184,184,0,0,0,0,\ 255,208,208,180,255,208,196,0,0,0,0,…...

【深度学习】什么是线性回归逻辑回归单层神经元的缺陷
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录逻辑回归&线性回归单层神经元的缺陷单层神经元的缺陷逻辑回归&线性回归 线性回归预测的是一个连续值, 逻辑回归给出的”是”和“否”的回答. 等…...

Spring拦截器
SpringMVC提供了拦截器机制,允许运行目标方法之前进行一些拦截工作或者目标方法运行之后进行一下其他相关的处理。自定义的拦截器必须实现HandlerInterceptor接口。preHandle():这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求…...

8个可能降低网站搜索引擎信任度的错误
如果觉得文章对你有用请点赞与关注,每一份支持都是我坚持更新更优质内容的动力!!!例如,发布一段质量差的网站内容不会完全破坏您的排名机会,只要您的内容策略的其余部分井井有条。但是本地SEO中存在一些错误…...

弱监督论文阅读:P2BNet算法笔记
标题:Point-to-Box Network for Accurate Object Detection via Single Point Supervision 会议:ECCV2022 论文地址:https://link.springer.com/10.1007/978-3-031-20077-9_4 官方代码:http://www.github.com/ucas-vg/P2BNet 作者…...

使用Java编写Hive的UDF实现身份证号码校验及15位升级18位
使用Java编写Hive的UDF实现身份证号码校验及15位升级18位 背景 在数仓项目中,有时候会根据身份证信息做一些取数filter或者条件判断的相关运算进而获取到所需的信息。古人是用Oracle做数仓,理所当然是用SQL写UDF【虽然SQL写UDF给SQL用就像用鸡肉饲养肉…...

前端:分享JS中7个高频的工具函数
目录 ◆1、将数字转换为货币 ◆2、将 HTML 字符串转换为 DOM 对象 ◆3、防抖 ◆4、日期验证 ◆5、将 FormData(表单数据)转换为 JSON ◆6、衡量一个函数的性能 ◆7、从数组中删除重复项 JavaScript 实用函数是有用的、可重复使用的片段࿰…...

docker基础用法及镜像和容器的常用命令大全
1.docker 体系架构 Docker 采用了 C / S 架构,包括客户端和服务端。Docker 守护进程作为服务端接受来自客户端的请求,并处理这些请求(创建、运行、分发容器)。客户端和服务端既可以运行在一个机器上,也可通过 socket 或…...

Spring(Bean生命周期)
目录 1. 生命周期简图2. 扩展接口介绍 2.1 Aware接口2.2 BeanPostProcessor接口2.3 InitializingBean2.4 DisposableBean2.5 BeanFactoryPostProcessor接口3. spring的简化配置 3.1 项目搭建3.2 Bean的配置和值注入3.3 AOP的示例 1. 生命周期简图 2. 扩展接口介绍 2.1 Aware接…...

什么是分布式锁?几种分布式锁分别是怎么实现的?
一、什么是分布式锁: 1、什么是分布式锁: 分布式锁,即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题,而分布式锁,就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是&am…...