学习目标:

了解K8S相关的概念

学习内容:

了解K8S的起源,集群概念,容器技术,集群框架,Pod,集群搭建,yaml文件编写

学习时间:

2020年9月-2021年2月

学习产出:

K8S思维导图,机器学习平台搭建

欢迎使用Markdown编辑器

【准备好相关资源】
1、部署文件压缩包:
从oss上获取文件下载地址,路径:ysc-war/zsk.zip ,在跳板机wget 下来
2、相关ECS资源的IP地址列表
准备好k8s集群、中间件集群、应用管理等ecs的IP名单列表,需提供给开发
3、准备p7zip的源码安装包
k8s集群worker节点导入镜像需要用到7za解压命令
4、知识库相关资源的信息
数据库地址/用户名密码、redis地址/密码、oss地址等信息

【了解资源文件】
这是解压zsk.zip里面的内容

此外还有 应用的升级文档

【部署顺序】
安装k8s集群----部署中间件—部署机器学习平台----部署机器人工厂

【部署k8s集群】
---------部署前
1、修改k8s ecs的主机名,将下划线改为短横线(对开发给的hosts文件中的主机都操作)
2、把/etc/group /etc/passwd /etc/shadow 减锁,chattr -i /etc/group /etc/passwd /etc/shadow(对开发给的hosts文件中的主机都操作)
3、把urllib3卸载掉,pip uninstall -y urllib3(对开发给的hosts文件中的主机都操作)

4、解压 压缩包并进入解压后的目录

-------部署-----------
1)根据ECS资源修改k8s-playbook/inventories/its/hosts的信息 (开发协助配置,注意hosts里面的root密码修改成实际的密码)

2)k8s-playbook/下,执行./play inventories/its/xx.yml
顺序是 prepare.yml-glusterfs.yml -> init.yml -> addon.yml
执行过程会比较久

遇到过的问题
执行 prepare.yml
—执行过程有报错
(部署前工作要做完)
a.如果在start docker这个任务报错,那就先看看cat /etc/group|grep docker 有没这个组,如果没有就用ansible跑一次,groupadd docker(开发给的host文件中的主机都要跑)

执行 addon.yml

解决:roles/influxdb/tasks/main.yml ,到最后要执行的命令,把 docker exec -it 的 t 去掉,再跑一遍试试

解决:roles/es_kibana/tasks/main.yml ,找到Import saved objects,添加如下图的选项

部署完后
此时,可以将三个镜像文件上传到k8s集群的worker节点(所有worker节点)并导入
7za x -so openjdk.8.7z | docker load
7za x -so python-cpu-tensorflow.0.2.7z | docker load
7za x -so python-gpu-tensorflow.0.3.7z | docker load

需要一定时间,请提前准备好批量执行的命令

【部署中间件】
1、解压middlewarenew.tar.gz
2、根据开发配置好的hosts文件替换fintech-playbook/inventories/its下的hosts文件
3、./play inventories/its/xx.yml
执行顺序是prepare->elasticsearch->kibana->kafka->logstash->tomcat

遇到的问题:
初始es的时候,发现es服务没起来

原因:权限问题,用ansible 跑一次es集群:
chown -R elasticsearch /usr/share/elasticsearch
修改后,重启ecs(或许可以重启es服务)

4、部署完中间件集群后,根据文档里面的命令,初始化es和kafka
需要注意,文档里面提供的命令注意引号是否为中文的问题,

替换命令里面的ip地址为执行命令所在es服务器的地址

验证:
—验证—
查看mapping:
curl-XGET -u elastic:iY4Txyzna7wI9hvhJTUv “http://x.x.x.x:9200/prod_servyou-qabot-service_v0/_mapping?pretty”
查看别名:
Curl -XGET -u elastic:iY4Txyzna7wI9hvhJTUv “http://x.x.x.x:9200/prod_servyou-qabot-service_v0/_alias”
查看topic,到任意kafka节点:
./kafka-topics.sh --bootstrap-server localhost:9092 --list

【部署机器人学习平台应用】
1、复制machine-learning-platform-web.war到其中一台知识库-管理应用服务器上
/opt/machine-learning-platform/webapps/ROOT.war, 如文件目录不存, 则手动创建
稍后,看war包有没被容器运行,解压,如果没有则重启相应容器(docker ps查看)
注意:将包名改为ROOT.war

2、修改 /opt/machine-learning-platform/webapps/ROOT/WEB-INF/classes/application-znhd.yml

修改完后需要重启应用: docker restart machine-learning-platform
重启查看日志是否重启成功:docker logs –f 容器名
Curl测试是否成功curl http://127.0.0.1:7001

