• [问题求助] 小白求指教:neo4j构建的知识图谱数据可以直接导入到cbs中作为数据库进行智能问答使用吗
    现在已经使用neo4j构建好了一个知识图谱,想将知识图谱与智能问答机器人相结合。比如说,我的知识图谱是企业中危险源相关的图谱,我希望向机器人提问:导致人身伤害的危险源有哪些?那么机器人就会从图谱数据库中查询,然后返回结果。请问这是可行的吗,如果可行进行的程序和步骤是什么样的呢
  • AI人工智能作诗
    已完成                         
  • [其他] 只能如此,人人都是艺术家
    prompt:when shall i reachthe topang hold all mountains in a single giance
  • [交流吐槽] 【Day4+15209973403+微信无+打卡作业截图】
    【Day4+15209973403+微信无+打卡作业截图】
  • 皮卡丘AI绘图
    皮卡丘角色的艺术插图
  • [其他] 芒果西米露要加油哈哈哈
  • 知识点四
    fkbgfkbgfkbg
  • 知识点3
    容器与编排Helm作用:管理复杂性、轻松升级、简单共享、方便回滚Helm 基本概念 — Chart,创建一个应用的信息集合,Chart 可以只部署一个服务,也可以部署整个微服务应用。基本概念— Release,chart运行实例,同一集群同一个release,同namespace。基本概念— Repository,Charts 收集和共享的地方。5.3云原生1、传统应用模式的三大缺点:业务流程脱节、重复建设、信息孤岛2、业务云化解决问题:建设共享、开放、融合;业务一体化、服务共享化、数据标准化;3、评估分析模型6R:应用平迁、应用升级、应用改造、应用重购、应用保留、应用下线4、云化转型规划:微服务(改变应用架构模型)、容器化(改变应用运行方式)、DevOps工具+方法(改变应用开发运维模式)5、云原生应用架构5个特征:符合12因素应用、面向微服务架构、自服务敏捷基础设施、基于API的协作、抗脆弱性。6、云原生平台建设四个关注点:自动化的集成DevOps、持续交付、微服务、容器7、云原生的代表技术:容器、服务网格、微服务、不可变基础设施和声明式API;通过云原生的技术,能够构建容错性好、易于管理、便于观察的松耦合系统,结合可靠的自动化手段——频繁可预测重大变更。8、云原生定义-来自华为Cloud Native是指在云环境下构建、运行、管理软件的新的系统实践范式,充分利用云基础设施与平台服务(IaaS/PaaS),适应云环境,具备(微)服务化、弹性伸缩、分布式、高可用、多租户、自动化等关键特征的架构实践;建立全功能团队、发展全栈工程师并高度协作的组织,采用DevOps研发模式、自动化工具,实现微服务持续交付,是支撑Cloud Native架构的最佳组织和工程实践。9、对比云原生组织/管理DevOps开发、测试、交付、运维一体,微服务最佳组织阵型CI/CD快速响应需求,持续集成、交付、部署技术微服务独立开发、交付、扩展、轻量级产品、交互容器及其编排敏捷的基础设施、微服务最佳载体10、云原生适用组织:互联网企业、ISV提供商、智能设备提供商、云服务商、信息服务提供商11、云原生应用对平台的要求敏捷的基础设施、微服务框架、CI/CD工具链、多种应用组件对应用的要求容器化、微服务化、持续集成交付部署、不可变基础设施、使用平台共享组件对组织文化的要求敏捷、DevOps12、敏捷的基础设施Docker解决问题:应用可移植性、一致性、依赖性、轻量级K8s解决的问题:故障迁移(高可用)、资源调度与编排、资源隔离、弹性扩缩容13、微服务框架Service Mesh 解决问题:应用程序间通讯的中间层、轻量级网络代理、应用程序无感知、解耦应用程序的重试、超时、监控、追踪和服务发现。2 计算与网络2.1 计算计算架构的4个载体:虚拟机、物理服务器、容器、函数计算ECS关注指标:成本、灵活性、易运维、性能、可靠性、兼容性ECS的HA保障机制:支持主机、虚拟平台、虚拟机内部多种故障场景的检测和虚拟机恢复;支持集中控制HA和集群自治HA两种机制,可自选;可设置HA心跳消息的网络平面;降低网络压力、多种故障判断机制,避免漏判、误判故障;支持共享存储与本地存储虚拟机HA。DeH专属主机3个特点: ⚫ 专属主机服务(Dedicated Host)可以将云服务器创建在自己的专属物理主机上; ⚫ 作为专属主机的唯一租户,可以独享物理主机资源,隔离性、安全性更高; ⚫ 可以获取这台服务器的物理属性,并根据专属主机规格创建指定规格族的云服务器。DeH专属主机特性:快速部署、多类型DeH、物理资源监控、自动放置、现有微软授权可使用、管理简单异构计算的3种类型:FPGA/GPU/AI异构计算业务特点:适合逻辑简单计算密集型业务、海量数据并行处理、易于并行的程序或业务、能容忍一定时延、高吞吐量、大带宽BMS裸金属服务器功能特性:自动化下发、免OS安装;挂载云硬盘、使用VPC/VPC内互通;自定义网络、远程登录体验与虚拟机一致、故障重调度。不支持管理资源开销。常见容器引擎:Docker、RKT、Warden容器本质:应用打包/发布格式标准化、应用运行环境标准化(共享OS但彼此隔离(逻辑隔离)—Cgroup资源限制使用/Namespace资源隔离使用)K8S控制平面/masterETCD存储组件,K-V数据库,记录存储系统配置等,支持watch、check+导出control manager管理、控制schedulerPOD动态分配,搭配proxy负载均衡、类似热迁移api-server集群交互节点/nodekubeletpod状态维护kubeproxy网络代理+负载均衡执行代理K8S无状态应用DeploymentreplicaSetDaemonSet有状态应用statefulset批处理应用JobCronJob 云容器实例CCI,serverless无服务器架构,kata container。SWR(软件镜像注册)+AOM(应用运维管理) CCI使用模式:专属模式、共享模式CCI专属集群模式的优势:强隔离、高性能、免运维CCI适合:任务型计算、随启随用、按需付费CCE集群类型:混合集群、windows集群、裸金属集群、GPU容器集群。CCE网络访问clusterIP集群内访问NodePort节点访问loadbalance负载均衡DNAT目的网关ingress七层负载均衡2.2网络VPC和传统的物理三层网络类似,也包括路由器、子网、子网网关、IP地址等传统概念。子网创建后系统默认会占用网段内第一个和最后4个IP地址,分别作为网关、预留地址、DHCP、系统接口、广播地址使用。SNAT:云----公;DNAT:公-----云。ELB策略:轮询(短连接)、加权最少连接(长连接)、源IP(固定处理同一客户请求)权重适合后端服务器组内性能不一致场景。会话保持功能:4层---源IP;7层---HTTP cookie或应用程序cookie网络云服务:同region同VPC子网默认互通同region不同vpc需要对等连接 vpc peering不同region不同vpc之间需要云连接/云VPN服务云上云下互通:云专线或云VPNECS+ELB+EIP----Intenet;ECS+ELB+NAT+EIP---IntenetVPC入出流量筛选规则ACL+安全组3 存储与数据库3.1存储CBR云备份服务为云内的云服务器、裸金属服务器、云硬盘、云下VMware虚拟化环境,提供简单易用的备份服务,针对病毒入侵、人为误删除、软硬件故障等场景,可将数据恢复到任意备份点。跨region使用场景:云内备份、混合云备份、业务迁移&批量部署CBR关键技术:永久增量备份、快照无代理备份(崩溃一致性)、数据库服务器备份(应用一致性)、VMware块级增量备份/增量恢复SDRS 存储容灾服务,是一种为弹性云服务器、云硬盘和专属分布式存储等服务提供容灾的服务。同regionSDRS5大关键特性:RPO=0存储层同步复制容灾、三步操作实现云上容灾、一键式容灾切换、低成本容灾方案、可在线容灾演练云容灾模式:数据备份(无主机)、冷备容灾(虚机不启动)、热备容灾(虚机启动不对外服务)、应用双活(同时提供服务)3.2 数据库1.RDS服务3大规格:单机版、主备版、集群版(一主一备5只读)2.应用场景mysql网站服务、电子商务postgresql地理信息、区块链、图像检索、兼容Oraclesql server金蝶、用友、保险、车企文档数据库服务DDS:MongoDB、自动三副本、基于分布式文件存储可扩展DDS三种部署架构:单点架构、副本集架构、集群架构DDS适用场景:游戏、IOT、互联网分布式缓存服务DCS:内存数据库,兼容了Redis和MemcachedDCS 3种实例类型:单机、主备、集群分布式数据库中间件DDM: 6大关键特性:读写分离、分库分表、连接保持、负载均衡、平滑扩容、分布式事务DRS数据复制服务:功能:在线迁移、数据同步、备份迁移、数据订阅、多活灾备应用场景:云下迁移上云、跨平台数据库迁移、VPC数据库迁移、云内数据库迁移出云数据管理服务DAS:可视化、WEB页面、管理运维数据库的工具。三层系统架构:(global/region/pod)7 openstackNOVA:计算服务。Compute-----虚拟机配置Cinder:存储服务。Volume-----LUN的基础生命周期管理;Backup----LUN的高阶保护Neutron:网络服务。Plugin----第三方插件Swift:对象存储Horizon:web portalKeystone:身份识别、鉴权Heat:配置模板Glance:镜像Ironic:裸金属控制Ceilometer:计费+虚拟资源监控(bss+oss)
  • 知识点二
    一、计算1.1 创建弹性伸缩的流程创建伸缩配置:1、登录管理控制台,2、 选择“计算 > 弹性伸缩 > 伸缩实例”。 3. 单击“创建伸缩配置”。 4. 在“创建伸缩配置”页面,填写弹性伸缩配置信息,您可以选择使用已有云服务 器规格为模板或者使用新模板。 创建弹性伸缩组: 1. 返回“伸缩实例”页面,单击“创建弹性伸缩组”。 2. 在创建伸缩组页面,填写弹性伸缩组的基本信息,例如,名称、最大实例数、最 小实例数、期望实例数等,在高级配置中还可对标签进行配置。 其中,“伸缩配置”选择已创建的伸缩配置。创建伸缩策略 1. 在伸缩组所在行的“操作”列下,单击“查看伸缩策略”。 2. 在“伸缩策略”页签,单击“添加伸缩策略”。通过伸缩控制可以实现弹性云服务器(ECS)实例伸缩和带宽伸缩:伸缩控制:配置策略设置指标阈值/伸缩活动执行的时间,通过云监控监控指标是否达到阈值,通过定时调度,实现伸缩控制。配置策略:可以根据业务需求,配置告警策略/定时策略/周期策略。配置告警策略:可配置CPU、内存、磁盘、入网流量等监控指标。配置定时策略:通过配置触发时间可以配置定时策略。配置周期策略:通过配置重复周期、触发时间、生效时间可以配置周期策略。云监控监控到所配置的告警策略中的某些指标达到告警阈值,从而触发伸缩活动,实现ECS实例的增加/减少或带宽的增大/减小。到达所配置的触发时间时,触发伸缩活动,实现ECS实例的增加/减少或带宽的增大/减小。二、存储2.1 块存储、文件存储、对象存储原理及特性。相互比较SAN存储提供给应用的是一个LUN或者是一个卷,LUN和卷是面向磁盘空间的一种组织方式,上层应用要通过FC或者ISCSI协议访问SAN。SAN存储处理的是管理磁盘的问题,适用于实时读写场景。NAS存储提供给应用的是一个文件系统或者是一个文件夹,上层应用通过NFS和CIFS协议进行访问。利用FTP+TFTP协议进行上传下载,文件系统要维护一个目录树,适用于企业组织内部共享场景,提升办公效率和存储空间利用率(减少同类型数据复存)对象存储更加适合web类应用,基于URL访问地址提供一个海量的桶存储空间,能够存储各种类型的文件对象,对象存储是一个扁平架构,无需维护复杂的文件目录。无需考虑存储空间的限制,一个桶支持近乎无限大的存储空间。(适用于离线、冷数据、归档数据作为后端存储为客户打造的离线存储系统,性价比高……)维度对象存储服务云硬盘弹性文件服务概念提供海量、安全、高可靠、低成本的数据存储能力,可供用户存储任意类型和大小的数据。可以为云服务器提供高可靠、高性能、规格丰富并且可弹性扩展的块存储服务,可满足不同场景的业务需求。云硬盘就类似PC中的硬盘。提供按需扩展的高性能文件存储,可为云上多个云服务器提供共享访问。弹性文件服务就类似Windows或Linux中的远程目录。存储数据的逻辑存放的是对象,可以直接存放文件,文件会自动产生对应的系统元数据,用户也可以自定义文件的元数据。存放的是二进制数据,无法直接存放文件,如果需要存放文件,需要先格式化文件系统后使用。存放的是文件,会以文件和文件夹的层次结构来整理和呈现数据。访问方式可以通过互联网或专线访问。需要指定桶地址进行访问,使用的是HTTP和HTTPS等传输协议。只能在ECS/BMS中挂载使用,不能被操作系统应用直接访问,需要格式化成文件系统进行访问。在ECS/BMS中通过网络协议挂载使用,支持NFS和CIFS的网络协议。需要指定网络地址进行访问,也可以将网络地址映射为本地目录后进行访问。使用场景如大数据分析、静态网站托管、在线视频点播、基因测序和智能视频监控等。如高性能计算、企业核心集群应用、企业应用系统和开发测试等。如高性能计算、媒体处理、文件共享和内容管理和Web服务等。容量EB级别TB级别PB级别时延10ms亚毫秒级3~10msIOPS/TPS千万级单盘 128K单文件系统 10K带宽TB/s级别MB/s级别GB/s级别是否支持数据共享是是是是否支持远程访问是否是是否支持在线编辑否是是是否能单独使用是否是2.2 raid计算题,raid和存储热备盘要吃透,raid10,raid5,raid6,热备盘,冷热备份盘的问题,raid6和raid10得可用空间计算RAID 0 100%,RAID 1 50%,RAID 3和5 (N-1)/n,RAID 6 (N-2)/nRAID 10 50%级别特征原理单元冗余性能利用率最多坏用途缺陷RAID0条带分片分散存入2块硬盘2否读写速度2倍100%0/2SWAP/TMP不冗余,数据难恢复RAID1镜像相同数据存入2块硬盘2是写速度不变读速度2倍50%1/2数据备份读写速度没加,利用率低RAID3校验分片分散存入2块硬盘校验码存入第3块硬盘3是读写速度2倍2/3=66%1/3用的很少1. 坏盘时另外2块需要重新计算还原坏盘数据2. 校验码盘压力大成为瓶颈RAID5校验分片和校验码混合存储3是读写速度2倍2/3=66%1/3用的不多坏盘时另外2块需要重新计算还原坏盘数据RAID6校验分片盘校验码盘分别2个数据分片校验码计算2次4是读写速度2倍2/42/41∈2用的很少“部队中有一半是搞后勤的,感觉还是不太爽。”RAID101+02块硬盘1组先做RAID1多组RAID1再做RAID04是读写速度N倍N为组数2/42/41∈2用的最多-RAID505+03块硬盘1组先做RAID5多组再做RAID06是读写数读2N倍N为组数4/62/61∈3土豪用的“好是好,就是贵!”(备注:raid5,6的利用率见下图)raid5和raid6:raid5:一组分散在不同条带上的奇偶校验数据;允许一块盘故障,两块及以上故障,整个raid故障;RAID 5是RAID 0和RAID 1的折衷方案raid6:存在两组独立的分散在不同条带上的校验数据,两组独立的奇偶校验数据;允许两块盘故障;安全性较高,性能稍差,硬盘利用率较低raid5写的性能比raid10好,读的性能不如raid10;raid6双重数据校验,运算负担大,读写性能不如raid5;raid5利用率为n-1/n(n>2),raid6利用率为n-2/n(n>3)热备盘:原理:热备盘相当于帮Raid阵列多做多个备份,如果Raid陈列里其中一个盘坏了,这个热备盘就会顶替Raid里的那个坏盘,同时利用异或校验算法,把坏盘上面的数据原样做出来并存储在热备盘中。这样一来就等于Raid没受到损坏,然后你再找个一个同样的盘把坏盘替换掉,Raid和热备盘的状态又正常了!热备盘的类型:Global Hotspare:即全局热备盘,为RAID卡上所有已配置的RAID所共有,1块RAID卡中可配置1个或多个全局热备盘。当任意RAID内的与热备盘同类型的硬盘故障时,全局热备盘均可自动替代。Dedicated Hotspare:即局部热备盘,为RAID卡上某个指定的RAID所专有,每个RAID都可以配置1个或多个局部热备盘。当指定RAID内的与热备盘同类型的硬盘故障时,局部热备盘可自动替换。冷备盘:以 2 盘的 RAID1 为例。假如坏掉了一块盘,RAID1 阵列将只有 1 块盘在正常运行,这时的 RAID1 阵列将处于降级(Degraded)状态,也就意味着当前阵列已无容错冗余能力,虽然还能继续运行,但是数据已经不安全,需要人为干预进行修复。只需要拔出坏掉的硬盘,换一块相同容量的、好的硬盘插上去,RAID1 阵列就会自动开始恢复重建过程。简单来说,就是将剩余 1 块盘中的数据重新拷贝到新换上的这块盘中。根据硬盘大小的不同,阵列恢复重建过程将从十几小时到几十小时不等。那么,换上的这块硬盘,不管是从抽屉里拿出来的还是去科技市场买了一块新的,都是通过人为操作插入到整个阵列里的。在出问题之前,这块盘就冷冷的躺在抽屉里而并不会通电,这块盘就叫冷备盘(Cold Spare)。2.3 obs设置标准转低频,低频转归档生命周期管理可适用于以下典型场景:(1)周期性上传的日志文件,可能只需要保留一个星期或一个月。到期后要删除它们。(2)某些文档在一段时间内经常访问,但是超过一定时间后便可能不再访问了。这些文档需要在一定时间后转化为低频访问存储,归档存储或者删除。生命周期管理可以按对象名前缀进行设置规则,也可以在整个桶上设置规则。生命周期管理功能支持数据从当前版本转换为低频访问存储、转换为归档存储,以及数据进行过期删除。您可以指定在对象最后一次更新后多少天,受规则影响的对象将转换为低频访问存储、归档存储或者过期并自动被OBS删除。转换为低频访问存储的时间最少设置为30天,若同时设置转换为低频访问存储和转换为归档存储,则转换为归档存储的时间要比转换为低频访问存储的时间至少长30天,例如转换为低频访问存储设置为33天,则转换为归档存储至少需要设置为63天。对象存储类别转换限制:仅支持将标准存储对象转换为低频访问存储对象,低频访问存储对象转换为标准存储对象需手动转换。仅支持将标准存储或低频访问存储对象转换为归档存储对象。如果要将归档存储对象转换为标准存储或低频访问存储对象,需要手动恢复对象,然后手动转换存储类别。三、网络3.1 VPN组网、原理分析VPN(Virtual Private Network,虚拟专用网)是一种在公用网络上建立专用网络的技术。它之所以称之为虚拟网,主要是因为VPN的两个节点之间并没有像传统专用网那样使用端到端的物理链路,而是架构在公用网络如Internet之上的逻辑网络,用户数据通过逻辑链路传输。按照VPN协议分,常见的VPN种类有:IPsec、SSL、GRE、PPTP和L2TP等。其中IPsec是通用性较强的一种VPN技术,适用于多种网络互访的场景。IPsec VPN是指采用IPsec实现远程接入的一种VPN技术,通过在公网上为两个或多个私有网络之间建立IPsec隧道,并通过加密和验证算法保证VPN连接的安全。IPsec VPN保护的是点对点之间的通信,通过IPsec VPN可以在主机和主机之间、主机和网络安全网关之间或网络安全网关(如路由器、防火墙)之间建立安全的隧道连接。其协议主要工作在IP层,在IP层对数据包进行加密和验证。相对于其他VPN技术,IPsec VPN安全性更高,数据在IPsec隧道中都是加密传输,但相应的IPsec VPN在配置和组网部署上更复杂。IPsec的工作原理大致可以分为4个阶段:识别“感兴趣流”。网络设备接收到报文后,通常会将报文的五元组等信息和IPsec策略进行匹配来判断报文是否要通过IPsec隧道传输,需要通过IPsec隧道传输的流量通常被称为“感兴趣流”。协商安全联盟(Security Association,以下简称SA)。SA是通信双方对某些协商要素的约定,比如双方使用的安全协议、数据传输采用的封装模式、协议采用的加密和验证算法、用于数据传输的密钥等,通信双方之间只有建立了SA,才能进行安全的数据传输。识别出感兴趣流后,本端网络设备会向对端网络设备发起SA协商。在这一阶段,通信双方之间通过IKE协议先协商建立IKE SA(用于身份验证和密钥信息交换),然后在IKE SA的基础上协商建立IPsec SA(用于数据安全传输)。数据传输。IPsec SA建立成功后,双方就可以通过IPsec隧道传输数据了。IPsec为了保证数据传输的安全性,在这一阶段需要通过AH或ESP协议对数据进行加密和验证。加密机制保证了数据的机密性,防止数据在传输过程中被窃取;验证机制保证了数据的真实可靠,防止数据在传输过程中被仿冒和篡改。如图所示,IPsec发送方会使用加密算法和加密密钥对报文进行加密,即将原始数据“乔装打扮”封装起来。然后发送方和接收方分别通过相同的验证算法和验证密钥对加密后的报文进行处理得到完整性校验值ICV。如果两端计算的ICV相同则表示该报文在传输过程中没有被篡改,接收方对验证通过的报文进行解密处理;如果ICV不相同则直接丢弃报文。MPLS VPN:使用场景在运营商骨干网络上提供L3VPN业务,利用BGP协议发布路由信息,在骨干网内部使用MPLS转发VPN报文。概念CE(Consumer Edge):用户边缘路由器,与运营商网络直接相连的路由器。感知不到VPN的存在,一个CE设备只能对应一个VPN主要功能就是将VPN客户的路由通告给PE,以及从PE学习同一个VPN下其他站点的路由PE(Provider Edge):运行商(骨干网)边缘路由器,与用户网络相连的路由器。负责VPN业务接入,处理VPN-IPV4路由使用VRF对VPN客户进行隔离通过与客户设备CE进行路由协议,以便获取客户路由,并将路由生成VPNv4前缀放入MPLS VPN骨干网传递到对端PEP(Provider):骨干网路由器,与PE或其他P相连。负责快速转发数据不知道VPN客户网络,以及客户的路由。只负责在骨干网内运载标签数据VRF(Virtual Router Forwarding):PE上的虚拟路由器(路由进程)。一张独立的路由表,包括独立的地址空间一组归属于这个VRF的接口的集合,一组只用于本VRF的路由协议一个VPN对应一个VRFRD(Route-Distinguisher):路由标识符BGP进程用该字段区分不同VPN,有了RD后就可以解决不同VPN之间的IP地址重叠问题,VPN用户的IP地址不再是整个系统全局唯一,而是VPN内唯一即可。RT(Route-Target)每个VRF表达自己的路由输出和输出方式,主要用于控制VPN路由的发布和安装策略。3.2 高可用组网——计算虚拟机高可用高并发场景的组网——李赛:负载均衡方案:1.在VPC/子网内创建弹性负载均衡实例作为服务接口对外提供3.3 IP规划、子网规划3)公网与私网IP 公网IP:在Internet上的计算机使用的IP地址是全球统一规划的,称为公网地址。 私网IP:在企业、学校等内网通常使用保留的私网地址。 1)为什么设置私网IP? 因为IPV4的地址数量不足,同时在最初分类IP设计中的缺陷,导致在网络不断发展中,IP地址匮乏严重。于是,提出了私网IP,即保留一部分IP作为私网IP,这些IP可以再内网中使用,不同内网都可以使用这些IP(即复用,只要一个内网中地址互相区别,不同内网可复用),则无形中仿佛增加了IP数量。2)哪些是私网IP地址 A类:10.0.0.0-10.255.255.255,掩码 255.0.0.0; B类:172.16.0.0-172.31.255.255,掩码 255.255.0.0; C类:192.168.0.0-192.168.255.255,掩码 255.255.255.0 3)如果内网使用私网IP标识主机,这些主机如何访问Internet? 对于私网地址,由于不同内网中复用,因为不能在Internet访问中使用,否则会引发冲突。那如何解决该问题,即NAT技术(Network Address Translator),其作用是将私网IP转换为公网IP,当然提供有多种NAT技术。 子网划分 什么是子网? 子网(subnet),将一个大的网络划分成几个较小的网络,每一个网络都有其自己的子网地址; 2) 为什么进行子网划分? IP地址的有效利用率问题 路由器的工作效率问题 通过在子网中包含广播流量来控制流量 减少整体网络流量并提高网络性能3)如何进行子网划分? 基本思路: 子网划分是在分类的IP基础上提出的,对于分类IP其网络位已确定,想进一步进行子网划分,则考虑借用主机位作为子网位,从而形成三层地址结构,即网络位,子网位,主机位,利用网络位与子网位共同来标识网段。借位规则: 1 从高位向低位依次连续借位 2 至少主机位留2位,因为主机位全0和主机位全1的IP地址需保留 3 借位与什么相关? 1) 需要划分的子网数量; 2) 子网中主机的数量 如何把所划分的子网表达出来,即标识子网网段?子网掩码:子网掩码与IP地址进行与运算其结果即为网络地址,将掩码进行扩展,网络位与子网位置1,主机位置0. A类地址默认子网掩码:255.0.0.0 B类地址默认子网掩码:255.255.0.0 C类地址默认子网掩码:255.255.255.0 子网划分方法: 等长子网划分 等长子网划分就是将一个网段等分成多个网段,也就是等分成多个子网。 子网划分就是借用现有网段的主机位做子网位,划分出多个子网。子网划分的任务包括两部分: 1)确定网络掩码的长度。 2)确定子网中第一个可用的IP地址和最后一个可用的IP地址。 2 可变长子网划分VLSM 现实中,不同子网的主机数量不同,等长子网划分比较简单,但是地址存在浪费,基于不同子网的IP需求,对于不同子网采用不同的子网长度。 基本步骤: 1)首先,根据子网中最大的IP需求量,先对网络划分子网。 2)然后,再根据具体情况,将子网进一步划分子网。 3)根据需要重复此过程,以创建不同大小的子网。 子网合并 把多个网络(子网)的网络位当做主机位,将多个网络(子网)合并成一个大的网络(子网),其目标可对于路由表中的项目进行合并,增加路由效率。 如何合并?什么样的能合并? 核心:相同前缀,连续地址 路由匹配:最长前缀匹配 (思考?认真体会一下这一点)3.4 网络类型一、云专线:云专线(Direct Connect)用于搭建用户本地数据中心与华为云VPC之间高速、低时延、稳定安全的专属连接通道,充分利用华为云服务优势的同时,继续使用现有的IT设施,实现灵活一体,可伸缩的混合云计算环境。云专线服务具有以下几大产品优势:高安全:用户使用云专线接入华为云上VPC,使用专享私密通道进行通信,网络隔离,安全性极高。低时延:专用网络进行数据传输,网络性能高,延迟低,用户使用体验更佳。支持大带宽:华为云专线单线路最大支持100Gbps带宽连接,满足各类用户带宽需求。资源无缝扩展:通过云专线将用户本地数据中心与云上资源互联,形成灵活可伸缩的混合云部署。必须使用单模的1GE、10GE、40GE或100GE的光模块与华为云的接入设备对接。同时,需要提前与华为云专线POP点对齐LC、波长、距离等关键参数。光模块参数举例:1GE LC 单模 1310nm 10KM。必须禁用端口的自动协商功能,同时必须手动配置端口速度和全双工模式。必须跨整个连接 (包括中间设备) 支持 802.1Q VLAN 封装。可以支持BGP或者静态路由对接,您的设备须支持边界网关协议(BGP)和BGP MD5认证或支持静态路由。(可选) 您可以在网络上配置双向转发检测 (BFD)。在物理连接层上支持的最大传输单位 (MTU) 高达 1522 字节 (14 字节以太网标头 + 4 字节 VLAN 标记 + 1500 字节 IP 数据报 + 4 字节 FCS)。推荐参数值:1500。二、VPN:虚拟专用网络(Virtual Private Network,以下简称VPN),用于在远端用户和虚拟私有云(Virtual Private Cloud,以下简称VPC)之间建立一条安全加密的公网通信隧道。当您作为远端用户需要访问VPC的业务资源时,您可以通过VPN连通VPC。默认情况下,在虚拟私有云(VPC)中的弹性云服务器无法与您自己的数据中心或私有网络进行通信。如果您需要将VPC中的弹性云服务器和您的数据中心或私有网络连通,可以启用VPN功能。VPN由VPN网关、对端网关和VPN连接组成,VPN网关提供了虚拟私有云的公网出口,与用户本地数据中心侧的对端网关对应。VPN连接则通过公网加密技术,将VPN网关与对端网关关联,使本地数据中心与虚拟私有云通信,更快速、安全的构建混合云环境。优势:高安全:采用华为专业设备,基于IKE和IPsec对传输数据加密,提供了电信级的高可靠性机制,从硬件、软件、链路三个层面保证VPN服务的稳定运行。无缝扩展资源:将用户本地数据中心与云上VPC互联,业务快速扩展上云,实现混合云部署。连通成本低:利用Internet构建IPsec加密通道,使用费用相对云专线服务更便宜。即开即用:即开即用,部署快速,实时生效,在用户数据中心的VPN设备进行简单配置即可完成对接三、IPRAN:IP RAN 的意思是“无线接入网IP化”。IP 指的是互联协议,RAN指的是Radio Access Network。相对于传统的SDH传送网,IPRAN是基于IP的传送网的。IP RAN是针对IP化基站回传应用场景进行优化定制的路由器/交换机整体解决方案。在城域汇聚/核心层采用IP/MPLS技术,接入层主要采用二层增强以太技术,或采用二层增强以太与三层IP/MPLS相结合的技术方案。IP RAN技术的特点及优势:1、端到端的IP化:端到端的IP化使得网络复杂度大大降低,简化了网络配置,能极大缩短基站开通、割接和调整的工作量。2、端到端IP减少了网络中协议转换的次数,简化了封装解封装的过程,使得链路更加透明可控,实现了网元到网元的对等协作、全程全网的OAM管理以及层次化的端到端QoS。IP化的网络还有助于提高网络的智能化,便于部署各类策略,发展智能管道。3、更高效的网络资源利用率:面向连接的SDH或MSTP提供的是刚性管道,容易导致网络利用率低下。而基于IP/MPLS的IPRAN不再面向连接,而是采取动态寻址方式,实现承载网络内自动的路由优化,大大简化了后期网络维护和网络优化的工作量。4、多业务融合承载:IPRAN采用动态三层组网方式,可以更充分满足综合业务的承载需求,实现多业务承载时的资源统一协调和控制层面统一管理,提升运营商的综合运营能力。四、PONPON是一种典型的无源光纤网络,是指 (光配线网中) 不含有任何电子器件及电子电源,ODN全部由光分路器 (Splitter) 等无源器件组成,不需要贵重的有源电子设备。一个无源光网络包括一个安装于中心控制站的光线路终端 (OLT),以及一批配套的安装于用户场所的光网络单元 (ONUs) 。目前广泛使用的PON技术在现有的网络包括两种主流技术:EPON和GPON。EPON上行和下行带宽是1.25Gbit/s GPON带宽为2.5Gbit/s的下游和上游的带宽为1.25Gbit/s,大多数EPON/GPON只配置了以太网接口,可选POTS和2M接口传统的PON系统下行数据流采用广播技术、上行数据流采用TDMA技术,以解决多用户每个方向信号的复用问题。传统PON技术采用WDM技术,在光纤上实现单纤双向传输,解决2个方向信号的复用传输。PON一般由光线路终端(OLT)、分光器(ODU)、用户终端(ONU)3个部分构成。目前在现网中广泛应用的PON技术包括EPON和GPON 2种主流技术,EPON上下行带宽均为1.25 Gbit/s,GPON下行带宽为2.5 Gbit/s,上行带宽为1.25 Gbit/s.相对成本低1) 相对成本低,维护简单,容易扩展,易于升级。PON结构在传输途中不需电源,没有电子部件,因此容易铺设,基本不用维护,长期运营成本和管理成本的节省很大。纯介质网络2) 无源光网络是纯介质网络,彻底避免了电磁干扰和雷电影响,极适合在自然条件恶劣的地区使用。资源占用3) PON系统对局端资源占用很少,系统初期投入低,扩展容易,投资回报率高。 4) 提供非常高的带宽。EPON目前可以提供上下行对称的1.25Gb/s的带宽,并且随着以太技术的发展可以升级到10Gb/s。GPON则是高达2.5Gb/s的带宽。5) 服务范围大。PON作为一种点到多点网络,以一种扇形的结构来节省CO的资源,服务大量用户。用户共享局端设备和光纤的方式更是节省了用户投资。6) 带宽分配灵活,服务质量(QoS)有保证。G/EPON系统对带宽的分配和保证都有一套完整的体系。可以实现用户级的SLA。3.5 管理业务双平面3.6 测带宽的题目假设每次访问的平均页面大小是200K字节,网站的预期目标是每天50W PV的访问量。我们的计算开始:50W PV如果在一天内平均分布,折合到每秒大概是50W/(246060)=6次访问,按照我们之前的假设平均页面大小是200K字节计算,这6次访问总 共就是1200K字节(需要注意的是这个地方是字节),字节的单位是Byte,而带宽的单位是bit,1Byte=8bit,因此1200K Byte大概就是9600K bit,也就是9Mbps(1M=1024K)。在实际的网站运行过程中,我们的网站必须要在峰值流量时保持正常的访问,这里就会用到我们之前的假设,峰 值流量是平均流量的5倍,按照这个计算,实际需要的带宽大约在9Mbps*5=45Mbps左右。   具体的计算公式是:   网站独享带宽=一天总的PV值÷ 一天总时间(换算到S)*平均页面大小(单位KB)* 8四、数据库4.1 LNMP LAMP开数据库LAMP:Linux + Apache + MySQL+php的组合方式LNMP:Linux + Nginx + MySQL+php的组合方式LAMP和LNMP最主要的区别在于:一个使用的是Apache,一个使用的是Nginx。Linux 开源免费软件,作为网站的操作系统 Apache/Nginx Web服务器软件 MySQL 多线程多用户的数据库管理系统,用来存放数据 PHP 服务器端的应用程序软件,快速执行动态网页LAMP:使用的是Apache,Apache是世界是用排名第一的Web服务器软件,其几乎可以在所有广泛使用的计算机平台上运营,由于其跨平台和安全性被广泛使用,是最流行的Web服务端软件之一。相比于nginx,apache有些臃肿,内存和CPU开销较大,性能上有损耗,nginx对于静态文件的响应能力远高apache。 Apache是负载PHP的最佳选择,如果流量很大的话,可以使用nginx来负载非PHP的Web请求。。LNMP:使用的是Nginx,Nginx是一款高性能额Http和反向代理服务器,也是一个AMAP/POP3/SMTP服务器。nginx使用资源更少,支持更多并发连接,效率更高,作为负载均衡服务器。nginx即可对内进行支持,也可对外进行服务,安装简单。总之:1、LNMP方式的优点:占用VPS资源较少,Nginx配置起来也比较简单,利用fast-cgi的方式动态解析PHP脚本。缺点:php-fpm组件的负载能力有限,在访问量巨大的时候,php-fpm进程容易僵死,容易发生502 bad gateway错误。2、基于 LAMP 架构设计具有成本低廉、部署灵活、快速开发、安全稳定等特点,是 Web 网络应用和环境的优秀组合。若是服务器配置比较低的个人网站,当然首选 LNMP 架构。当然,在大流量的时候。把Apache和Nginx结合起来使用,也不失为一个不错选择。五、容器5.1 容器化改造、拓扑及网络规划1:负载均衡应用改造点:选择合适的负载均衡器中小型的Web应用可以使用ngnix或HAProxy,大型网站或重要的服务可以使用LVS,目前该企业业务较小,选取nginx作为负载均衡器!2:web应用改造点:应用存在长时间执行请求增加消息队列,通过消息队列将长任务与用户请求解耦3:应用服务器应用改造点:应用实例依赖于本地的存储来持久化数据如果是日志,建议变成流汇聚到分布式日志系统中。如果必须要使用存储,要使用共享文件系统如NFS可以利用namespace创建虚拟集群,namaspace之间可以完全隔离,也可以通过某种方式,让一个namespace中的service访问其他namespace中的服务。业务拓扑:Step1:kube-proxy、core-dns从Master中kube-apiserver订阅service,POD2的Service创建时,kube-proxy刷新本节点iptables,core-DNS更新路由数据。Step2:Pod2通过域名访问Pod4的service4,发起到core-dns查询请求,并获取对应的ClusterIP(如果使用ClusterIP直接访问则忽略这一步骤)Step3:Pod2发送业务报文,目的地址为获取到的ClusterIP。容器网络根据目的地址匹配策略后进行VxLAN封装,封装源地址为容器所在的VM IP地址,目的地址为目的容器所在VM IP,并将报文发给I层vSwitch,然后转发至目的容器所在VM,容器网络解VxLAN封装后,根据ClusterIP将业务报文发送目的service及POD。5.2 容器的高可用原理,原理图一、容器集群高可用部署原理:1.CCE高可用集群采用分别在3个AZ中部署三套Master节点方式;2.应用AZ内高可用部署,通过ClusterIP服务调用不跨AZ。3.应用发布LoadBalancer类型的Service对接到集群所在AZ的融合ELB服务实例;4.应用通过VIP访问数据库,数据库自动切换应用不感知。5.支持多AZ动态容器存储,根据pod所在AZ创建数据卷。高可用架构原理图:二、容器实例高可用容器高可用依赖于多实例部署,在合理配置反亲和后,如果发生单实例、单节点、单AZ故障,业务均不受影响。容器多实例可以实现多节点、多可用区部署5.3 视频存储容器化一.存储容器化存储作为基础组件,直接和本地盘打交道,所以我们一个要解决的事情就是如果Kubernetes 管理本地盘。kubernetes管理本地盘通过官方提供的local-static-provisioner自动生成LocalPersistentVolume管理磁盘。LocalPersistentVolume是Kubernetes提供的一种管理本地盘的资源。5.1 使用Statefulset管理存储容器通过statefulset 管理有状态的存储服务, 为每个pod分配一个单独的磁盘可以使用volumeClaimTemplates给每个pod生成唯一的pvc,具体规则{podName},事先准备好PVC 和 PV,通过Statefulset 我们就可以把我们的存储托管到云上了。另外借助daemonset,可以把我们gateway模块部署到每一个node上面。处理云存储的请求。5.2 存储容器化的收益1)降低运维成本基于Kubernetes和statfulset获得了滚动更新,灰度更新,健康检查,快速扩容等功能,只需要一组yaml文件就可以快速搭建一个集群,相比于传统写ansible脚本部署的方式复杂度大大降低。2)降低开发运维成本由于Kubernetes把存储抽象成StorageClass PersistentVolume PersistentVolumeClaim。我们可以通过他们管理我们的存储资源,基于Kubernetes lable的过滤功能,可以实现简单的关系查询,通过PVC与PV管理存储资源,减少管理端的开发。定位问题也能通过POD信息快速定位到问题机器和问题云盘。而且接入Kubernetes生态上的prometheus后,监控告警也能快速开发。3)隔离性增强docker限制cpu memory使用,减少进程之间资源互相干扰,进一步提升资源利用率。在做流媒体容器化过程中,各个系统 Portal 平台、中间件、ops 基础设施、监控等都做了相应的适配改造,改造后的架构矩阵如下图所示。1. Portal:流媒体 的 PaaS 平台入口,提供 CI/CD 能力、资源管理、自助运维、应用画像、应用授权(db 授权、支付授权、应用间授权)等功能。2.运维工具:提供应用的可观测性工具, 包括 watcher(监控和报警)、bistoury (Java 应用在线 Debug)、qtrace(tracing 系统)、loki/elk(提供实时日志/离线日志查看)。中间件:应用用到的所有中间件,mq、配置中心、分布式调度系统 qschedule、dubbo 、mysql sdk 等。3.虚拟化集群:底层的 K8s 和 OpenStack 集群。4.Noah:测试环境管理平台,支持应用 KVM/容器混合部署。一.CI/CD 流程改造主要改造点:应用画像: 把应用相关的运行时配置、白名单配置、发布参数等收敛到一起,为容器发布提供统一的声明式配置。授权系统: 应用所有的授权操作都通过一个入口进行,并实现自动化的授权。K8s 多集群方案: 通过调研对比,KubeSphere 对运维优化、压测评估后也满足我们对性能的要求,最终我们选取了 KubeSphere 作为多集群方案。二.中间件适配改造改造关注点:由于容器化后,IP 经常变化是常态,所以各个公共组件和中间件要适配和接受这种变化。Qmq组件改造点:Broker端加快过期数据的处理速度。原因:由于IP变化频繁,对于一个主题有几百个甚至上千个的IP订阅,会产生很多文件Qconfig/Qschedule组件改造点:按实例级别的推送、任务执行在容器场景下不建议使用 。原因:因为IP经常变化,在容器化场景下发布、pod驱逐等都会导致IP变化,按实例维度推送没有意义Dubbo组件改造点:更改上线下线逻辑,下线记录由永久节点改为临时节点。 原因:上下线机制加上频繁的IP变更会导致zookeeper上产生大量的过期数据Openresty改造点:监听多K8s集群的endpoint变更,并更新到upstream; KVM、容器server地址共存,支持KVM和容器混合部署;三应用平滑迁移方案设计为了帮助业务快速平滑地迁移到容器,制定了一些规范和自动化测试验证等操作来实现这个目标。1.容器化的前置条件: 应用无状态、不存在 post_offline hook(服务下线后执行的脚本)、check_url 中不存在预热操作。2.测试环境验证: 自动升级 SDK、自动迁移。我们会在编译阶段帮助业务自动升级和更改 pom 文件来完成 SDK 的升级,并在测试环境部署和验证,如果升级失败会通知用户并提示。3.线上验证: 第一步线上发布,但不接线上流量,然后通过自动化测试验证,验证通过后接入线上流量。4.线上 KVM 与容器混部署:保险起见,线上的容器和 KVM 会同时在线一段时间,等验证期过后再逐步下线 KVM。5.线上全量发布: 确认服务没问题后,下线 KVM。6.观察: 观察一段时间,如果没有问题则回收 KVM。六、迁移6.1 Oracle数据库迁移上云和迁移到数仓的工具和流程利用华为云云数据库RDS和分布式数据库中间件DDM完成Oracle应用迁移上云,提高访问效率,轻松应对高并发的实时交易场景,若采用工具流:Oracle Golden Gate/Data guard/Always On/数据库自带迁移工具等若采用公有云服务:DRS数据复制服务(偏同构数据库)1、Oracle数据库迁移上云的工具和流程迁移上云的工具5Oracle数据库可以使用OGG迁移上云流程Oracle GoldenGate 数据复制过程如下:利用抽取进程(Extract Process)在源端数据库中读取Online Redo Log或者Archive Log,然后进行解析,只提取其中数据的变化信息,比如DML操作——增、删、改操作将抽取的信息转换为GoldenGate自定义的中间格式存放在队列文件(trail file)中再利用传输进程将队列文件(trail file)通过TCP/IP传送到目标系统。目标端有一个进程叫Server Collector,这个进程接受了从源端传输过来的数据变化信息把信息缓存到GoldenGate 队列文件(trail file)当中,等待目标端的复制进程读取数据。GoldenGate 复制进程(replicat process)从队列文件(trail file)中读取数据变化信息,并创建对应的SQL语句,通过数据库的本地接口执行,提交到目标端数据库,提交成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成。2、Oracle迁移至数据仓库(GaussDB)的工具和流程使用DRS的实时同步功能将本地Oracle数据库实时迁移至华为云GaussDB(for openGauss)。通过全量+增量同步,实现源数据库Oracle和目标数据库GaussDB(for openGauss)的数据长期同步。(1)迁移至数据仓库的工具:DRS(2)迁移至数据仓库的流程:创建VPC和安全组创建GaussDB(for openGauss)实例迁移前构造数据迁移数据库(创建DRS实例,将本地Oracle上的test_info数据库迁移到GaussDB(for openGauss)实例中test_database_info数据库中)迁移后进行数据校验1、业务架构图2、迁移原理次实践使用全量+增量同步功能,原理如下:全量同步阶段,先进行结构迁移,例如表、主键、唯一键的迁移。结构迁移完成后,启动增量数据抽取,以确保全量数据同步期间的增量数据完整的抽取到DRS实例。启动全量迁移任务。全量迁移完成后自动进入增量同步,从全量迁移开始抽取的位点开始回放。当增量回放全部完成后,启动比对任务进行一致性检查,支持实时比对。实时比对数据一致时,可以启动业务割接。6.2 在线迁移和离线迁移的对比在线迁移:是指在系统不停机的情况下,将服务器或虚拟机上的系统、服务程序等从自建机房(IDC)或云平台等源环境迁移同步至云上,方便实现企业上云、跨云平台迁移、跨账号/区域迁移或部署混合云等业务需求。@离线迁移:(1)离线实例迁移:将系统盘镜像(若需同时迁移实例已挂载的数据盘,则可将系统盘镜像和数据盘镜像)迁入至指定的云服务器。(离线数据迁移)将数据盘镜像迁入至指定的云硬盘。区别:离线迁移需要先将源端服务器的系统盘或数据盘制作成镜像,再将镜像迁移至您指定的云服务器或云硬盘。在线迁移无需制作镜像,直接在源端服务器运行迁移工具,即可将源端服务器迁移至指定的云服务器。在线迁移、离线迁移对比三方面:成本、效率、安全性。成本:大规模数据的迁移需要耗费大量传输资源,就是网络,成本较高,因此数据量太大有时不适合在线传输。效率:效率受网速限制,如通过网络转移1EB的数据大约需要26 年,而用十辆卡车可以将传输时间降至6个月内安全:利用云计算的黑客攻击愈发频繁,尤其像金融等传统客户是不放心数据在线迁移的。在线迁移工具:技术流:Oracle系统迁移(自带)Oracle Golden Gate/ Data Guard(DG),MS Always On……服务流:采用数据复制服务DRS做数据库迁移,此外若客户涉及异构数据库迁移,则也可用数据库应用迁移服务UGO做迁移离线迁移工具:DES数据快递服务、OBS对象存储6.3 迁移步骤、迁移工具迁移整体流程 迁移前作信息收集+风险容量评估 (软硬件版本、规格、参数、性能容量、兼容性+迁移风险点等作信息收集)迁移方案制定 (确定迁移方式、迁移工具、迁移团队、迁移时间、回退方案等) 迁移方式:P2P/P2V/V2P/V2V(根据客户实际场景决定)迁移预实施+整体逐步逐层实施 (利用迁移方案预实施少量节点---分批次(业务系统最后)+分层次(数据层最后)进行整体迁移)迁移后业务测试+数据检验 (对于迁移业务进行业务拉起和连通性测试+网络质量+数据完整度等) 迁移现场保障+后期维保 (迁移完成后需留场进行业务保障-后续业务在维保期继续关注)项目验收 三大层次迁移工具或服务选择:1. 数据层迁移若采用工具流:可使用HyperReplication/HyperMetro/LUN COPY/ eReplication… 若采用公有云服务:可使用DES数据快递服务;2. 平台层(数据库迁移为例) 若采用工具流;Oracle Golden Gate/Data guard/Always On/数据库自带迁移工具等若采用公有云服务:DRS(偏同构数据库)+UGO(偏异构数据库-可翻译为GaussDB统一命令) 3. 应用层工具流:eBackup/Rainbow等… 服务流:SMS主机迁移服务备份保护容灾类服务单机备份服务:CSBS(云主机备份)---VBS(云硬盘备份)容灾服务:SDRS(同region,跨AZ的本地容灾)---CBR(可实现同/跨region的异地容灾)云主机:ECS、专属主机:DEH 云硬盘:EVS 专属分布式存储:DSS 4大辅助业务(CES云监控、CTS云审计、LTS云日志、CBH堡垒机)考点18:容器和虚拟机的区别1、容器主机必须有OS环境2、容器没有虚拟化软件3、容器应用镜像来自公共、私有、社区HUB4、容器引擎直接安装镜像---运行实例5、容器无需安装OS、无需做任何配置容器和虚拟机的优势对比1、容器占用空间是MB级别,虚拟机是GB级别2、容器的运行速度是秒级,虚拟机是分钟级3、容器的安全性不如计算虚拟化4、容器创建数量无上限,虚拟机受限于hypervisior容器的最大价值(CCI+CCE)1、无服务器架构2、预装好具备容器编排能力的平台考点19:K8s和vpc组网关系Kubernetes本身并不负责网络通信,Kubernetes提供了容器网络接口CNI,具体的网络通信交给CNI插件来负责,开源的CNI插件非常多,像Flannel、Calico等,华为云CCE也专门为Kubernetes定制了CNI插件,使得Kubernetes可以使用华为云VPC网络。通过ELB中转一次连K8s-MasterElb不能直接连master节点,而elb连Service又必须得带selector。那就只能额外部署一个proxy容器,使用selector先到这个proxy容器,再转到Master考点20:什么业务适合做容器化1.轻量级的应用系统、丢失数据不敏感业务适合上容器化平台。几类应用比较适合容器化部署:一是功能单一的应用,即微服务(这也是为什么现在大家一谈到微服务就会谈到容器,一谈到容器就会谈到微服务的原因 );二是无状态的应用,容器的一个最大的优点就是可以快速创建(秒级),对于无状态的应用,可以通过快速横向扩容来提升并发处理能力;三是变更频繁的应用,容器是基于镜像创建的,对于变更频繁的应用,只要能保证镜像在测试环境测试没有问题,那么在生产环境上线由于环境差异导致出问题的概率就会少的多;四是对于需要在一个站点快速部署的应用组,对于需要在一个新站点快速部署的应用组,使用容器技术能够结合容器平台自身的特性,快速创建一个新的站点。2.重量级的中间件、oracle数据库、对数据持久化有强需求的应用、传统行业核心应用不适合容器化。使用容器部署应用,建议的上容器顺序如图所示:考点21:哪些云服务在子网里面,哪些在az里面,哪些是整个region级的region:ELB、NAT、AS、云监控、云容器……az:云硬盘、云硬盘备份、SFS……子网:ECS、物理机服务DRS 跨REGIONSDRS 跨AZOBS 跨REGION复制考点22:vpc内部组网和外部公网入口怎么做,dns怎么做,elb怎么部署(以图示例)考点23:数据库高性能用哪种,怎么部署怎么计费?1、用分布式数据库中间件(DDM)2、部署过程基本架构就是DDM下挂多个Mysql实例,包括只读实例和写实例:步骤一:购买数据库中间件实例及RDS for MySQL实例步骤二:创建逻辑库并关联RDS for MySQL实例步骤三:创建DDM帐号步骤四:连接DDM逻辑库3、计费包年包月/按需付费(小时)考点24:传统视频网站怎么部署,用什么产品
  • 知识点一
    知识点一  裸金属的优势,然后怎么给高性能计算需求客户推荐上云裸金属:为用户提供专属的物理服务器,提供卓越的计算性能,满足核心应用场景对高性能及稳定性的需求,结合了传统托管服务器带来的稳定性能与云中资源高度弹性的优势。安全可靠裸金属服务器是用户专属的计算资源,支持VPC、安全组隔离;支持主机安全相关组件集成;基于擎天架构的裸金属服务器支持云磁盘作为系统盘和数据盘,支持硬盘备份恢复能力;支持对接专属存储,满足企业数据安全和监管的业务安全和可靠性诉求。性能卓越裸金属服务器继承物理服务器特征,无虚拟化开销和性能损失,100%释放算力资源。结合华为自研擎天软硬协同架构,支持高带宽、低时延云存储、云网络访问性能;满足企业数据库、大数据、容器、HPC、AI等关键业务部署密度和性能诉求。敏捷的部署效率裸金属服务器基于擎天加速硬件支持云磁盘作为系统盘快速发放;分钟级资源发放,基于统一console控制台、开放API和SDK,支持自助式资源生命周期管理和运维。4.云服务和解决方案快速集成裸金属服务器基于统一的VPC模型,支持公有云云服务的快速集成;帮助企业客户实现数据库、大数据、容器、HPC、AI等关键业务云化解决方案集成和加速业务云化上线效率。推荐高性能客户上云:选配ECS高配性能版-若客户的核心业务对于虚拟化环境运行无特殊要求,仅仅是性能要求较高,这是一个可用的选择;如果客户特殊异构计算的性能需求,可以推进GPU、AI、HPC、FGPA等异构计算服务若客户高性能业务不可兼容虚拟化环境,则可推荐BMS裸金属服务;知识点二 云原生,考容器和虚拟化的联系,区别,和cicd devops还有微服务关系云原生:在容器技术、可持续交付、编排系统等开源社区的推动下,以及微服务等开发理念的带动下,应用上云已经是不可逆转的趋势,随着云化技术的不断发展,云原生的概念也应运而生。容器和虚拟化的区别:区别:1、容器主机必须有OS环境2、容器没有虚拟化软件3、容器应用镜像来自于公共HUB、私有、社区4、容器引擎安装镜像---运行实例5、容器无需安装OS+无需作任何配置对比:占用空间:容器-MB级别,虚拟化-GB级;运行速度:容器:秒级、虚拟化:分钟级;安全隔离性:容器隔离性不如计算虚拟化(因为共享OS);创建数量:容器无上限,计算虚拟化(受限于虚拟化软件)cicd devops还有微服务关系cicd:持续开发、交付、部署、扩容/快速反馈,响应业务需求DevOPs:开发、测试、交付、运维一体,微服务的最佳组织阵型微服务:独立开发、发布、交付、部署容器及其编排:敏捷的基础设施、按需急用、微服务最佳载体知识点三  然后根据题目画容器业务vpc子网拓扑图(1)CCE内分为两个工作负载,Web负载和数据库负载,位与同一个VPC内(2)数据库集群与WEB集群间使用clusterip方式访问(3)WEB集群和外网的service通过 LB方式访问知识点四 lamp数据库和应用都分别用主机部署,请问用什么规格的存储,并说明原因(应用服务器数据存储200g,文件数据增长快)具体考的时候,如果你真的抽到这个题目,要看清楚题干对吧,题干上面应该会说这个应用数据库,它的读写环境有没有要求什么的,要具体要结合题目。如果仅基于现有的信息:1、Apache服务器:WEB应用程序的服务器,当客户端请求的是静态资源时,web服务器会直接把静态资源返回客户端;2》当客户端请求的是动态资源时,httpd的php模块会进行相应的动态资源运算,如果此过程还需要数据库的数据作为运算参数时,php会连接mysql取得数据然后进行运算,运算的结果转为静态资源并由web服务器返回到客户端。对于应用服务器,由于文件数据增长快,建议还是选用云硬盘,可以选用高性能。知识点五 Vpc及业务管理双平面虚拟私有云VPC每个虚拟私有云VPC由一个私网网段、路由表和至少一个子网组成。 (1)私网网段:用户在创建虚拟私有云VPC时,需要指定虚拟私有云VPC使用的私网网段。当前虚拟私有云VPC支持的网段有10.0.0.0/8~24、172.16.0.0/12~24和192.168.0.0/16~24。(2)子网:云资源(例如云服务器、云数据库等)必须部署在子网内。所以虚拟私有云VPC创建完成后,需要为虚拟私有云VPC划分一个或多个子网,子网网段必须在私网网段内。(3)路由表:在创建虚拟私有云VPC时,系统会自动生成默认路由表,默认路由表的作用是保证了同一个虚拟私有云VPC下的所有子网互通。当默认路由表中的路由策略无法满足应用(比如未绑定弹性公网IP的云服务器需要访问外网)时,可以通过创建自定义路由表来解决。业务管理双平面知识点六  ACL、SG出入策略ACL、SG出入策略网络ACL与安全组类似,都是安全防护策略,当您想增加额外的安全防护层时,就可以启用网络ACL。安全组对云服务器、云容器、云数据库等实例进行防护,网络ACL对子网进行防护,两者结合起来,可以实现更精细、更复杂的安全访问控制。安全组SG安全组是一个逻辑上的分组,为同一个VPC内具有相同安全保护需求并相互信任的云服务器、云容器、云数据库等实例提供访问策略。安全组创建后,用户可以在安全组中定义各种访问规则,当实例加入该安全组后,即受到这些访问规则的保护。系统会为每个用户默认创建一个默认安全组,默认安全组的规则是在出方向上的数据报文全部放行,入方向访问受限,安全组内的实例无需添加规则即可互相访问。默认安全组可以直接使用,也可以根据需要创建自定义的安全组。安全组创建后,您可以在安全组中设置出方向、入方向规则,这些规则会对安全组内部的实例出入方向网络流量进行访问控制,当实例加入该安全组后,即受到这些访问规则的保护。安全组规则包括如下组成部分:来源:源数据(入方向)或目标数据(出方向)的IP。协议类型和协议端口:包括协议类型和协议端口,协议类型如TCP、UDP、HTTP等。源地址:可以是IP地址、安全组、IP地址组。类型:IP地址类型。开通IPv6功能后可见。描述:安全组规则的描述信息。访问控制ACL网络ACL是一个子网级别的可选安全层,通过与子网关联的出方向/入方向规则控制出入子网的数据流。每个网络ACL都包含一组默认规则,如下所示:默认放通同一子网内的流量。默认放通目的IP地址为255.255.255.255/32的广播报文。用于配置主机的启动信息。默认放通目的网段为224.0.0.0/24的组播报文。供路由协议使用。默认放通目的IP地址为169.254.169.254/32,TCP端口为80的metadata报文。用于获取元数据。默认放通公共服务预留网段资源的报文,例如目的网段为100.125.0.0/16的报文。除上述默认放通的流量外,其余出入子网的流量全部拒绝,网络ACL规则的优先级使用“优先级”值来表示,优先级的值越小,优先级越高,最先应用。优先级的值为“*”的是默认规则,优先级最低。多个网络ACL规则冲突,优先级高的规则生效,优先级低的不生效。若某个规则需要优先或落后生效,可在对应规则(需要优先或落后于某个规则生效的规则)前面或后面插入此规则。  通过网络ACL添加拒绝规则,可以拒绝恶意IP、恶意协议、恶意端口的访问;通过网络ACL设置子网间的访问规则,可以对子网间访问进行限制;网络ACL支持规则编排,可以把访问频繁的规则置顶,提高性能。知识点七 云原生的通俗解释+画图示意微服务 CICD devops 容器化的关系+四个各自的功能作用 Pivotal 最新官网对云原生概括为 4 个要点:DevOps+持续交付+微服务+容器。符合云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps 支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。            微服务   应用间通过RESTFUL API通信             DEVOPS  自动化发布管道、CI工具云原生                快速部署到生产环境                               开发、运维协同工作                     CI/CD     持续交付  频繁发布、快速交付、快速反馈、降低发布风险            容器化    微服务的载体微服务功能微服务 :1、按照业务来划分服务,单个服务代码量小,业务单一,易于维护2、每个微服务都有自己独立的基础组件,例如数据库、缓存等,且运行在独立的进程中3、微服务之间的通信是通过HTTP 协议或者消息组件,且具有容错能力4、微服务有一套服务治理的解决方案,服务之间不相合,可以随时加入和剔除服务5、单个微服务能够集群化部署,并且有负载均衡的能力6、整个微服务系统应该有一个完整的安全机制,包括用户验证、权限验证、资源保护等7、整个微服务系统有链路追踪的能力8、有一套完整的实时日志系统微服务具备功能:1、服务的注册和发现2、服务的负载均衡3、服务的容错4、服务网关5、服务配置的统一管理6、链路追踪7、实时日志CICD:CICD实现了从代码开发、代码编译、部署、测试、发布上线自动化的一套自动化构建的流程;CI即持续集成(Continuous Integration),它实现代码合并、构建、部署、测试都在一起,不断地执行这个过程,并对结果进行反馈。CD包含两个含义:持续交付(Continuous Delivery),它实现部署到生产环境,给用户进行使用持续部署(Continuous Deployment),它实现部署到生产环境devops :DevOps 就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠容器化:容器是通过一种虚拟化技术来隔离运行在主机上不同进程,从而达到进程之间、进程和宿主操作系统相互隔离、互不影响的技术。这种相互孤立进程就叫容器,它有自己的一套文件系统资源和从属进程。知识点八 一个算存储容量的题,oceanstore ,4台存储(每台12块,一块冷备,做raid5),加一个级联的存储机框(24块盘,不做raid),问一共多少容量。4*10*单盘+24*单知识点九、核数:2*16=32核 内存:8*16g=128g 2、核数:2*16*0.25=8核(0.25平均负载)       2*16*0.85=27.2(峰值负载0.85,可取32) 内存:8*16*0.68=87.04G(可取96g) 存储空间:系统盘未知, 数据库盘:8*500g*0.5(raid10利用率50%)=2000G 要求:1、cpu平均利用率小于50%,2内存利用率小于70%,3无特别说明按照1:1选型,4保证峰值压力。 怎么计算选型?32核/128G /2000GB知识点十 24块盘,2块保险盘不存数据,一块高热盘、一块低热盘,分两组做了raid5,可用容量:24T实际容量:20T (高热做校验,低热做冗余,只去上下4个保险盘)容量使用率:20/24可用硬盘数:20知识点十 视频点播,直播分别是两个不同的域名,绑定的同一个ip,华为云什么服务可以实现该功能,并简要说明步骤ELB+CDN+DNS知识点十一 华为云服务有哪些特性可以保证高性能和高可靠(数据库)      数据库本身特性    服务高可用:可用区内部主备、跨可用区主备    数据高可靠:在线存储数据可靠性9个9、备份存储数据可靠性11个9    数据高安全:(1)连接安全:VPC、子网、安全组、VPN、SSL(2)安全管理:管控平台严格做到不碰用户业务数据(3)数据加密:储存数据加密,秘钥严格管理用分布式数据库中间件DDM   1、用分布式数据库中间件(DDM):分布式关系型数据库,兼容Mysql协议,采用存储计算分离架构的模式,使得存储、计算层可以无限扩展,从而拥有海量数据高并发访问能力。   2、DDM部署过程   基本架构就是DDM下挂多个Mysql实例,包括只读实例和写实例:步骤一:购买数据库中间件实例及RDS for MySQL实例步骤二:创建逻辑库并关联RDS for MySQL实例步骤三:创建DDM帐号步骤四:连接DDM逻辑库读写分离、采用高可用部署读写分离,主备版部署或集群版部署(一主一备五只读)四、数据多样化存储      关系型数据库支持与分布式缓存服务Redis、Memcached对象存储服务等产品搭配使用,基于双机热备的高可用架构,提供单机、主从、集群等丰富类型的缓存类型,满足用户高并发及数据快速访问的业务需求。 14、目的数据库oracle但是不用rds,采用哪种模式15、计算模式下应用了哪些服务知识点十六、私有镜像创建zhxx-app.vmdk和zhxx-db.vmdk是否都能导入华为云镜像的方式部署?对于Vmware镜像文件.vmdk部署为华为云的弹性云服务器ECS,其流程主要步骤有哪些?华为云支持导入vhd、vmdk、qcow2、raw、vhdx、qcow、vdi、qed、zvhd或zvhd2格式镜像文件。使用公有云镜像服务,步骤如下: 准备符合平台要求的外部镜像文件。 上传外部镜像文件到OBS个人桶中。 通过管理控制台选择上传的镜像文件,并将镜像文件注册为私有镜像。 私有镜像注册成功后,使用该镜像创建新的云服务器。知识点十八 网络ACL、SG策略规划知识点十九  视频、流媒体容器化由于视频业务客户负载变化难以预测,需要根据CPU/内存使用率进行实时扩缩容。可以利用CCE容器引擎,来实现弹性伸缩应用。知识点二十 外网内网负载均衡(web服务器、应用服务器、数据库)知识点二十一 使用容器引擎客户端上传镜像开始——安装容器引擎——构建镜像——创建组织——连接容器镜像服务——上传镜像——结束
  • [问题求助] 无障碍视觉辅助识别
    希望能被上面人 看到  谢谢:我记得鸿蒙3里面有个“无障碍视觉辅助识别” 有很大升级空间 毕竟对我这种近视而不带眼镜的人有很大帮助 毕竟 像我这种人多的很 我现实遇见的很多   就是对公交   动态识别能力加强  我这些年近视最多遇见的就是  一个认错人 很尴尬   第二个就是最烦的 坐公交   比如 XX镇到XX县     或者多少号公交  这些司机一个看不见你招手 不减速直接开 我近视当我反应过来基本没有时间 主要怕认错了车 就算你认出了车你再招手基本很少有车会停下来 因为已经到你身边才招手的 乡下的公交都一个色    城市的公交也差不多  基本停下来一秒开关灯似的走个流程就走了    这种事遇到的最多 希望  这新出来的 功能能开相机动态快速 能在1-2秒内识别公交 以及 多少路 或者识别去哪个方向的公交 或者你说出地点 能快速识别那一路公交能到你这地点 因为 我错过了很多次 公交少等30分钟 多久要等一个小时 甚至复工迟到一天
  • [经验分享] 使用MindStudio进行RotatE模型开发
    Bilibili视频教程链接:【经验分享】使用MindStudio进行RotatE模型开发_哔哩哔哩_bilibili一、MindSpore深度学习框架环境与配置介绍1、MindSpore深度学习框架介绍MindSpore是一个全场景深度学习框架,旨在实现易开发、高效执行、全场景覆盖三大目标,其中易开发表现为API友好、调试难度低,高效执行包括计算效率、数据预处理效率和分布式训练效率,全场景则指框架同时支持云、边缘以及端侧场景。MindSpore总体架构如下图所示,其中:ModelZoo(网络样例):ModelZoo提供可用的深度学习算法网络,也欢迎更多开发者贡献新的网络。MindSpore Extend(扩展层):MindSpore的扩展包,支持拓展新领域场景,如GNN/深度概率编程/强化学习等,期待更多开发者来一起贡献和构建。MindScience(科学计算):MindScience是基于MindSpore融合架构打造的科学计算行业套件,包含了业界领先的数据集、基础模型、预置高精度模型和前后处理工具,加速了科学行业应用开发。MindExpression(表达层):基于Python的前端表达与编程接口。同时未来计划陆续提供C/C++、华为自研编程语言前端-仓颉(目前还处于预研阶段)等第三方前端的对接工作,引入更多的第三方生态。MindData(数据处理层):提供高效的数据处理、常用数据集加载等功能和编程接口,支持用户灵活的定义处理注册和pipeline并行优化。MindCompiler(编译优化层):图层的核心编译器,主要基于端云统一的MindIR实现三大功能,包括硬件无关的优化(类型推导、自动微分、表达式化简等)、硬件相关优化(自动并行、内存优化、图算融合、流水线执行等)、部署推理相关的优化(量化、剪枝等)。MindRT(全场景运行时):MindSpore的运行时系统,包含云侧主机侧运行时系统、端侧以及更小IoT的轻量化运行时系统。MindInsight(可视化调试调优工具):提供MindSpore的可视化调试调优等工具,支持用户对训练网络的调试调优。MindArmour(安全增强包):面向企业级运用时,安全与隐私保护相关增强功能,如对抗鲁棒性、模型安全测试、差分隐私训练、隐私泄露风险评估、数据漂移检测等技术。 MindSpore源于全产业的最佳实践,向数据科学家和算法工程师提供了统一的模型训练、推理和导出等接口,支持端、边、云等不同场景下的灵活部署,推动深度学习和科学计算等领域繁荣发展。MindSpore提供了Python编程范式,用户使用Python原生控制逻辑即可构建复杂的神经网络模型,AI编程变得简单。目前主流的深度学习框架的执行模式有两种,分别为静态图模式和动态图模式。静态图模式拥有较高的训练性能,但难以调试。动态图模式相较于静态图模式虽然易于调试,但难以高效执行。MindSpore提供了动态图和静态图统一的编码方式,大大增加了静态图和动态图的可兼容性,用户无需开发多套代码,仅变更一行代码便可切换动态图/静态图模式,例如设置 context.set_context(mode=context.PYNATIVE_MODE)切换成动态图模式,设置context.set_context(mode=context.GRAPH_MODE)即可切换成静态图模式,用户可拥有更轻松的开发调试及性能体验。神经网络模型通常基于梯度下降算法进行训练,但手动求导过程复杂,结果容易出错。MindSpore的基于源码转换(Source Code Transformation,SCT)的自动微分(Automatic Differentiation)机制采用函数式可微分编程架构,在接口层提供Python编程接口,包括控制流的表达。用户可聚焦于模型算法的数学原生表达,无需手动进行求导。随着神经网络模型和数据集的规模不断增加,分布式并行训练成为了神经网络训练的常见做法,但分布式并行训练的策略选择和编写十分复杂,这严重制约着深度学习模型的训练效率,阻碍深度学习的发展。MindSpore统一了单机和分布式训练的编码方式,开发者无需编写复杂的分布式策略,在单机代码中添加少量代码即可实现分布式训练,例如设置context.set_auto_parallel_context(parallel_mode=ParallelMode.AUTO_PARALLEL)便可自动建立代价模型,为用户选择一种较优的并行模式,提高神经网络训练效率,大大降低了AI开发门槛,使用户能够快速实现模型思路。 2、MindSpore环境搭建与配置 选择适合自己的环境条件后,获取命令并按照指南进行安装,或使用云平台创建和部署模型安装细节参见链接:https://www.mindspore.cn/install验证是否成功安装python -c “import mindspore;mindspore.run_check()”如果输出:MindSpore version: 版本号The result of multiplication calculation is correct, MindSpore has been installed successfully!说明MindSpore安装成功了。二、MindStudio开发平台简介与安装1、MindStudio开发平台简介Mind Studio是一套基于华为昇腾AI处理器开发的AI全栈开发平台,包括基于芯片的算子开发、以及自定义算子开发,同时还包括网络层的网络移植、优化和分析,另外在业务引擎层提供了一套可视化的AI引擎拖拽式编程服务,极大的降低了AI引擎的开发门槛,全平台通过IDE的方式向开发者提供以下4项服务功能。针对安装与部署,MindStudio提供多种部署方式,支持多种主流操作系统,为开发者提供最大的便利。针对算子开发,MindStudio提供包含UT测试、ST测试、TIK算子调试等的全套算子开发流程。支持TensorFlow、PyTorch、MindSpore等多种主流框架的TBE和AI CPU自定义算子开发。针对网络模型的开发,MindStudio支持TensorFlow、Pytorch、MindSpore框架的模型训练,支持多种主流框架的模型转换。集成了训练可视化、脚本转换、模型转换、精度比对等工具,提升了网络模型移植、分析和优化的效率。针对应用开发,MindStudio集成了Profiling性能调优、编译器、MindX SDK的应用开发、可视化pipeline业务流编排等工具,为开发者提供了图形化的集成开发环境,通过MindStudio能够进行工程管理、编译、调试、性能分析等全流程开发,能够很大程度提高开发效率。MindStudio功能框架如图1所示,目前含有的工具链包括:模型转换工具、模型训练工具、自定义算子开发工具、应用开发工具、工程管理工具、编译工具、流程编排工具、精度比对工具、日志管理工具、性能分析工具、设备管理工具等多种工具。图1 工具链功能架构MindStudio工具中的主要几个功能特性如下:工程管理:为开发人员提供创建工程、打开工程、关闭工程、删除工程、新增工程文件目录和属性设置等功能。SSH管理:为开发人员提供新增SSH连接、删除SSH连接、修改SSH连接、加密SSH密码和修改SSH密码保存方式等功能。应用开发:针对业务流程开发人员,MindStudio工具提供基于AscendCL(Ascend Computing Language)和集成MindX SDK的应用开发编程方式,编程后的编译、运行、结果显示等一站式服务让流程开发更加智能化,可以让开发者快速上手。自定义算子开发:提供了基于TBE和AI CPU的算子编程开发的集成开发环境,让不同平台下的算子移植更加便捷,适配昇腾AI处理器的速度更快。离线模型转换:训练好的第三方网络模型可以直接通过离线模型工具导入并转换成离线模型,并可一键式自动生成模型接口,方便开发者基于模型接口进行编程,同时也提供了离线模型的可视化功能。日志管理:MindStudio为昇腾AI处理器提供了覆盖全系统的日志收集与日志分析解决方案,提升运行时算法问题的定位效率。提供了统一形式的跨平台日志可视化分析能力及运行时诊断能力,提升日志分析系统的易用性。性能分析:MindStudio以图形界面呈现方式,实现针对主机和设备上多节点、多模块异构体系的高效、易用、可灵活扩展的系统化性能分析,以及针对昇腾AI处理器的性能和功耗的同步分析,满足算法优化对系统性能分析的需求。设备管理:MindStudio提供设备管理工具,实现对连接到主机上的设备的管理功能。精度比对:可以用来比对自有模型算子的运算结果与Caffe、TensorFlow、ONNX标准算子的运算结果,以便用来确认神经网络运算误差发生的原因。开发工具包的安装与管理:为开发者提供基于昇腾AI处理器的相关算法开发套件包Ascend-cann-toolkit,旨在帮助开发者进行快速、高效的人工智能算法开发。开发者可以将开发套件包安装到MindStudio上,使用MindStudio进行快速开发。Ascend-cann-toolkit包含了基于昇腾AI处理器开发依赖的头文件和库文件、编译工具链、调优工具等。将MindStudio安装在Windows服务器上时,Windows服务器为本地环境,Linux服务器为远端环境。本地环境要求:Windows 10 x86_64操作系统。2、MindStudio安装 第一步:安装python1、MindStudio目前支持Python版本为3.7.0 ~3.9.7,下面以安装Python3.7.5依赖包为例。将Python3.7.5安装到本地。2、打开系统命令行,输入python -V命令确认python版本是否为3.7.5。安装Python3相关依赖。pip install xlrd==1.2.0pip install absl-pypip install numpy如若返回如下信息,则表示安装成功。Successfully installed xlrd-1.2.0Successfully installed absl-py-0.12.0 six-1.15.0Successfully installed numpy-1.20.1 第二步:安装MinGW1、请用户到下载最新的MinGW安装包,根据系统选择对应版本,例如windows64位选择x86_64-posix-seh。2、打开系统命令行,输入gcc -v命令。当界面提示“gcc version x.x.x (x86_64-posix-sjlj-rev0, Built by MinGW-W64 project)”信息时,表示安装成功。若未提示该信息,请尝试重启计算机。第三步:安装cMakeCMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不依赖于某特定编译器,并可支持多层目录、多个应用程序与多个库。1、获取CMake,推荐安装的版本为3.16.5-win64-x64。第四步:安装jdk111、请注意mindstudio不支持jdk8,请安装jdk11在命令行中输入javac –-version和java –version,得到如下输出,代表安装完成 第五步:安装mindstudio1、软件安装前,请获取所需软件包和对应的数字签名文件。(1) MindStudio_{version}_win.zip,MindStudio免安装压缩包,含有GUI的集成开发环境。获取链接:https://www.hiascend.com/software/mindstudio/download(2)MindStudio_{version}_win.exe,MindStudio安装包,含有GUI的集成开发环境。获取链接:https://www.hiascend.com/software/mindstudio/download2、为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的数字签名文件用于完整性验证。3、安装MindStudio--两种方式(1)以免安装压缩包形式,直接解压到相应文件目录即可(2)下载exe文件以及对应的数字签名文件三、训练工程创建及其相关配置1、启动MindStudio2、本文以RotatE模型为例,介绍使用MindStudio进行MindSpore训练脚本开发流程。下载RotatE项目代码,项目地址https://gitee.com/mindspore/models/tree/master/research/nlp/rotate3、点击Open图标4、选择项目所在位置,添加rotate项目,点击OK5、项目结构如图所示6、代码目录结构如图所示7、开始项目①点击File->Projects Structure②点击Add Python SDK③选择SSH Interpreter,点击Deploy后的按钮④点击左上角+号,输入服务器IP地址,点击OK⑤Python解释器自动选为服务器远程解释器,点击OK⑥在主界面点击File->settings->tools->Deployment,配置映射。点击左上角加号,输入连接名称。点击OK。connection选项是基本的连接配置,类型一般选用SFTP,点击右侧按钮,输入服务器ip地址和端口号,然后可以点击Test Connection按钮测试连接是否通畅。下拉选择刚才配置好的ssh连接接下来点击Mappings配置映射关系。Local Path要求的是填入本地的项目名称路径,Deployment Path的是部署到服务器上的项目路径。点击OK⑦当本地文件进行修改需要上传到服务器时,点击项目名称rotate,再选择Tools->Deployment->Upload to上传项目。同理,Download项目可以下载服务器文件到本地。勾选Automatic Upload,可以在每次本地文件保存后,自动同步项目到服务器。至此,本地项目连接到远程服务器的步骤完成。8、点击工具栏Ascend,将项目转化为昇腾项目,如图所示:然后按照如下进行配置,点击OK若提示没有CANN,在File->Setting下搜索CANN,点击Install配置,等待同步完成四、RotatE模型介绍1、模型简介论文名称:RotatE: Knowledge Graph Embedding by Relational Rotation in Complex Space项目链接:https://gitee.com/mindspore/models/tree/master/research/nlp/rotateRotatE是一个用于链接预测任务的知识图谱嵌入模型。RotatE模型旨在解决知识图谱中学习实体和关系表示的问题,以预测缺少的链接。 此类任务的成功在很大程度上取决于建模和推断关系(或关系之间)模式的能力。 RotatE模型能够建模和推断各种关系模式,包括:对称/反对称,反演和组成。2、数据集介绍wn18rr数据集(https://github.com/DeepGraphLearning/KnowledgeGraphEmbedding)是从WordNet数据集中抽取的子集,其中更多地保留了原数据集中的对称关系、非对称关系和组合关系,而去除了反转关系。wn18rr数据集一共包含40943个实体,11种关系,数据集总大小3.78M,其中训练集一共86835个三元组,验证集一共3034个三元组,测试集一共3134个三元组。需要注意的是,三元组数据中的实体采用数字id的形式,具体的实体名称可以在entities.dict中查找到。3、模型迁移思路由于RotatE模型源码由PyTorch深度学习框架编写,利用了其动态图的特性,对输入数据进行交叉负采样,从而能够训练出更加鲁棒的模型。Mindspore训练模式是以静态图为基础的,为了完成源码当中交叉负采样的效果,我们可以针对两种不同的负采样形式构建两个网络,共同训练同一组参数(即实体嵌入矩阵和关系嵌入矩阵)。在数据集负采样阶段,我们对负采样的种类进行标注,训练阶段对输入数据进行判断,从而让不同负采样的数据进入到不同的图里进行训练。数据集交叉负采样类:在此类的初始化阶段,我们需要传入两个mindspore.dataset.GeneratorDataset类,分别代表头实体负采样的数据类和尾实体负采样的数据类。RotatE前向:计算图需要继承mindspore.nn.Cell类,在 __init__ 函数中完成初始化,并在construct函数中编写前向传播代码(反向传播代码由Mindspore框架自动完成)。为了精简代码,我们自定义了头实体负采样、尾实体负采样以及正样本的前向逻辑,并根据输入的数据手动调用对应的方法。RotatE得分函数:RotatE模型在以往模型实数范围的基础之上扩大到虚数范围,因此每个实体和关系都对应了实部和虚部两个部分。同样地,对于不同的负采样方案也有不同的处理方式。RotatE单卡训练:我们实现了Ascend 910以及GPU设备上的训练逻辑。与其他模型不同地是,我们在实现RotatE模型训练的时候没有使用model.train()的模式,而是更像PyTorch编写的代码那样在for循环内执行训练,这为Mindspore开发的灵活性提供了新的思路。RotatE多卡训练:同样地,我们也实现了RotatE模型在Ascend 910以及GPU上的多卡训练。对于多卡只需要设置好对应的参数和环境即可完成。五、使用MindStudio对RotatE模型训练、评估和导出1、执行训练【重要】在每次训练完成后,请将服务器中output目录下的文件同步到本地,否则再次运行时这些文件将会被删除,导致不能评估点击Run->Edit Configurations,在弹出的配置页面中,点击左上角“+”按钮,选择Ascend Trainingg,如下图。Name为该运行配置名称,不能重复。Executable填入本地被执行python文件位置,选择train.py。Command Aarguments为运行所需的参数,填入--device_target Ascend --output_path ./checkpoints/rotate-standalone-ascend/ --max_steps 80000。点击OK。点击绿色三角运行。运行结果(部分),如图所示:2、执行评估执行评估:点击Run->Edit Configurations,在弹出的配置页面中,点击左上角“+”按钮,选择Python。Name为该运行配置名称,不能重复。Script path填入本地被执行python文件位置,选择eval.py,parameters为运行所需的参数parameters中填入的参数为--device_target Ascend --eval_checkpoint checkpoints/rotate-standalone-ascend/rotate.ckpt,Working direcroty为当前项目根目录。点击绿色三角运行。运行结果如图所示:3、导出mindir模型导出模型,点击Run->Edit Configurations,在弹出的配置页面中,点击左上角“+”按钮,选择Ascend Trainingg,如下图。Name为该运行配置名称,不能重复。Executable填入本地被执行python文件位置,选择export.py。Command Aarguments为运行所需的参数,填入--eval_checkpoint checkpoints/rotate-standalone-ascend/rotate.ckpt --file_format MINDIR。点击OK。点击绿色三角运行。文件生成在./rotate/,如图所示:六、使用MindInsight进行性能评估 1、安装MindInsight可以采用pip安装或者源码编译安装两种方式,本教程采用pip安装。安装PyPI上的版本:pip install mindinsight如果上面安装较慢,建议安装自定义版本:Pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/{version}/MindInsight/any/mindinsight-{version}-py3-none-any.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple注:{version}表示MindInsight版本号,例如下载1.7.0版本MindInsight时,{version}应写为1.7.0。配置环境变量:1.执行如下命令打开文件系统中的~/.bashrc文件:vi ~/.bashrc在文件最后添加如下环境变量:export PATH=/usr/local/python3/bin:$PATH“/usr/local/python3/bin”为示例安装路径,请根据实际情况配置。输入:wq!保存退出。2.执行命令使环境变量生效。source ~/.bashrc3.验证是否成功安装。执行如下命令:mindinsight start如果出现下列提示,说明安装成功。Web address: http://127.0.0.1:8080service start state: success重启MindStudio启用MIndInsight2、使用MindInsight组件第一步:为了收集神经网络的性能数据,需要在训练脚本中添加MindSpore Profiler相关接口。修改train.py,在以下三处分别添加from mindspore.profiler import Profilerprofiler = Profiler(output_path = './profiler_data')profiler.analyse()第二步:在工具栏选择“Ascend >MindInsight”打开MindInsight管理界面。MindInsight管理界面可显示并管理多个MindInsight训练可视化工程。MindInsight管理界面相关属性说明如下图所示。点击Enable按钮,配置MindInsight组件相关参数。单击“OK”完成MindInsight组件相关参数配置,出现如图所示界面,说明配置成功(注意,Run Config的名称是执行训练/评估步骤中Ascend Training中的配置的名称,可能有所变化)点击view按钮即可跳转进入浏览器,即可进入到UI面板界面运行训练,即可得到各自的训练可视化情况。若想停止监控,单击“Disable”停止MindInsight可视化进程第三步:查看训练样板,如下所示:点击性能分析上图展示了性能数据总览页面,包含了迭代轨迹(Step Trace)、算子性能、数据准备性能和时间线等组件的数据总体呈现。各组件展示的数据如下:迭代轨迹:将训练step划分为几个阶段,统计每个阶段的耗时,按时间线进行展示;总览页展示了迭代轨迹图。算子性能:统计单算子以及各算子类型的执行时间,进行排序展示;总览页中展示了各算子类型时间占比的饼状图。数据准备性能:统计训练数据准备各阶段的性能情况;总览页中展示了各阶段性能可能存在瓶颈的step数目。时间线:按设备统计每个stream中task的耗时情况,在时间轴排列展示;总览页展示了Timeline中stream和task的汇总情况。用户可以点击查看详情链接,进入某个组件页面进行详细分析。MindInsight也会对性能数据进行分析,在左侧的智能小助手中给出性能调试的建议。点击算子耗时统计排名模块的“查看详情”,可以对MindSpore运行过程中的各个算子的执行时间进行统计展示(包括AICORE、AICPU、HOSTCPU算子)。七、FAQ1.使用mindinsight –version出现以下提示并不能说明mindinsight可用输入命令:mindinsight start出现“failed”,此时在MindStudio中配置mindinsight时会有“Enable MindInsight Failed!”的报错解决方法:重装mindinsight包2.Ascend菜单中无Mindinsight选项原因:Ascend -> convert to Training project步骤中,Project Type未设置成Ascend Training解决方法:删除.project文件,即可重新设置Project Type3.Mindinsight卡顿,或者View后在浏览器中查看只能得到空白页解决方法:采用命令行查看八、从昇腾官方中体验更多内容mindspore模型开发教程与API可参考mindspore官网:https://www.mindspore.cn/,也可以在昇腾论坛进行讨论和交流:昇腾论坛总结以上就是本文要讲的内容,本文详细介绍了MindSpore深度学习框架的环境搭建和配置介绍、MindStudio开发平台的安装与使用、RotatE模型的介绍与迁移、使用MindStudio进行训练评估与导出、MindInsight性能分析。欢迎大家提出意见与反馈,谢谢!
  • [EI企业智能] 知识图谱构建与应用的进阶计划 
     2017年7月,国务yuan发布《新一代人工智能发展规划》。2019年7月,在党的“不忘初心,牢记使命”最高领导主持的学习中明确提出“人工智能是引领这一轮科技革命和产业变革的战略性技术,具有溢出带动性很强的“头雁”效应。”  《新一代人工智能发展规划》明确提出了“建立新一代人工智能关键共性技术体系”的重点任务,特别强调了要解决“研究跨媒体统一表征、关联理解与知识挖掘、知识图谱构建与学习、知识演化与推理、智能描述与生成等技术,开发跨媒体分析推理引擎与验证系统”的关键共性技术问题。  最终目标:  本次学习安排紧密结合理论与实践,深入浅出,循序渐进。从基本概念讲起,重点讲解构建方法和技术的转化思路,帮助学员系统性的掌握知识图谱的核心技术原理。基于百科知识进行各项核心技术的实例训练,并结合数字图书馆、医疗、金融、电商、农业、法律等行业应用帮助学员快速积累知识图谱工程项目经验。  进修计划  一、知识图谱概论 二、知识图谱应用 三、知识表示与知识建模 四、知识抽取与挖掘 五、知识融合 六、存储与检索 七、知识推理 八、语义搜索 九、知识问答 
  • [基础介绍] 知识图谱Knowledge Graph
    知识图谱(knowledge graph)是一种基于图(graph)的结构化知识表示方式. 一个图通常由一组节点以及节点间的关系构成. 采用图的方式对知识进行表示, 反映了一种以关系为核心的知识观, 即知识蕴含在关系中. 人类文明发展到目前的阶段, 已经累积形成了海量的知识资源. 其中, 相当部分的知识以自然语言这种非结构化的方式存在. 随着人类社会的持续发展, 人类知识的规模和复杂度也在不断增长. 持续增长的非结构化知识资源对知识的管理、传播与再生产的负面影响日益显著. 通过将知识表示为一组节点及其之间的关系, 知识图谱能够帮助人类和计算机更好地管理、理解与使用海量的知识资源, 对于促进人类文明的持续发展具有重要意义.知识图谱Knowledge Graph主要特点1、用户搜索次数越多,范围越广,搜索引擎就能获取越多信息和内容。2、赋予字串新的意义,而不只是单纯的字串。3、融合了所有的学科,以便于用户搜索时的连贯性。4、为用户找出更加准确的信息,作出更全面的总结并提供更有深度相关的信息。5、把与关键词相关的知识体系系统化地展示给用户。6、从整个互联网汲取有用的信息让用户能够获得更多相关的公共资源。
  • [技术干货] 基于互联网群体智能的知识图谱构造方法
    源自:软件学报     作者:蒋逸 张伟 王佩 张馨月 梅宏摘要知识图谱是一种基于图的结构化知识表示方式.如何构造大规模高质量的知识图谱, 是研究和实践面临的一个重要问题.提出了一种基于互联网群体智能的协同式知识图谱构造方法.该方法的核心是一个持续运行的回路, 其中包含自由探索、自动融合、主动反馈3个活动.在自由探索活动中, 每一参与者独立进行知识图谱的构造活动.在自动融合活动中, 所有参与者的个体知识图谱被实时融合在一起, 形成群体知识图谱.在主动反馈活动中, 支撑环境根据每一参与者的个体知识图谱和当前时刻的群体知识图谱, 向该参与者推荐特定的知识图谱片段信息, 以提高其构造知识图谱的效率.针对这3个活动, 建立了一种层次式的个体知识图谱表示机制, 提出了一种以最小化广义熵为目标的个体知识图谱融合算法, 设计了情境无关和情境相关两种类型的信息反馈方式.为了验证所提方法及关键技术的可行性, 设计并实施了3种类型的实验: 仅包含结构信息的仿真图融合实验、大规模真实知识图谱的融合实验, 以及真实知识图谱的协同式构造实验.实验结果表明, 该知识图谱融合算法能够有效利用知识图谱的结构信息以及节点的语义信息, 形成高质量的知识图谱融合方案; 基于“探索-融合-反馈”回路的协同方法能够提升群体构造知识图谱的规模和个体构造知识图谱的效率, 并展现出较好的群体规模可扩展性.知识图谱(knowledge graph)是一种基于图(graph)的结构化知识表示方式. 一个图通常由一组节点以及节点间的关系构成. 采用图的方式对知识进行表示, 反映了一种以关系为核心的知识观, 即知识蕴含在关系中.人类文明发展到目前的阶段, 已经累积形成了海量的知识资源. 其中, 相当部分的知识以自然语言这种非结构化的方式存在. 随着人类社会的持续发展, 人类知识的规模和复杂度也在不断增长. 持续增长的非结构化知识资源对知识的管理、传播与再生产的负面影响日益显著. 通过将知识表示为一组节点及其之间的关系, 知识图谱能够帮助人类和计算机更好地管理、理解与使用海量的知识资源, 对于促进人类文明的持续发展具有重要意义.设想一项知识图谱构造任务: 建立《红楼梦》一书中所有人物之间的关系图. 粗略一想, 大概有如下几种方式去完成这项任务.一个人手工完成. 找到一本《红楼梦》图书, 逐页阅读, 提取其中的人物及人物之间的关系信息. 可以想象, 即使是一个对红楼梦非常了解的人, 也需要耗费数月甚至更长的时间去完成这一任务. 即便如此, 也不能保证结果的正确性和完整性.基于软件算法的自动构造. 采用某种自然语言处理算法, 自动从《红楼梦》的文字信息中抽取出人物关系信息. 这是一个看起来非常完美的解决方案. 但其有效性依赖于一个基本假设, 即自然语言处理算法在该问题上具备了相当于(或超过)人类个体的自然语言理解及分析能力. 目前的技术进展还不能满足这一假设.基于软件算法的自动构造+人工修正. 这种方式将上述两种方式结合起来, 能够进一步提高所构造的知识图谱的质量.几个好友一起手工完成. 几个好友分别阅读《红楼梦》的不同章节, 提取其中的人物关系信息. 与单人方式相比, 采用多人方式去完成这项任务, 在满足如下条件的情况下会有更高的效率: 一, 这几个好友对红楼梦有一定程度的了解; 二, 这几个好友愿意花费一段时间全身心地投入到这项任务中; 三, 按照章节的方式去分工, 不会导致人物关系信息的大量丢失; 四, 这几个好友具有良好的协同能力.在互联网环境下, 还有另外一种方式去完成这项任务, 即采用协同式众包的方式. 这种方式大概可以理解为是“几个好友一起手工完成”在互联网技术支持下的规模扩展版本. 在互联网技术的支持下, 任何个体都可以自由加入到这项任务中, 在其中贡献自己所知道的红楼梦人物关系信息片段, 或对其他人创建的信息片段的正确性/准确性进行判断; 然后, 通过某种方式将所有参与者提交的信息片段拼接在一起, 形成完整的红楼梦人物关系图. 本文关注的也正是这样一种知识图谱构造方式.需要指出的是, 这种协同式众包与目前主流的两种众包实践(即竞争性众包、微任务众包)具有一定的差异性. 首先, 协同式众包不是竞争性众包. 所谓竞争性众包, 是指由若干团队各自独立地完成一项任务, 然后通过某种方式确定完成质量最好的一个团队, 向其支付酬金; 其他团队的工作结果不会被采纳, 也不会获得任何酬金. 而在协同式众包中, 协同的特点更显著一些, 竞争的特点则相对微弱. 其次, 协同式众包也不完全是微任务众包. 所谓微任务众包, 是指众包任务本身就是由一组离散的微任务组成. 例如, 对于“为一个图片库中的所有图片添加文字标注”这一众包任务, 其实际上是由一组“为一个特定图片添加文字标注”的微任务所组成; 完成了所有的微任务, 就相当于完成了这一众包任务. 在协同式众包中, 可能并不存在一组事先定义的子问题, 而是由参与者自发地识别出当前众包任务的子问题并提交相应的解决方案信息. 另外, 与微任务众包相比, 协同式众包还增加了信息拼接的内容, 即需要采用某种方式把不同个体提交的片段信息拼接在一起. 相比较而言, 协同式众包是一种更关注协同、更为智能的众包. 在本文中, 我们将这种类型的众包定位为一种互联网群体智能, 进而将这种构造知识图谱的方式称为“基于互联网群体智能的知识图谱构造”.抽象而言, 本文探索采用基于互联网人类群体智能的方式来构造知识图谱并促使其持续演化, 即通过人类个体基于互联网的大规模群体协同, 来构造和演化知识图谱. 在该方式中, 每一人类个体都可以自由加入到知识图谱的构造活动中, 在其中贡献自己的力量, 形成某种形式的大规模群体协同. 该方式的可行性体现在3个方面. (1) 在互联网环境下, 涌现出了面向众多复杂问题求解的群体智能现象, 为基于群体智能的知识图谱构造和演化提供了参考性示例. (2) 人类个体, 在某种意义上, 是一个天然的高质量自然语言分析程序. (3) 知识图谱具有的图结构, 使得知识图谱的构造问题具有良好的可分解性, 使得每一参与者都可以低成本地参与到知识图谱的构造活动中: 每一参与者可以把自己知道的信息转化为相应的知识图谱片段; 然后自动化算法对个体片段信息进行拼接, 形成更为完整的知识图谱. 这种基于群体智能的知识图谱构造方式, 其核心技术难点在于如何对大规模参与者群体提交的海量信息片段进行有效的融合与反馈, 使得在群体层面上形成一致、准确的高质量知识图谱.具体而言, 本文提出了一种基于群体智能的知识图谱构造方法. 该方法的核心是一个持续运行的回路(如图 1所示), 称为“探索-融合-反馈”[1]回路. 该回路包含了3个并行的活动: 自由探索、自动融合、主动反馈. 其中, 第1个活动由人类参与者实施, 后两个活动由支撑环境自动实施. 在自由探索活动中, 每一参与知识图谱构造的人类个体独立进行知识图谱的构造活动, 不与其他参与者发生直接的交互. 在任一时刻, 对于每一参与者而言, 其探索活动的输出是一个个体知识图谱. 在自动融合活动中, 支撑环境实时地将所有参与者当前各自的探索结果融合在一起, 形成当前时刻的群体知识图谱. 在主动反馈活动中, 支撑环境根据每一参与者当前的个体知识图谱以及当前的群体知识图谱, 向该参与者推荐特定的知识图谱片段信息, 以提高其构造知识图谱的效率. 每一参与者自主决定是否接受、拒绝或忽略支撑环境提供的反馈信息. 参与者对反馈信息的响应会被记录下来, 用于评估个体的知识偏好以及群体对特定信息的接受程度.图 1 基于群体智能的知识图谱构造框为了验证所提方法及关键技术的可行性, 我们设计并实施了3种类型的实验: 仅包含结构信息的仿真图融合实验、大规模真实知识图谱的融合实验以及真实知识图谱的协同式构造实验. 第1类实验的目的是为了观察本文提出的知识图谱融合算法对图结构信息的利用能力; 第2类实验的目的是为了验证算法对图结构信息和节点语义信息的融合能力; 第3类实验的目的是为了考察本文提出的协同式知识图谱构造方法的可行性.为了实施第3类实验, 我们开发了一个支持“探索-融合-反馈”回路的多人在线知识图谱构造环境, 并分别在1、2、4、8人规模的参与者群体中进行了真实的知识图谱构造实验. 实验结果表明: (1) 本文提出的知识图谱融合算法能够有效利用知识图谱的结构信息以及节点的语义信息, 形成高质量的知识图谱融合方案(在两个真实知识图谱融合数据集上, 相比较目前最好的知识图谱融合算法, 本文算法在Hit@1指标上分别实现了2.24%和11.4%的提升); (2) 基于“探索-融合-反馈”回路的协同方法能够提升群体构造知识图谱的规模和个体构造知识图谱的效率, 并展现出较好的群体规模可扩展性(在相同时间内, 相比较单人独立构造知识图谱, 8人协同构造形成的群体知识图谱的规模提升了约11倍, 且参与者的单人构造效率提升了约1.5倍).本文的主要贡献包含如下4点: 一种基于“探索-融合-反馈”回路的协同式知识图谱构造方法; 一种层次式的个体知识图谱表示机制; 一种以最小化广义熵为目标的迭代式个体知识图谱融合算法; 一个支持“探索-融合-反馈”回路的多人在线知识图谱构造环境.本文第1节对知识图谱和群体智能两方面的相关研究工作进行简要总结. 第2节提出基于“探索-融合-反馈”回路的协同式知识图谱构造方法, 并对其中的关键技术进行详细阐述. 第3节通过3类实验对本文所提方法和关键技术的可行性进行验证. 第4节总结全文, 并对下一步研究工作进行简要说明.1 相关工作1.1知识图谱的构建知识图谱最早可以追溯到20世纪60年代的语义网络(semantic network)以及20世纪70年代的专家系统(expert system). 在这一时期, 领域专家是知识的主要来源, 知识图谱主要通过单一个体或小规模群体手工构造的方式完成. 2000年左右, Tim Berners-Lee提出了语义网(semantic Web)和关联数据(linked data)的概念[2], 其目是为互联网中存在的海量数据信息提供一种标准的描述框架, 从而促成大规模知识的结构化表示、互联与共享. 2012年, 谷歌正式提出了知识图谱(knowledge graph)的概念, 将其用于语义化搜索, 展现出泛在的应用前景. 在此之后, 知识图谱得到了工业界和学术界的广泛关注.知识图谱在实践和研究中的一个重要问题是: 如何构造大规模高质量的知识图谱. 目前, 知识图谱的构造方式大致可分为两类: 人工构造和自动化构造.  1.1.1 人工构建早期的知识图谱主要依靠单一个体或小规模群体进行人工构造. 这一时期的典型工作包括Cyc和WordNet这两个知识图谱构造项目. Cyc通过手工构造的方式将专家知识表示为一阶逻辑形式[3]. WordNet则主要依靠语言学专家手工输入词语之间的语义关系[4]. 随着互联网的普及与发展, 众包成为一种新的知识图谱构造方式. 例如, Freebase项目采用类似维基百科的方式将知识图谱的创建、修改、查看权限对外开放, 使得互联网上的任一用户都可以自由创建和编辑知识图谱[5]. DBpedia项目将知识图谱构造任务进行微任务化, 由大规模志愿者群体手工完成对维基百科中自然语言知识的结构化表示[6].通过人工方式构造形成的知识图谱具有较高的准确性、可用性和可信性. 但是, 受到构造者个体能力的限制, 这种方式存在知识覆盖面窄, 更新缓慢等问题. 虽然互联网众包大大提高了知识图谱的构造规模, 但这种方式仍然存在对一个小规模核心专家群体的强依赖. 例如, 不同用户提交的数据之间存在的不一致性, 仍然需要由社区核心成员进行裁决[7, 8]. 1.1.2 自动化构造知识图谱的自动化构造算法大致可以分为基于规则和基于统计两种类别. 在基于规则的构造算法中, 需要由领域专家事先给定适用于特定数据集的知识抽取、融合以及补全规则[9−12], 然后算法将这些规则应用到特定的数据集上, 形成知识图谱. 基于统计的构造算法则自动识别特定领域数据源的统计特征, 并自动完成知识图谱的构造[13−16]. 目前, 主流的基于统计的自动化构造算法普遍采用监督学习的方式, 依赖于事先人工标注的大规模训练数据集, 且针对不同的问题领域需要建立不同的训练数据集. 针对开放领域存在的样本数据稀疏问题, 也有学者探索采用弱监督学习的方式进行知识图谱的自动化构造[17, 18].自动化算法在一定程度上提高了知识图谱的构造效率, 降低了构造成本, 但仍然存在两个基本问题. (1) 自动化算法, 特别是采用监督学习的知识图谱构造算法, 严重依赖于训练数据集的规模和质量. (2) 在可以预见的将来, 自动化算法所具有的对一般性非结构化知识的理解能力还远远达不到人类个体的能力, 这在很大程度上限制了自动化算法的应用范围. 在谷歌搜索引擎使用的知识图谱中, 就大量包含了Freebase项目中由人工方式构造的知识谱图信息[19, 20]. 一些研究工作也表明, 在自动化构造知识图谱的过程中, 加入人类的反馈信息, 能够明显提升知识图谱的构造质量[21−23].1.2 知识图谱的表示早期对知识表示的研究, 主要关注于建立形式化的逻辑语义表示机制, 从而支持对知识的有效推理. 20世纪60年代Collins等人[24]提出了语义网络(semantic network)的概念, 试图通过网络结构表示实体之间的语义关系. 20世纪70年代兴起的专家系统[25]提出了更为形式化的知识表示机制, 主要包括: 产生式表示法(production rule pepresentation), 通过IF-THEN的结构支持知识的推理; 框架表示语言(frame representation language), 通过“槽”描述对象可能存在的属性和关联; 一阶逻辑(first-order logic), 支持量化和断言的命题逻辑, 通过演算支持知识的推理. 1985年, Brachman等人[26]在KL-ONE系统中使用描述逻辑(description logic)对知识进行表示, 其主要包含公理集合和断言集合两部分. 描述逻辑是一阶逻辑的一个可判定子集, 能够支持对一致性(consistency)、可满足性(satisfiability)、包含检测(subsumption)、实例检测(instance checking)等性质的判断.随着互联网的发展, 知识表示的一个重要任务是为互联网中存在的海量数据信息提供一种统一的描述框架, 从而促进大规模知识的结构化表示、互联与共享. 与早期的知识表示相比, 现代知识图谱(如Freebase、Yago、Wikidata等)均弱化了对逻辑语义表达的要求, 而强调大规模的事实型知识. 其中, 资源描述框架(resource description framework, RDF)是对事实型知识的一种主流表示方式, 即通过〈主语, 谓语, 宾语〉三元组的形式, 表示知识图谱中实体及其之间的关系. 同时, 通过RDF范式(RDF schema)、元数据(metadata)等方式对RDF的语义信息进行轻量级的描述[2].随着基于深度神经网络的表示学习技术的发展, 知识的向量化表示成为一个重要研究方向. 通过知识嵌入(embedding), 将实体和关系的语义信息表示为对应的向量, 实体之间的关系可以通过向量计算得到, 减少了对图的拓扑结构的依赖. 知识的向量化表示能够有效地支持大规模知识图谱中的知识查询和知识补全. Trans系列工作是知识向量化表示的典型代表. 该系列工作基于翻译模型, 将知识图谱中的实体转换为词向量, 并将实体间的关系视作两个实体间的翻译关系. 在TransE方法[13]中, 源实体通过关系被直接翻译为目标实体, 所以当源/目标实体和关系确定时目标/源实体也是确定的. 这导致TransE方法无法支持一个实体拥有多个同类关系的情况, 与知识图谱的实际表达能力不符. Wang等人提出了TransH方法[27], 以应对实体间可能存在多种同类关系这一客观情况. TransH的核心思想是在翻译过程中仅关心实体中与当前关系相关的维度信息, 且在翻译前需要先将实体投影到关系所在的超平面. Lin等人提出了TransR方法[28], 其核心思想是将实体和关系建模在两个不同的空间中, 从而减小了空间维度, 能够在一定程度上避免过拟合问题, 在实际数据中取得了更好的补全效果.1.3 群体智能 1.3.1 自然界中的群体智能长久以来, 科学家在很多社会性昆虫群体中观察到了一种看似矛盾的现象: 每一昆虫个体不具有或仅具有有限的智能, 但一个昆虫群体却能在群体层次上展现出远超个体的智能行为. 这种在昆虫群体层次上展现出的智能行为, 被称为群体智能(swarm/collective intelligence)[29, 30]. 从群体智能现象中可以观察到群体智能具有的一个基本性质, 即对个体智能的放大效果.研究者提出了环境激发效应[31]这一概念, 用于解释社会性昆虫的群体智能现象. 环境激发效应指代了一种发生在昆虫个体之间以物理环境为媒介的间接交互机制. 基于这一概念, 昆虫群体中的群体智能现象通过如下过程涌现形成: 昆虫个体在物理环境中留下自己的踪迹, 或对物理环境作出某种改变; 这些踪迹或改变被群体中的个体感知到, 并刺激这些个体在环境中留下新的踪迹或对环境作出进一步的改变; 因此, 个体行为之间实现了有效的协同, 并形成了一个正反馈回路, 进而在群体层次上表现出智能的自组织行为. 环境激发效应解释了群体智能具有的另外一个基本性质: 群体协同规模的可扩展性.物理空间中存在的群体智能现象指出了信息空间(cyberspace)中一种潜在的大规模人类群体协同方式[1]. 主要基于如下两点原因: (1) 基于当前的研究, 群体智能蕴含了一种能够有效放大个体智能的大规模群体协同机制. (2) 与物理空间中大规模群体聚集的高成本相比, 在信息空间中更容易实现大规模人群的低成本聚集. 如果能够将群体智能的基本原理成功应用到信息空间中的大规模人类群体上, 实现对人类个体智能的有效放大, 那么, 我们认为, 这将极大地释放人类社会具有的潜在创造力, 促进人类文明的进一步发展[32]. 1.3.2  基于互联网的人类群体智能互联网上已经出现了很多人类群体智能现象或系统, 为很多领域带来了创新性的问题求解方法. 其中, 一些群体智能现象/系统是长期的社会-技术协同演化的产物, 另一些则是针对特定的问题精心设计的群智化求解系统. 例如, 在软件工程领域, 经过数十年的演化, 开源软件开发[33]已经成为一种重要的社会-技术现象; 在其中, 地理分布的大规模开发者群体通过互联网进行有效的协同, 成功开发出数量众多的高质量复杂软件应用. 在单项选择题求解领域, UNU系统[34]提供了一个有趣的多人在线环境, 可以支持一个大规模群体通过持续协同的方式确定一个单项选择题的答案, 在很多实际场景中的预测和决策问题上表现出很高的准确率. 在生物学研究领域中, EteRNA系统[35]提供了一个多人在线游戏, 通过大规模非专业个体的持续协同求解复杂的蛋白质结构问题.群体智能的研究还远远落后于实践; 现有的研究成果几乎没有对人工群体智能系统的构造产生实质性的影响. 目前存在的较为成功的人工群体智能系统都不是在任何成熟的群体智能理论的指导下构造形成的. 主要原因在于, 目前的研究工作主要关注群体智能的解释型理论(即如何解释某一群体智能现象的形成机理), 而较少触及群体智能的构造型理论(即如何可控地构造求解特定问题的群体智能系统). 一个典型案例是环境激发效应. 这一概念在提出时是用于解释社会性昆虫群体中群体智能现象[31], 而且近年来也被广泛用于分析和解释人类群体智能现象[36, 37]. 我们认为, 环境激发效应提供了一种针对群体智能的解释性模型, 能够对已经存在的群体智能现象进行有效的事后分析. 但是, 这一概念能够在何种程度上有效指导一个人工群体智能系统的构造, 仍然需要进一步的观察和确认.2.方法本节介绍一种基于互联网群体智能的知识图谱构造方法. 该方法的核心是一个持续运行的回路, 包含3个并行的活动: 自由探索、自动融合、主动反馈. 本节分别对这3个活动及其中的基本概念和关键技术进行说明.2.1 自由探索在自由探索活动中, 每一参与知识图谱构造的人类个体独立进行知识图谱的构造活动, 不与其他参与者发生直接的交互. 在任一时刻, 对于每一参与者而言, 其探索活动的输出是一个个体知识图谱. 2.1.1 个体知识图谱个体知识图谱的表示需要考虑两个方面的因素. 一方面, 所采用的表示机制应该具备有效的抽象性和良好的可扩展性, 从而支持对不同领域中存在的多样性知识片段进行有效的建模. 另一方面, 这种表示机制应该能够支持算法有效识别不同知识图谱之间的共性和差异性, 从而实现对群体知识的有效融合与反馈. 基于上述考虑, 我们设计了一种层次式的个体知识图谱, 支持对二元关系、多元关系以及高阶关系的统一标识, 且可以被方便地转换为一种边上带标签的有向图, 从而基于图结构进行多源信息的分析、融合与反馈.定义 1(个体知识图谱). 个体知识图谱是一个五元组K≐(K0, K1, K2, K3, K4). 其每个元素的定义如下.1. K0≐(L, V, ℓ, ≻, ⊒,  , ⊔, ⊓, η, α): 个体知识图谱框架, 满足如下条件.(a) L≐{0, 1, 2, 3, 4}: 个体知识图谱中节点具有的5个层次. 其中, 0、1、2、3、4分别表示道层(tao level)、元元模型层(meta-meta-model level)、元模型层(meta-model level)、模型层(model level)、实例层(instance level).(b) V: 个体知识图谱的节点集合.(c) ℓ: V→L: 层次映射函数, 将个体知识图谱节点映射到其所在的层次. 为方便下文叙述, 令 前者表示由V中处于i层的元素构成的集合; 后者表示由V中所有不处于i层的元素构成的集合.(d)  : 个体知识图谱节点之间的实例化关系. 对于任何(u, v)∈≻(也记为u≻v), 表示v是u的一个实例, 或u是v的一个类型. 为方便下文描述, 令V(≻v)≐{u∈V|u≻v}, 且V(u≻)≐{v∈V|u≻v}. 前者表示由V中所有v的类型构成的集合; 后者表示由V中所有u的实例构成的集合(下文会根据需要将这种表示符号应用到其他集合与二元关系上)). 实例化关系不具有自反性、对称性、传递性. 对任何u≻v, 有ℓ(v)=ℓ(u)+1成立.(e) : 个体知识图谱节点之间的一般特殊关系. 对任何(g, s)∈⊒(也记为g⊒s), 称g是s的一般概念, 或s是g的特殊概念, 满足: 对任何s≻w, 有g≻w成立. 也即一个概念的任何一个实例一定是这个概念的一般概念的实例. 对任何u, v∈∈V, 如果u⊒v且v⊒u, 则称u, v等价, 记为u=v. 一般特殊关系具有自反性、传递性, 但不具有对称性.(f) : 个体知识图谱节点之间的幂集关系, 一个部分函数(partial function). 对任何(u, v)∈ (也记为 , 称v是u的幂概念, 满足: 对任何v≻w, 有u⊒w成立. 也即一个概念的幂概念的任何一个实例一定是这个概念的一个特殊概念.(g) : 个体知识图谱节点之间的并集关系, 一个部分函数. 对任何u↦v∈⊔(也记为⊔(u)=v), 称v是u的所有实例的并集, 满足: (1) 对任何x, y∈V, 如果u≻x且x≻y, 则v≻y成立; (2) 对任何y∈V, 如果v≻y, 则存在x∈V, 有u≻x且x≻y成立. 也即一个概念的所有实例的并集是由这些实例的所有实例构成的集合.(h): 个体知识图谱节点之间的交集关系, 一个部分函数. 对任何u↦v∈⊓(也记为⊓(u)=v), 称v是u的所有实例的交, 满足: (1) 对任何x∈V, 如果对所有y∈V(u≻), y≻x成立, 则有v≻x成立; (2) 对任何x∈V, 如果v≻x, 则对任何y∈V(u≻), 有y≻x成立. 也即一个概念的所有实例的交集是由这些实例的共有实例构成的集合.(i) η: V→V(Str≻): 标识符函数. 将个体知识图谱节点映射到字符串上. Str是模型层知识图谱的一个节点, 表示由所有字符串构成的集合. 该函数的主要目的是为个体知识图谱中的每一个节点关联一个人类可理解的描述信息.(j) : 符号字面量函数. 将V中符号概念⊛实例的实例映射到字符串上. 符号概念⊛是元模型层知识图谱的一个节点. 该函数的主要目的是为每一个符号概念实例的实例关联一个对应的字面量. 不失一般性, 令α⊆η. 也即一个符号的字面量即提供对该符号的一种描述信息.2. K1≐(○1, ∅1): 元元模型层知识图谱, 满足: {○1, ∅1}⊆V. ○1表示元元模型层的满节点, 满足: (1) ℓ(○1)=ℓ; (2) 对于任何v∈V(1), 有○1⊒v成立. 可知, 对任何1≻v成立. 元素∅1表示元元模型层的空节点, 满足: (1) ℓ(∅1)=1; (2) 对于任何v∈V(1), 有v⊒∅1成立. 可知, 不存在v∈V(2), 使得∅1≻v成立.3. K2≐(○2, ∅2, ⊙, ⊝, ⊚, ⊛): 元模型层知识图谱, 满足: {○2, ∅2, ⊙, ⊝, ⊚, ⊛}⊆V. ○2表示元模型层的满节点, 满足: (1) ℓ(○2)=2; (2) 对任何v∈V(2), 有○2⊒v成立. 可知, 对任何v∈V(3), 有○2≻v成立. ∅2表示元模型层的空节点, 满足: (1) ℓ(∅2)=2; (2) 对任何v∈V(2), 有v⊒∅2成立. 可知, 不存在v∈V(3), 使得∅2≻v成立. ⊙、⊝、⊚、⊛分别表示实体概念、关系概念、角色概念、符号概念, 满足○1≻⊙, ○1≻⊝, ○1≻⊚, ○1≻⊛.4. K3≐(○3, ∅3, Str, Int, ↠, π, κ, (a) (○3, ∅3, Str, Int)⊆V. ○3表示模型层的满节点, 满足: (1) ℓ(○3)=3; (2) 对任何v∈V(3), 有○3⊒v成立. 可知, 对任何v∈V(4), 有○3≻v成立. ∅3表示模型层的空节点, 满足: (1) ℓ(∅3)=3; (2) 对任何v∈V(3), 有3成立. 可知, 不存在v∈V(4), 使得∅3≻v成立. 元素Str、Int分别表示字符串、整数, 满足⊛≻Str, ⊛≻Int. 令Ints= (int), 也即Ints是Int的幂概念.(b) ↠: V(⊝≻)←V(⊚≻): 关系概念实例与角色概念实例之间的关联关系. 其逆关系↠−1是一个函数, 即任何一个角色概念实例只与一↠: V(⊝≻)←V(⊚≻): 关系概念实例与角色概念实例之间的关联关系. 其逆关系↠−1是一个函数, 即任何一个角色概念实例只与一个关系概念实例相关.(c) π: V(⊚≻)→V(3): 角色概念实例的承担者函数, 将一个角色概念实例映射到模型层知识图谱的节点上. 其具体含义见实例层知识图谱.(d) κ: V(⊚≻)→V(Ints≻): 角色概念实例的承担者数量限制函数, 将一个角色概念实例映射到一个整数集合上. 其具体含义见实例层知识图谱.(e) τ, ⇝, ↱, ↰): 关于时间点、时间点先后关系、以及时间区间的模型层知识图谱. 其中, τ表示时间点, 满足⊛≻τ. ≤τ⊆V(τ≻)×V(τ≻)表示时间点之间的先后关系; ≤τ是一个偏序关系(具有自反性、传递性, 但不具有对称性). 对任何(t0, t1)∈≤τ (也记为t0≤τt1), 若满足t1≤τt0, 则称t0和t1相等(记为t0=t1). ⇝表示时间区间, 满足⊛≻⇝. ↱: V(⇝≻)→V(τ≻)表示一个函数, 将时间区间实例映射到对应的开始时间点实例上. ↰: V(⇝≻)→V(τ≻)表示一个函数, 将时间区间实例映射到对应的结束时间点实例上. 对任何p∈V(⇝≻), 有↱(p)≤τ↰(p)成立.5. K4≐(ρ, ↺): 实例层知识图谱, 满足如下条件.(a): 关系概念实例的实例到角色承担者的映射函数. 对于其中的一个元素(v, r)↦w, v表示一个关系概念的实例u的实例, r表示u的一个角色, w表示角色r在v上的承担者集合, 且满足: (1) w是π(r)的一个特殊概念; (2) w的实例的数量是κ(r)中的一个元素. 可以看到, 模型层知识图谱中定义的角色概念实例的承担者函数π和承担者数量限制函数κ对ρ包含的元素进行了限制.(b) ↺: V(4)→⇝: 实例层节点到其生命周期的映射函数.该定义给出了一种层次式的知识图谱, 其中包含5个层次: 道层、元元模型层、元模型层、模型层、实例层.个体知识图谱包含的每一个节点都处于且仅处于一个层次中. 相邻层次的节点之间通过实例化关系相互关联. 实例化关系的定义建立在概念外延的基础上, 即将一个概念理解为由其所有实例形成的集合; 若一个元素属于概念的外延集合, 则表明该元素是该概念的一个实例. 除实例层外(不包括实例层), 处于其他层的节点均是概念, 且指代了概念的外延. 个体知识图谱还定义了概念之间的一般特殊关系、幂集关系、并集关系、交集关系. 对于个体知识图谱中的每一个节点, 通过标识符函数, 将该节点与对应的字符串描述信息进行关联. 对于个体知识图谱中的每一个节点, 如果是符号概念⊛实例的实例, 则通过标识符函数将其与对应的字面量进行关联. 对于元元模型层、元模型层、以及模型层, 分别定义了若干基本节点以及节点之间的关系; 需要指出的是, 这些元素不是一个全集, 可以根据实际需要向其中添加新的元素. 实例层包含两个函数: ρ函数将关系概念⊝实例的实例映射到涉及角色的承担者; ↺函数将实例层节点映射到其生命周期. 另外, 对于道层, 由于其中包含的元素(处于元元元模型层或之上)过于抽象, 且不会对知识图谱的构造产生直接的影响, 所以我们没有对其中的元素进行定义. 2.1.2 个体知识图谱的图表示给定个体知识图谱K≐(K0, K1, K2, K3, K4), 其图表示(graph representation)是一个边上带标签的有向图基于个体知识图谱生成对应的图表示的基本思想如下: 把个体知识图谱内置的每一种二元关系包含的每一个元素转化为图表示中两个节点之间一条带标签的有向边; 有向边上的标签即是对应的关系名. 除此之外, 算法1还包含对两种例外情况的处理. (1) 对于函数ℓ, 把其值域中的5个整数分别转化为符号概念实例l的5个实例li, i∈L; 然后, 把ℓ中的每个元素(v, i)转化节点v和li之间一条标签为“l”的有向边. (2) 对于函数ρ中的每一个元素(v, r, w), 创建r的一个实例γ; 然后, 在节点v和γ之间建立一条标签为“↠”的有向边, 在节点γ和w之间建立一条标签为“ρ”的有向边. 图 2给出了个体知识图谱图表示的一个示例.