3、设置管理员密码,获取密码的md5值(此处的密码就是最终能够登陆浏览器访问设置的密码,简便一点儿即可)

----文档里面 '2018-11-27 15:49:13’ 最后的单引号要修改为英文的

5、验证机器人学习平台是否成功部署
本地curl http://127.0.0.1:7001

在和知识库的机器同一vpc创建一台Windows机器,需要用到浏览器,接下来的操作需要在平台端操作。
注意:由于跳板机106和改VPC内的机器不通,所以,需要一台经典网络的SLB去转发。开通TCP:3389的协议和端口,在106上远程桌面过去,共享磁盘,然后安装谷歌,如果没法直接连接,需要VNC进去这台windows机器中去,把远程桌面属性修改一下,修改成允许远程访问这台机器,同事关闭防火墙

6、登录机器人学习平台
将开发提供k8smaster节点上的/etc/kubernetes/admin.conf的配置复制到http://ip:7001/#/k8sconfig 。图上框里的URL由运维开发提供
访问地址:99.15.166.142:7001
登录:用户名和密码是跑到数据库中去的,mlp库,platform_user表中
再登录99.15.166.142:7001/#/k8sconfig跳转到填写配置文件的地方

在 运维—计算资源状态,看到节点信息就说明添加成功。

7、添加镜像
进入“镜像管理”–新增镜像
harbor.dc.servyou-it.com/jrsyb-mlp/python-gpu-tensorflow:0.3
harbor.dc.servyou-it.com/jrsyb-mlp/python-cpu-tensorflow:0.2
harbor.dc.servyou-it.com/jrsyb-mlp/openjdk:8
(路径填完整的路径,就是带镜像名的)

如果镜像创建错误的话,需要到对应的MLP的数据库中去删除,docker_image表中

【部署机器人工厂】
1、bot-factory的war已经放到指定目录里,注意重命名war名称
复制到 5.1 ECS 的 /opt/bot-factory/webapps/ROOT.war,如文件目录不存,则手动创建
(在第二台管理应用的机器上)

2、修改配置
修改 /opt/bot-factory/webapps/ROOT/WEB-INF/classes/application-znhd.yml

注意:ES集群的密码就是跑中间件的时候创建的密码(参考中间件部署)
修改完后需要重启应用: docker restart bot-factory

3、修改模型端框架jar包里的配置
先解压bot-framework,用7z打开bot-framework-web-0.0.1-SNAPSHOT

将图中红框文件拉出来修改完再拉回去,确认覆盖。
注意es地址的格式,redis配置信息里的prot—>port
在机器学习平台上创建服务总线,完成xx模型总线地址的配置

机器学习平台上创建总线

进入 服务组配置—新增服务组

修改完配置后,将配置文件重新拉回7z打开的jar里,然后上传到跳板机,计算MD5
md5sum bot-framework-web-0.0.1-SNAPSHOT.jar|head -c32
计算JAR包的MD5值,填入metadata.json 的MD5字段中,重新打包好ZIP包
上传到某台带有HTTP服务的机器上(开发指定)

以上,验证没问题后,部署模型端框架
【模型端框架】
模型端框架机器人工厂升级文档有步骤说明,略过

2、部署完模型端框架后,需挂载总线

3、测试,任意一台知识库相关ecs上执行
curl --location --request POST ‘http://99.15.196.105:30080/serve-1582013463/recommend’ --header ‘Content-Type: application/json’ -d ‘{
“question”:“根据税收协定外籍个人取得的董事费收入应在哪方征税?”,
“result_num”:1
}’

插入链接与图片

链接: link.

图片:

带尺寸的图片:

居中的图片:

居中并且带尺寸的图片:

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目

    • 项目

      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to-HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。1

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ(n)=(n−1)!∀n∈N\Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n−1)!∀n∈N 是通过欧拉积分

Γ(z)=∫0∞tz−1e−tdt.\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞​tz−1e−tdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06Mon 13Mon 20已完成 进行中 计划一 计划二 现有任务Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

#mermaid-svg-SO2eMm2zyKNhhEza .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-SO2eMm2zyKNhhEza .label text{fill:#333}#mermaid-svg-SO2eMm2zyKNhhEza .node rect,#mermaid-svg-SO2eMm2zyKNhhEza .node circle,#mermaid-svg-SO2eMm2zyKNhhEza .node ellipse,#mermaid-svg-SO2eMm2zyKNhhEza .node polygon,#mermaid-svg-SO2eMm2zyKNhhEza .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-SO2eMm2zyKNhhEza .node .label{text-align:center;fill:#333}#mermaid-svg-SO2eMm2zyKNhhEza .node.clickable{cursor:pointer}#mermaid-svg-SO2eMm2zyKNhhEza .arrowheadPath{fill:#333}#mermaid-svg-SO2eMm2zyKNhhEza .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-SO2eMm2zyKNhhEza .flowchart-link{stroke:#333;fill:none}#mermaid-svg-SO2eMm2zyKNhhEza .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-SO2eMm2zyKNhhEza .edgeLabel rect{opacity:0.9}#mermaid-svg-SO2eMm2zyKNhhEza .edgeLabel span{color:#333}#mermaid-svg-SO2eMm2zyKNhhEza .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-SO2eMm2zyKNhhEza .cluster text{fill:#333}#mermaid-svg-SO2eMm2zyKNhhEza div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-SO2eMm2zyKNhhEza .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-SO2eMm2zyKNhhEza text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-SO2eMm2zyKNhhEza .actor-line{stroke:grey}#mermaid-svg-SO2eMm2zyKNhhEza .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-SO2eMm2zyKNhhEza .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-SO2eMm2zyKNhhEza #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-SO2eMm2zyKNhhEza .sequenceNumber{fill:#fff}#mermaid-svg-SO2eMm2zyKNhhEza #sequencenumber{fill:#333}#mermaid-svg-SO2eMm2zyKNhhEza #crosshead path{fill:#333;stroke:#333}#mermaid-svg-SO2eMm2zyKNhhEza .messageText{fill:#333;stroke:#333}#mermaid-svg-SO2eMm2zyKNhhEza .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-SO2eMm2zyKNhhEza .labelText,#mermaid-svg-SO2eMm2zyKNhhEza .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-SO2eMm2zyKNhhEza .loopText,#mermaid-svg-SO2eMm2zyKNhhEza .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-SO2eMm2zyKNhhEza .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-SO2eMm2zyKNhhEza .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-SO2eMm2zyKNhhEza .noteText,#mermaid-svg-SO2eMm2zyKNhhEza .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-SO2eMm2zyKNhhEza .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-SO2eMm2zyKNhhEza .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-SO2eMm2zyKNhhEza .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-SO2eMm2zyKNhhEza .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-SO2eMm2zyKNhhEza .section{stroke:none;opacity:0.2}#mermaid-svg-SO2eMm2zyKNhhEza .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-SO2eMm2zyKNhhEza .section2{fill:#fff400}#mermaid-svg-SO2eMm2zyKNhhEza .section1,#mermaid-svg-SO2eMm2zyKNhhEza .section3{fill:#fff;opacity:0.2}#mermaid-svg-SO2eMm2zyKNhhEza .sectionTitle0{fill:#333}#mermaid-svg-SO2eMm2zyKNhhEza .sectionTitle1{fill:#333}#mermaid-svg-SO2eMm2zyKNhhEza .sectionTitle2{fill:#333}#mermaid-svg-SO2eMm2zyKNhhEza .sectionTitle3{fill:#333}#mermaid-svg-SO2eMm2zyKNhhEza .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-SO2eMm2zyKNhhEza .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-SO2eMm2zyKNhhEza .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-SO2eMm2zyKNhhEza .grid path{stroke-width:0}#mermaid-svg-SO2eMm2zyKNhhEza .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-SO2eMm2zyKNhhEza .task{stroke-width:2}#mermaid-svg-SO2eMm2zyKNhhEza .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-SO2eMm2zyKNhhEza .taskText:not([font-size]){font-size:11px}#mermaid-svg-SO2eMm2zyKNhhEza .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-SO2eMm2zyKNhhEza .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-SO2eMm2zyKNhhEza .task.clickable{cursor:pointer}#mermaid-svg-SO2eMm2zyKNhhEza .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-SO2eMm2zyKNhhEza .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-SO2eMm2zyKNhhEza .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-SO2eMm2zyKNhhEza .taskText0,#mermaid-svg-SO2eMm2zyKNhhEza .taskText1,#mermaid-svg-SO2eMm2zyKNhhEza .taskText2,#mermaid-svg-SO2eMm2zyKNhhEza .taskText3{fill:#fff}#mermaid-svg-SO2eMm2zyKNhhEza .task0,#mermaid-svg-SO2eMm2zyKNhhEza .task1,#mermaid-svg-SO2eMm2zyKNhhEza .task2,#mermaid-svg-SO2eMm2zyKNhhEza .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-SO2eMm2zyKNhhEza .taskTextOutside0,#mermaid-svg-SO2eMm2zyKNhhEza .taskTextOutside2{fill:#000}#mermaid-svg-SO2eMm2zyKNhhEza .taskTextOutside1,#mermaid-svg-SO2eMm2zyKNhhEza .taskTextOutside3{fill:#000}#mermaid-svg-SO2eMm2zyKNhhEza .active0,#mermaid-svg-SO2eMm2zyKNhhEza .active1,#mermaid-svg-SO2eMm2zyKNhhEza .active2,#mermaid-svg-SO2eMm2zyKNhhEza .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-SO2eMm2zyKNhhEza .activeText0,#mermaid-svg-SO2eMm2zyKNhhEza .activeText1,#mermaid-svg-SO2eMm2zyKNhhEza .activeText2,#mermaid-svg-SO2eMm2zyKNhhEza .activeText3{fill:#000 !important}#mermaid-svg-SO2eMm2zyKNhhEza .done0,#mermaid-svg-SO2eMm2zyKNhhEza .done1,#mermaid-svg-SO2eMm2zyKNhhEza .done2,#mermaid-svg-SO2eMm2zyKNhhEza .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-SO2eMm2zyKNhhEza .doneText0,#mermaid-svg-SO2eMm2zyKNhhEza .doneText1,#mermaid-svg-SO2eMm2zyKNhhEza .doneText2,#mermaid-svg-SO2eMm2zyKNhhEza .doneText3{fill:#000 !important}#mermaid-svg-SO2eMm2zyKNhhEza .crit0,#mermaid-svg-SO2eMm2zyKNhhEza .crit1,#mermaid-svg-SO2eMm2zyKNhhEza .crit2,#mermaid-svg-SO2eMm2zyKNhhEza .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-SO2eMm2zyKNhhEza .activeCrit0,#mermaid-svg-SO2eMm2zyKNhhEza .activeCrit1,#mermaid-svg-SO2eMm2zyKNhhEza .activeCrit2,#mermaid-svg-SO2eMm2zyKNhhEza .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-SO2eMm2zyKNhhEza .doneCrit0,#mermaid-svg-SO2eMm2zyKNhhEza .doneCrit1,#mermaid-svg-SO2eMm2zyKNhhEza .doneCrit2,#mermaid-svg-SO2eMm2zyKNhhEza .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-SO2eMm2zyKNhhEza .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-SO2eMm2zyKNhhEza .milestoneText{font-style:italic}#mermaid-svg-SO2eMm2zyKNhhEza .doneCritText0,#mermaid-svg-SO2eMm2zyKNhhEza .doneCritText1,#mermaid-svg-SO2eMm2zyKNhhEza .doneCritText2,#mermaid-svg-SO2eMm2zyKNhhEza .doneCritText3{fill:#000 !important}#mermaid-svg-SO2eMm2zyKNhhEza .activeCritText0,#mermaid-svg-SO2eMm2zyKNhhEza .activeCritText1,#mermaid-svg-SO2eMm2zyKNhhEza .activeCritText2,#mermaid-svg-SO2eMm2zyKNhhEza .activeCritText3{fill:#000 !important}#mermaid-svg-SO2eMm2zyKNhhEza .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-SO2eMm2zyKNhhEza g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-SO2eMm2zyKNhhEza g.classGroup text .title{font-weight:bolder}#mermaid-svg-SO2eMm2zyKNhhEza g.clickable{cursor:pointer}#mermaid-svg-SO2eMm2zyKNhhEza g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-SO2eMm2zyKNhhEza g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-SO2eMm2zyKNhhEza .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-SO2eMm2zyKNhhEza .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-SO2eMm2zyKNhhEza .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-SO2eMm2zyKNhhEza .dashed-line{stroke-dasharray:3}#mermaid-svg-SO2eMm2zyKNhhEza #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-SO2eMm2zyKNhhEza #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-SO2eMm2zyKNhhEza #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-SO2eMm2zyKNhhEza #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-SO2eMm2zyKNhhEza #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-SO2eMm2zyKNhhEza #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-SO2eMm2zyKNhhEza #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-SO2eMm2zyKNhhEza #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-SO2eMm2zyKNhhEza .commit-id,#mermaid-svg-SO2eMm2zyKNhhEza .commit-msg,#mermaid-svg-SO2eMm2zyKNhhEza .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-SO2eMm2zyKNhhEza .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-SO2eMm2zyKNhhEza .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-SO2eMm2zyKNhhEza g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-SO2eMm2zyKNhhEza g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-SO2eMm2zyKNhhEza g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-SO2eMm2zyKNhhEza g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-SO2eMm2zyKNhhEza g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-SO2eMm2zyKNhhEza g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-SO2eMm2zyKNhhEza .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-SO2eMm2zyKNhhEza .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-SO2eMm2zyKNhhEza .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-SO2eMm2zyKNhhEza .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-SO2eMm2zyKNhhEza .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-SO2eMm2zyKNhhEza .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-SO2eMm2zyKNhhEza .edgeLabel text{fill:#333}#mermaid-svg-SO2eMm2zyKNhhEza .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-SO2eMm2zyKNhhEza .node circle.state-start{fill:black;stroke:black}#mermaid-svg-SO2eMm2zyKNhhEza .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-SO2eMm2zyKNhhEza #statediagram-barbEnd{fill:#9370db}#mermaid-svg-SO2eMm2zyKNhhEza .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-SO2eMm2zyKNhhEza .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-SO2eMm2zyKNhhEza .statediagram-state .divider{stroke:#9370db}#mermaid-svg-SO2eMm2zyKNhhEza .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-SO2eMm2zyKNhhEza .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-SO2eMm2zyKNhhEza .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-SO2eMm2zyKNhhEza .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-SO2eMm2zyKNhhEza .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-SO2eMm2zyKNhhEza .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-SO2eMm2zyKNhhEza .note-edge{stroke-dasharray:5}#mermaid-svg-SO2eMm2zyKNhhEza .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-SO2eMm2zyKNhhEza .error-icon{fill:#522}#mermaid-svg-SO2eMm2zyKNhhEza .error-text{fill:#522;stroke:#522}#mermaid-svg-SO2eMm2zyKNhhEza .edge-thickness-normal{stroke-width:2px}#mermaid-svg-SO2eMm2zyKNhhEza .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-SO2eMm2zyKNhhEza .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-SO2eMm2zyKNhhEza .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-SO2eMm2zyKNhhEza .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-SO2eMm2zyKNhhEza .marker{fill:#333}#mermaid-svg-SO2eMm2zyKNhhEza .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-SO2eMm2zyKNhhEza {color: rgba(0, 0, 0, 0.75);font: ;}张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间, 文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

这将产生一个流程图。:

#mermaid-svg-f1roLkSMwM56zNTQ .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-f1roLkSMwM56zNTQ .label text{fill:#333}#mermaid-svg-f1roLkSMwM56zNTQ .node rect,#mermaid-svg-f1roLkSMwM56zNTQ .node circle,#mermaid-svg-f1roLkSMwM56zNTQ .node ellipse,#mermaid-svg-f1roLkSMwM56zNTQ .node polygon,#mermaid-svg-f1roLkSMwM56zNTQ .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-f1roLkSMwM56zNTQ .node .label{text-align:center;fill:#333}#mermaid-svg-f1roLkSMwM56zNTQ .node.clickable{cursor:pointer}#mermaid-svg-f1roLkSMwM56zNTQ .arrowheadPath{fill:#333}#mermaid-svg-f1roLkSMwM56zNTQ .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-f1roLkSMwM56zNTQ .flowchart-link{stroke:#333;fill:none}#mermaid-svg-f1roLkSMwM56zNTQ .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-f1roLkSMwM56zNTQ .edgeLabel rect{opacity:0.9}#mermaid-svg-f1roLkSMwM56zNTQ .edgeLabel span{color:#333}#mermaid-svg-f1roLkSMwM56zNTQ .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-f1roLkSMwM56zNTQ .cluster text{fill:#333}#mermaid-svg-f1roLkSMwM56zNTQ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-f1roLkSMwM56zNTQ .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-f1roLkSMwM56zNTQ text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-f1roLkSMwM56zNTQ .actor-line{stroke:grey}#mermaid-svg-f1roLkSMwM56zNTQ .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-f1roLkSMwM56zNTQ .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-f1roLkSMwM56zNTQ #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-f1roLkSMwM56zNTQ .sequenceNumber{fill:#fff}#mermaid-svg-f1roLkSMwM56zNTQ #sequencenumber{fill:#333}#mermaid-svg-f1roLkSMwM56zNTQ #crosshead path{fill:#333;stroke:#333}#mermaid-svg-f1roLkSMwM56zNTQ .messageText{fill:#333;stroke:#333}#mermaid-svg-f1roLkSMwM56zNTQ .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-f1roLkSMwM56zNTQ .labelText,#mermaid-svg-f1roLkSMwM56zNTQ .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-f1roLkSMwM56zNTQ .loopText,#mermaid-svg-f1roLkSMwM56zNTQ .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-f1roLkSMwM56zNTQ .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-f1roLkSMwM56zNTQ .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-f1roLkSMwM56zNTQ .noteText,#mermaid-svg-f1roLkSMwM56zNTQ .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-f1roLkSMwM56zNTQ .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-f1roLkSMwM56zNTQ .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-f1roLkSMwM56zNTQ .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-f1roLkSMwM56zNTQ .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-f1roLkSMwM56zNTQ .section{stroke:none;opacity:0.2}#mermaid-svg-f1roLkSMwM56zNTQ .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-f1roLkSMwM56zNTQ .section2{fill:#fff400}#mermaid-svg-f1roLkSMwM56zNTQ .section1,#mermaid-svg-f1roLkSMwM56zNTQ .section3{fill:#fff;opacity:0.2}#mermaid-svg-f1roLkSMwM56zNTQ .sectionTitle0{fill:#333}#mermaid-svg-f1roLkSMwM56zNTQ .sectionTitle1{fill:#333}#mermaid-svg-f1roLkSMwM56zNTQ .sectionTitle2{fill:#333}#mermaid-svg-f1roLkSMwM56zNTQ .sectionTitle3{fill:#333}#mermaid-svg-f1roLkSMwM56zNTQ .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-f1roLkSMwM56zNTQ .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-f1roLkSMwM56zNTQ .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-f1roLkSMwM56zNTQ .grid path{stroke-width:0}#mermaid-svg-f1roLkSMwM56zNTQ .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-f1roLkSMwM56zNTQ .task{stroke-width:2}#mermaid-svg-f1roLkSMwM56zNTQ .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-f1roLkSMwM56zNTQ .taskText:not([font-size]){font-size:11px}#mermaid-svg-f1roLkSMwM56zNTQ .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-f1roLkSMwM56zNTQ .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-f1roLkSMwM56zNTQ .task.clickable{cursor:pointer}#mermaid-svg-f1roLkSMwM56zNTQ .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-f1roLkSMwM56zNTQ .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-f1roLkSMwM56zNTQ .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-f1roLkSMwM56zNTQ .taskText0,#mermaid-svg-f1roLkSMwM56zNTQ .taskText1,#mermaid-svg-f1roLkSMwM56zNTQ .taskText2,#mermaid-svg-f1roLkSMwM56zNTQ .taskText3{fill:#fff}#mermaid-svg-f1roLkSMwM56zNTQ .task0,#mermaid-svg-f1roLkSMwM56zNTQ .task1,#mermaid-svg-f1roLkSMwM56zNTQ .task2,#mermaid-svg-f1roLkSMwM56zNTQ .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-f1roLkSMwM56zNTQ .taskTextOutside0,#mermaid-svg-f1roLkSMwM56zNTQ .taskTextOutside2{fill:#000}#mermaid-svg-f1roLkSMwM56zNTQ .taskTextOutside1,#mermaid-svg-f1roLkSMwM56zNTQ .taskTextOutside3{fill:#000}#mermaid-svg-f1roLkSMwM56zNTQ .active0,#mermaid-svg-f1roLkSMwM56zNTQ .active1,#mermaid-svg-f1roLkSMwM56zNTQ .active2,#mermaid-svg-f1roLkSMwM56zNTQ .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-f1roLkSMwM56zNTQ .activeText0,#mermaid-svg-f1roLkSMwM56zNTQ .activeText1,#mermaid-svg-f1roLkSMwM56zNTQ .activeText2,#mermaid-svg-f1roLkSMwM56zNTQ .activeText3{fill:#000 !important}#mermaid-svg-f1roLkSMwM56zNTQ .done0,#mermaid-svg-f1roLkSMwM56zNTQ .done1,#mermaid-svg-f1roLkSMwM56zNTQ .done2,#mermaid-svg-f1roLkSMwM56zNTQ .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-f1roLkSMwM56zNTQ .doneText0,#mermaid-svg-f1roLkSMwM56zNTQ .doneText1,#mermaid-svg-f1roLkSMwM56zNTQ .doneText2,#mermaid-svg-f1roLkSMwM56zNTQ .doneText3{fill:#000 !important}#mermaid-svg-f1roLkSMwM56zNTQ .crit0,#mermaid-svg-f1roLkSMwM56zNTQ .crit1,#mermaid-svg-f1roLkSMwM56zNTQ .crit2,#mermaid-svg-f1roLkSMwM56zNTQ .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-f1roLkSMwM56zNTQ .activeCrit0,#mermaid-svg-f1roLkSMwM56zNTQ .activeCrit1,#mermaid-svg-f1roLkSMwM56zNTQ .activeCrit2,#mermaid-svg-f1roLkSMwM56zNTQ .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-f1roLkSMwM56zNTQ .doneCrit0,#mermaid-svg-f1roLkSMwM56zNTQ .doneCrit1,#mermaid-svg-f1roLkSMwM56zNTQ .doneCrit2,#mermaid-svg-f1roLkSMwM56zNTQ .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-f1roLkSMwM56zNTQ .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-f1roLkSMwM56zNTQ .milestoneText{font-style:italic}#mermaid-svg-f1roLkSMwM56zNTQ .doneCritText0,#mermaid-svg-f1roLkSMwM56zNTQ .doneCritText1,#mermaid-svg-f1roLkSMwM56zNTQ .doneCritText2,#mermaid-svg-f1roLkSMwM56zNTQ .doneCritText3{fill:#000 !important}#mermaid-svg-f1roLkSMwM56zNTQ .activeCritText0,#mermaid-svg-f1roLkSMwM56zNTQ .activeCritText1,#mermaid-svg-f1roLkSMwM56zNTQ .activeCritText2,#mermaid-svg-f1roLkSMwM56zNTQ .activeCritText3{fill:#000 !important}#mermaid-svg-f1roLkSMwM56zNTQ .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-f1roLkSMwM56zNTQ g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-f1roLkSMwM56zNTQ g.classGroup text .title{font-weight:bolder}#mermaid-svg-f1roLkSMwM56zNTQ g.clickable{cursor:pointer}#mermaid-svg-f1roLkSMwM56zNTQ g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-f1roLkSMwM56zNTQ g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-f1roLkSMwM56zNTQ .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-f1roLkSMwM56zNTQ .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-f1roLkSMwM56zNTQ .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-f1roLkSMwM56zNTQ .dashed-line{stroke-dasharray:3}#mermaid-svg-f1roLkSMwM56zNTQ #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-f1roLkSMwM56zNTQ #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-f1roLkSMwM56zNTQ #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-f1roLkSMwM56zNTQ #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-f1roLkSMwM56zNTQ #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-f1roLkSMwM56zNTQ #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-f1roLkSMwM56zNTQ #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-f1roLkSMwM56zNTQ #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-f1roLkSMwM56zNTQ .commit-id,#mermaid-svg-f1roLkSMwM56zNTQ .commit-msg,#mermaid-svg-f1roLkSMwM56zNTQ .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-f1roLkSMwM56zNTQ .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-f1roLkSMwM56zNTQ .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-f1roLkSMwM56zNTQ g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-f1roLkSMwM56zNTQ g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-f1roLkSMwM56zNTQ g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-f1roLkSMwM56zNTQ g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-f1roLkSMwM56zNTQ g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-f1roLkSMwM56zNTQ g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-f1roLkSMwM56zNTQ .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-f1roLkSMwM56zNTQ .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-f1roLkSMwM56zNTQ .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-f1roLkSMwM56zNTQ .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-f1roLkSMwM56zNTQ .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-f1roLkSMwM56zNTQ .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-f1roLkSMwM56zNTQ .edgeLabel text{fill:#333}#mermaid-svg-f1roLkSMwM56zNTQ .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-f1roLkSMwM56zNTQ .node circle.state-start{fill:black;stroke:black}#mermaid-svg-f1roLkSMwM56zNTQ .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-f1roLkSMwM56zNTQ #statediagram-barbEnd{fill:#9370db}#mermaid-svg-f1roLkSMwM56zNTQ .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-f1roLkSMwM56zNTQ .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-f1roLkSMwM56zNTQ .statediagram-state .divider{stroke:#9370db}#mermaid-svg-f1roLkSMwM56zNTQ .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-f1roLkSMwM56zNTQ .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-f1roLkSMwM56zNTQ .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-f1roLkSMwM56zNTQ .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-f1roLkSMwM56zNTQ .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-f1roLkSMwM56zNTQ .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-f1roLkSMwM56zNTQ .note-edge{stroke-dasharray:5}#mermaid-svg-f1roLkSMwM56zNTQ .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-f1roLkSMwM56zNTQ .error-icon{fill:#522}#mermaid-svg-f1roLkSMwM56zNTQ .error-text{fill:#522;stroke:#522}#mermaid-svg-f1roLkSMwM56zNTQ .edge-thickness-normal{stroke-width:2px}#mermaid-svg-f1roLkSMwM56zNTQ .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-f1roLkSMwM56zNTQ .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-f1roLkSMwM56zNTQ .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-f1roLkSMwM56zNTQ .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-f1roLkSMwM56zNTQ .marker{fill:#333}#mermaid-svg-f1roLkSMwM56zNTQ .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-f1roLkSMwM56zNTQ {color: rgba(0, 0, 0, 0.75);font: ;}

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0开始我的操作确认?结束yesno
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. 注脚的解释 ↩︎

K8S部署机器学习平台相关推荐

  1. 手把手教你搭建Kubeflow——基于K8s的机器学习平台

    文章有些长,建议先关注.收藏再阅读: 简介 Kubeflow是在k8s平台之上针对机器学习的开发.训练.优化.部署.管理的工具集合,内部集成的方式融合机器学习中的很多领域的开源项目,比如Jupyter ...

  2. 机器学习平台cube studio部署

    (作者:陈玓玏) 项目地址: https://github.com/tencentmusic/cube-studio 或者查看 https://gitee.com/data-infra/cube-st ...

  3. 从YARN迁移到k8s,滴滴机器学习平台二次开发是这样做的

    整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) [导读]人工智能时代,机器学习已经渗透进每个领域,改变了这些领域的业务模式.技术架构以及方法论.随着深度学习技术近年来快速发展,高 ...

  4. 如何高效推进ML模型开发和部署?Uber机器学习平台Michelangelo实践

    作者 | Jeremy Hermann & Mike Del Balso 译者 | 王天宇 整理 | Jane 出品 | AI科技大本营 [导读]2017年9月,Uber 在技术社区发表了一篇 ...

  5. k8s部署-48-k8s中如何选择使用哪个api,开发一个k8s的容器管理平台的思路是什么?

    k8s中有很多的api,我们的yaml文件开头一定要申明一个apiversion,怎么知道该使用哪个api呢?如何来选择正确的api呢? 我们又该如何来开发一个基于k8s的容器管理平台,开发k8s容器 ...

  6. 汽车之家机器学习平台的架构与实践

    导读:汽车之家机器学习平台是为算法工程师打造的一站式机器学习服务平台,集数据导入.数据处理.模型开发.模型训练.模型评估.服务上线等功能于一体,提供一站式全方位的机器学习建模流程,快速打造智能业务.本 ...

  7. 独家解读 | 滴滴机器学习平台架构演进之路

    现在很多互联网公司都有自己的机器学习平台,冠以之名虽然形形色色,但就平台所要解决的问题和技术选型基本还是大同小异. 所谓大同是指大家所要处理的问题都相似,技术架构和选型也差不太多,比如都会使用 GPU ...

  8. 微博机器学习平台云上最佳实践

    简介: 本文讲述了微博机器学习平台和深度学习平台的业务功能和云上实践,剖析了阿里云大数据在微博这两大学习平台的架构建设上所起到的作用. 作者:新浪微博数据计算平台系统架构师 曹富强 本文讲述了微博机器 ...

  9. XX证券 机器学习平台使用情况访谈总结

    访谈摘要 访谈时间:XX 访谈地点:XX证券 访谈对象:客户IT人员和业务人员 客户现状 客户对X环.X范以及YYY都有使用经验: 使用对象包括客户的IT人员和业务人员:IT人员具有编程.代码开发能力 ...

最新文章

  1. 【codeforces 242E】XOR on Segment
  2. python实现简单的api接口-对Python实现简单的API接口实例讲解
  3. 32位处理器的寄存器介绍
  4. datatable复制一行数据到本表
  5. 菜鸟之webservice(一) 服务端搭建
  6. htcvr设备计算机配置,准备买HTC VIVE了?来测试一下你的电脑配置够不够
  7. 有限状态自动机java实现_用java开发编译器之:Thompson构造,将正则表达式转换为有限状态自动机...
  8. springBoot 通过使用log4j2
  9. 树--树的基本性质(JAVA)
  10. 大规模分布式系统资源管理(一)
  11. 阿里系 java_阿里系六大开源项目,你知道几个?
  12. 基于spring多数据源动态调用及其事务处理
  13. top 并grep 特定信息打印至txt
  14. maven本地仓库地址更改
  15. 线性最优离散滤波器——维纳滤波器及LCMV MVDR GSC (自适应滤波)
  16. 黎曼Zeta函数,人类文明黎曼Zeta函数,人类文明永恒的的纪念
  17. 电脑开的热定手机连不上解决方法
  18. PreTranslateMessage(MSG* pMsg)专题
  19. (转)网络编程:Socket编程从IPv4转向IPv6支持
  20. 浅谈静电场的边值问题(包括数学物理方法和数值计算)

热门文章

  1. VLAN隔离思维导图
  2. 游戏时弹出内存不能为read的提示框
  3. CSPJ2021考完了,你,AK了吗?
  4. 小波神经网络(时间序列预测)
  5. unity_在canvas中修改text和text到底是什么
  6. 百度地图爬虫——小试牛刀
  7. Hive alter column
  8. 激光雷达与相机融合(五)-------ros实时版点云投影到图像平面
  9. mac下Preferences丢失的问题
  10. php imap 安装_php7安装imap扩展