• [交流吐槽] 第一课
    Bearpi HM nano介绍功能齐全开发板主体:E5扩展板接口原理图扩展板场景实践开发环境搭建快速上手(概述)1导入虚拟机2获取虚拟机地址3打开Mobaxterm ,输入地址,获取远程虚拟机操作4打开RaiDrive,获取本地映射的虚拟机文件路径5在远程虚拟机中获取源码6编译源码7安装CH340驱动,连接开发板8利用Hiburn,下载程序9最后运行Mobaxter,查看串口打印 
  • [交流吐槽] 第一课
    Bearpi HM nano介绍功能齐全开发板主体:E5扩展板接口原理图扩展板场景实践开发环境搭建快速上手(概述)1导入虚拟机2获取虚拟机地址3打开Mobaxterm ,输入地址,获取远程虚拟机操作4打开RaiDrive,获取本地映射的虚拟机文件路径5在远程虚拟机中获取源码6编译源码7安装CH340驱动,连接开发板8利用Hiburn,下载程序9最后运行Mobaxter,查看串口打印 
  • [新手课堂] 资讯|广电运通云平台获鲲鹏Validated认证
    近日,广州广电运通金融电子股份有限公司(简称“广电运通”)的广电运通云平台V1.0(简称“运通云平台”)获得鲲鹏Validated认证。运通云平台是广电运通完全自主研发,采用先进的云原生微服务架构打造的一个异构适配更完整、迁移部署更便捷、安全等级更合规的云平台,具备容器云、多云管理平台、企业级私有云、混合云及超融合平台功能,满足用户在X86及鲲鹏等资源的融合需求,可纳管市场主流私有云和公有云平台,提供稳定高效、开放兼容、可持续进化的全栈式云系列产品服务,实现“一云多芯,多云纳管”的价值。广电运通深度联合广州“鲲鹏+昇腾”生态创新中心对运通云平台进行全栈兼容性适配,基于统信操作系统V20,通过鲲鹏应用使能套件BoostKit,采用鲲鹏GCC、MariaDB读取锁优化等特性进行全面调优。通过本次联合性能优化,运通云平台单虚机CPU虚拟化性能最大提升79.61%,多虚机CPU虚拟化性能最大提升33.82%,超分场景CPU虚拟化性能最大提升47.32%,这标志着运通云平台管理及数据处理能力优异,具备从底层硬件到操作系统、上层应用系统等全栈软硬件兼容认证能力。性能优势1、单虚机CPU虚拟化性能测试分别模拟CPU使用率30%、60%、90%,对8U16G虚拟机进行压测,对比原解决方案,性能提升了31.96%、48.17%、79.61%。2、多虚机CPU虚拟化性能测试分别创建3台8U16G的虚拟机(CPU虚拟化比例为1:1),3台虚拟机并行压测。对比原解决方案,3台虚拟机性能提升了33.83%、7.26%、8.58%。3、超分场景CPU虚拟化性能测试对3台8U16G虚拟机分别模拟CPU 在30%、60%、90%的不同使用率情况下进行并行压测,3台虚拟机经调优后的整体性能均有所提升:虚拟机1:CPU在使用率30%、60%、90%下,调优后性能分别提升了35.32%、47.32%、42.86%;虚拟机2:CPU在使用率30%、60%、90%下,调优后性能分别提升了12.61%、21.73%、24.72%;虚拟机3:CPU在使用率30%、60%、90%下,调优后性能分别提升了10.5%、19.05%、26.77%;广电运通是鲲鹏计算产业生态的重要伙伴,已与广州“鲲鹏+昇腾”生态创新中心建立长期的合作关系。广电运通与鲲鹏致力打造联合解决方案-广电运通云平台,携手为行业客户提供更强竞争力的服务。鲲鹏将继续坚持开放创新,扎根产业生态构建,加速产业创新发展。拥抱鲲鹏计算产业,共创行业新价值!关于广电运通广电运通创立于1999年,隶属于广州无线电集团,是国有控股的高科技上市企业。公司是领先的人工智能行业应用企业,拥有自主研发的核心技术,集研发、生产、销售、服务于一体,主营业务覆盖智能金融、公共安全、智能交通、数字政府、大文旅、新零售及智慧教育等领域,为全球客户提供具有竞争力的智能终端、运营服务及大数据解决方案。 转自华为计算公众号
  • 【华为云Stack 北向接口对接指导】如何查询虚拟机的内大网IP和弹性IP
    如何查询虚拟机的内大网IP和弹性IP1. 获取tokenURLPOST https://{IAM对外访问域名}/v3/auth/tokens方法:POST请求头Content-Type: application/json;charset=UTF-8请求体(参数domain.name为租户名、user.name为用户名、password为密码,project.name为项目(资源集)名称){    "auth": {        "identity": {            "methods": [                "password"           ],            "password": {                "user": {                    "domain": {                        "name": "xxx_vdc"                   },                    "name": "xxx_admin",                    "password": "xxxxxx"               }           }       },        "scope": {            "project": {                "domain": {                    "name": "xxx_vdc"               },                "name": "xxx_project"           }       }   } }响应头X-Subject-Token: MIIEqQYJKoZIhvcNAQcCoIIEmjCCBJYC…状态码:201响应体示例{    "token": {        "expires_at": "2021-12-10T07:24:26.946000Z",  //token过期时间        "methods": [            "password"       ],        "catalog": [......],        "roles": [   //token具备的权限(用户角色)       ],        "project": {            "domain": {                "name": "hzp_vdc",  //租户名                "id": "95e40b25031f4151bd2643fa56bb3ad9"    //租户Id           },            "name": "dg-tky-12_hzpproject",  //项目(资源集)名            "id": "c7c6a276578e411ab2ef2d999d9ef59e"    //项目(资源集)Id       },        "issued_at": "2021-12-09T07:24:26.946000Z",        "user": {            "domain": {                "name": "hzp_vdc",                  "id": "95e40b25031f4151bd2643fa56bb3ad9"           },            "name": "hzp_admin",    //用户名            "id": "1ad280d8a0b5461e89738ae3d60a6185"   //用户Id       }   } } ​取响应头的X-Subject-Token值即为token。2. 查询虚拟机列表URLGET https://{ECS对外访问域名}/v1.0/servers?offset=1&limit=1000&expect_fields=addresses如果需要查询指定虚拟机,可以添加参数“server_id={vm_id}”,其中,vm_id为虚拟机id。limit为每次查询的数量,取值范围1-1000;offset为页码,最小值为1。注:分页参数必须填写,否则接口会返回空列表。涉及文档:《华为云Stack API接口参考.chm》-> API接口详情 -> 计算 -> ECS -> 生命周期管理 -> 查询云服务器列表请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx X-OpenStack-Nova-API-Version:1.22响应体示例{    "count": 1,    "servers": [       {            "addresses": {                "subnet-bea1": [                   {                        "version": 4,                        "addr": "192.168.1.55",                        "OS-EXT-IPS:port_id": "219049ea-2cb5-44b8-af54-2dd2bc595f94",                        "OS-EXT-IPS:type": "fixed",                        "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:53:30:37",                        "network_tags": []                   },                   {                        "version": 4,                        "addr": "160.105.16.251",                        "OS-EXT-IPS:port_id": "219049ea-2cb5-44b8-af54-2dd2bc595f94",                        "OS-EXT-IPS:type": "floating",                        "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:53:30:37",                        "network_tags": [                            "name=FCD_eip_external_net",                            "service_type=Internet",                            "group=group1"                       ]                   },                   {                        "version": 4,                        "addr": "10.65.193.19",                        "OS-EXT-IPS:port_id": "219049ea-2cb5-44b8-af54-2dd2bc595f94",                        "OS-EXT-IPS:type": "floating",                        "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:53:30:37",                        "network_tags": [                            "az=az0.bms",                            "az=az0.dc2",                            "group=group1",                            "az=az0.dc1",                            "name=external_relay_network"                       ]                   }               ]           },            "id": "88daf9e7-10a3-409d-b860-06f4c9fcc992",            "name": "ecs-9efc",            "alias_uuid": "",            "tenant_id": "c7c6a276578e411ab2ef2d999d9ef59e",            "description": null,            "OS-EXT-AZ:availability_zone": "az0.dc1",            "status": "ACTIVE",            "created": "2022-03-22T09:56:29Z",            "hostId": "e8cb843684926683761ac8de2dc62285913a338182fe4837405e9300",            "hypervisor_type": "QEMU",            "key_name": null,            "accessIPv4": "",            "accessIPv6": "",            "config_drive": "True",            "OS-DCF:diskConfig": "MANUAL",            "OS-EXT-SRV-ATTR:host": "CDABFF56-9D3C-6D9D-EA11-F21886367EAF",            "OS-EXT-SRV-ATTR:hypervisor_hostname": "CDABFF56-9D3C-6D9D-EA11-F21886367EAF",            "OS-EXT-SRV-ATTR:instance_name": "instance-000002b3",            "OS-EXT-STS:power_state": 1,            "OS-EXT-STS:task_state": null,            "OS-EXT-STS:vm_state": "active",            "OS-SRV-USG:launched_at": "2022-03-22T09:56:44.000000",            "OS-SRV-USG:terminated_at": null,            "updated": "2022-06-17T07:30:23Z",            "user_id": "1ad280d8a0b5461e89738ae3d60a6185",            "OS-EXT-SRV-ATTR:hostname": "ecs-9efc",            "OS-EXT-SRV-ATTR:reservation_id": "r-gsf6lgne",            "OS-EXT-SRV-ATTR:launch_index": 0,            "OS-EXT-SRV-ATTR:kernel_id": "",            "OS-EXT-SRV-ATTR:ramdisk_id": "",            "OS-EXT-SRV-ATTR:root_device_name": "/dev/vda",            "OS-EXT-SRV-ATTR:user_data": null,            "locked": false,            "image": "",            "watcher_host_status": "up",            "proxy": false,            "architecture": "aarch64",            "cpu_vendor": "Hisilicon",            "instance_snapshot_info": {                "_last_rollback_image_id": "b1d7a449-7662-4724-b4c7-4ce052e886e3",                "_last_rollback_image_name": "test1",                "_last_rollback_time": "2022-06-17T05:52:50.544975"           }       }   ] }其中,addresses字段内包含了虚拟机的全部IP信息,“OS-EXT-IPS:type”字段值为floating,且network_tags内不包含“service_type=Internet”的为内大网IP,包含“service_type=Internet”字段的为弹性IP。例如上述响应体示例中,首先找到OS-EXT-IPS:type=floating的ip,160.105.16.251、10.65.193.19,然后过滤可得network_tags内包含“service_type=Internet”的IP地址160.105.16.251为弹性IP,不包含“service_type=Internet”的IP地址10.65.193.19为内大网IP。注: ①如果响应体中不包含“network_tags”,请检查请求头中是否包含“X-OpenStack-Nova-API-Version:1.22”。②如果响应体的count字段不为0,但是服务器列表为空,请检查是否有填写分页参数。
  • [技术干货] Underlay和Overlay
    Overlay和Underlay是相对概念:转发设备可以感知到的就是underlay,被封装起来不被转发设备感知的就是overlay。比如传统的二三层网络,基于MAC/ARP/路由来进行转发,路由器可以感知到这些源目MAC,源目IP,这种网络就是Underlay,是我们使用最多的。Underlay网络以太网从最开始设计出来就是一个分布式网络,没有中心的控制节点,网路中的各个设备之间通过协议传递的方式学习网络的可达信息,由每台设备自己决定要如何转发,这直接导致了没有整体观念,不能从整个网络的角度对流量进行调控。由于要完成所有网络设备之间的互通,就必须使用通用的语言,这就是网络协议,RFC就是网络协议的法律,相当于国际法,各个设备供应商遵从国际法行事,就基本保证了整个网络世界的正常运行。Underlay就是当前数据中心网路基础转发架构的网络,只要数据中心网络上任意两点路由可达即可,指的是物理基础层。我们可以通过物理网络设备本身的技术改良、扩大设备数量、带宽规模等完善Underlay网络,其包含了一切现有的传统网络技术。Overlay网络Overlay在网络技术领域,是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其它网络业务分离。它是建立在已有网络上的虚拟网,用逻辑节点和逻辑链路构成了Overlay网络。Overlay网络具有独立的控制和转发平面,对于连接在Overlay边缘设备之外的终端系统来说,物理网络是透明的。通过部署Overlay网络,可以实现物理网络向云和虚拟化的深度延伸,使云资源池化能力可以摆脱物理网络的重重限制,是实现云网融合的关键。Overlay网络也是一个网络,不过是建立在Underlay网络之上的网络。Overlay网络的节点通过虚拟的或逻辑的链接进行通信,每一个虚拟的或逻辑的链接对应于Underlay网络的一条路径(Path),由多个前后衔接的链接组成。简单来说,Overlay网络是将已有的物理网络(Underlay网络)作为基础,在其上建立叠加的逻辑网络,实现网络资源的虚拟化。为什么需要Overlay网络作为云计算核心技术之一的“服务器虚拟化”已经被数据中心普遍应用。随着企业业务的发展,虚拟机数量的快速增长和虚拟机迁移已成为一个常态性业务。由此也给传统网络带来了以下一些问题:虚拟机规模受网络规格限制在传统二层网络环境下,数据报文是通过查询MAC地址表进行二层转发,而网络设备MAC地址表的容量限制了虚拟机的数量。网络隔离能力限制当前主流的网络隔离技术是VLAN,由于IEEE 802.1Q中定义的VLAN ID只有12比特,仅能表示4096个VLAN,无法满足大二层网络中标识大量租户或租户群的需求。虚拟机迁移范围受网络架构限制为了保证虚拟机迁移过程中业务不中断,则需要保证虚拟机的IP地址、MAC地址等参数保持不变,这就要求业务网络是一个二层网络,且要求网络本身具备多路径的冗余备份和可靠性。传统的STP、设备虚拟化等技术只适用于中小规模的网络。针对上述问题,为了满足云计算虚拟化的网络能力需求,逐步演化出了Overlay网络技术。针对虚拟机规模受网络规格限制虚拟机发出的数据包封装在IP数据包中,对网络只表现为封装后的网络参数。因此,极大降低了大二层网络对MAC地址规格的需求。针对网络隔离能力限制Overlay技术扩展了隔离标识的位数(24比特),极大扩展了隔离数量。针对虚拟机迁移范围受网络架构限制Overlay将以太报文封装在IP报文之上,通过路由在网络中传输。通过路由网络,虚拟机迁移不受网络架构限制。而且路由网络具备良好的扩展能力、故障自愈能力、负载均衡能力。智能云网智能云网社区是华为专为开发者打造的“学习、开发、验证、交流”一站式支持与服务平台,该平台涵盖多领域知识。目前承载了云园区网络,云广域网络,数通网络开放可编程,超融合数据中心网络,数通网络设备开放社区共五个场景。为了响应广大开发者需求,还提供了开发者交流、API 体验中心、多媒体课件、SDK工具包、开发者工具以及远程实验室共六大工具,让开发者轻松开发。欢迎各位前来体验。>>戳我了解更多<<
  • [技术干货] OpenStack基础知识(一)
    OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。OpenStack即指这个云操作系统,也指开发这个操作系统的开源项目。OpenStackOpenStack的Open有两层意思Open Source:同其他开源软件一样,其源代码是公开的;Open Mind:思想是开放的。OpenStack以开源社区的方式向所有人开放。任何人都可以向社区贡献自己的想法和代码。OpenStack会每半年组织一场峰会(Open Summit),邀请开发者、用户、系统管理员等相关人员分享开发、使用经验。OpenStack会吸收优秀的功能和模块加入到官方发布的版本中。同安卓(Android)一样,这是一个开放的生态系统。虚拟化虚拟化:虚拟化使得在一台物理服务器上可跑多台虚拟机,虚拟机共享物理机的CPU、内存、IO硬件资源,但逻辑上虚拟机之间是相互隔离的。物理机:宿主机(Host);虚拟机:客户机(Guest)。Host通过Hypervisor将自己的硬件资源虚拟化,并提供给Guest使用。I型虚拟化:Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行(Xen、ESXi)。II型虚拟机:Hypervisor 作为OS上的一个程序模块运行,并对管理虚拟机进行管理(KVM、VirtualBox、VMWare)。KVMKVM(Kernel-Based Virtual Machine):开源系统虚拟化模块。KVM是集成在Linux内核的Hypervisor,QEMU-KVM是完整的模拟器,构建基于KVM上,提供完整的网络和I/O支持。内核模块 kvm.ko,用于管理虚拟 CPU 和内存,I/O的虚拟化,就交给Linux内核和qemu来实现。libvirt是 KVM的管理工具,一般不会直接控制qemu-kvm,会用libvirt的库去间接控制qemu-kvm。一个 KVM 虚机在宿主机中其实是一个 qemu-kvm 进程,虚机中的每一个虚拟 vCPU 则对应 qemu-kvm 进程中的一个线程。KVM 的存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的,文件目录是最常用的 Storage Pool 类型,该目录下面的一个文件就是一个Volume。宿主机上 VG (卷组)中的 LV(逻辑卷组) 也可以作为虚拟磁盘分配给虚拟机使用。KVM网络虚拟化:Linux Bridge 是 Linux 上用来做 TCP/IP 二层协议交换的设备,可理解为二层交换机或者 Hub。智能云网智能云网社区是华为专为开发者打造的“学习、开发、验证、交流”一站式支持与服务平台,该平台涵盖多领域知识。目前承载了云园区网络,云广域网络,数通网络开放可编程,超融合数据中心网络,数通网络设备开放社区共五个场景。为了响应广大开发者需求,还提供了开发者交流、API 体验中心、多媒体课件、SDK工具包、开发者工具以及远程实验室共六大工具,让开发者轻松开发。欢迎各位前来体验。>>戳我了解更多<<
  • [技术干货] clickhouse--性能优化[转载]
    一、建表优化1.1 数据类型1.1.1 时间字段时间字段建议存储为DateTime类型,不需要经过函数转换处理,执行效率高,可读性好。1.1.2 空值存储类型Nullable类型几乎总是会拖累性能,因为存储Nullable列时需要创建一个额外的文件来存储NULL的标记,并且Nullable列无法被索引。参考:nullable列,clickhouse中Nullable与非空字段的建表与类型互转1.2 分区和索引分区粒度一般按天分区,也可以指定Tuple(),也就是不分区。常规来说,1亿条数据分30个分区比较合适。必须指定索引列,clickhouse中的索引列即排序列,通过order by指定。通常是查询频率大的在前,高级列在前原则。基数大的不适合做索引列(即重复数据特别少的列)。1.3 表参数index_granularity控制索引粒度,默认8192。不保存全量历史数据的可以用TTL。1.4 写入和删除优化尽量不要执行单条或小批量删除和插入操作,因为会产生小分区文件,给后台Merge任务带来巨大压力。不要一次写入太多分区,或数据写入太快,数据写入太快会导致Merge速度跟不上报错。一般建议每秒发起2-3次写入操作,每次操作写入2w-5w条数据。1.5 举例参考:ClickHouse元数据以下例子主要测试两部分内容:一是删除数据时,查看系统表分区情况会发现删除的数据并没有马上删掉;二是使用TTL的效果。CREATE TABLE test.t_null(    id String,    name Nullable(String),    create_time DateTime default now()) ENGINE = MergeTree PARTITION BY id ORDER BY id TTL create_time + INTERVAL 10 minute ;           --默认是delete-- 注意8小时时差insert into test.t_null values('1', 'alice', '2021-12-25 09:41:00'),('1', NULL, '2021-12-25 09:41:00'),('2', 'bob', '2021-12-02 06:41:00'),('3', 'carolin', '2021-12-02 06:41:00');--查询结果select * from test.t_null;--删除某个分区alter table test.t_null delete where id = '3';--系统存储情况,注意观察 name列,删除前后生成的小分区select     partition,     name,    part_type,    active,    marks,    rows,    --bytes_on_disk,    --data_compressed_bytes,    --data_uncompressed_bytes,    remove_time,    --partition_id,    level,    database,    table,    disk_name,    --path,    column,    type,    column_positionfrom system.parts_columnswhere database='test' and table='t_null';--合并数据optimize table test.t_null final;123456789101112131415161718192021222324252627282930313233343536373839404142434445464748491.6 常见配置1.6.1CPU资源config.xml配置项users.xml配置项background_pool_size:后台线程池大小,merge线程就是在该线程池执行,默认16,允许的前提下建议改成cpu个数的2倍(线程数)。background_schedule_pool_size:执行后台任务的线程数,默认128,建议改成cpu个数的2倍(线程数)。background_distributed_schedule_pool_size:设置为分布式发送执行后台任务的线程数,默认16,建议改成cpu个数的2倍(线程数)。max_concurrent_queries:最大并发处理的请求数(包含select, insert等),默认值100,推荐150-300。max_threads:单个查询所能使用的cpu个数,默认是cpu核数。1.6.2 内存资源max_memory_usage:在users.xml中,表示单次Query占用内存最大值,可以设置稍大。比如128G的内存设置为100G。max_bytes_before_external_group_by:一般按照max_memory_usage的一般设置,当group使用内存超过阈值后会刷到磁盘运行。建议50G。max_bytes_before_external_sort:超过时进行溢写磁盘。max_table_size_to_drop:在config.xml中,默认是50GB,建议修改为0,不限制。1.6.3 存储不支持设置多数级目录,为了提升数据io性能,看挂载虚拟券组。二、语法优化规则基于RBO(Rule Based Optimization),参考:RBO优化器下面通过explain语句查看执行计划,来看看不同的查询语句执行效果,其中部分是clickhouse自动帮我们进行优化的,但另一部分是在查看优化的执行语句之后,我们需要手动对查询语句进行修改。2.1 count优化-- 只要加了具体字段就会导致扫描全表explain plan select count(UserID) from hits_v1;-- count(*), count(1)都会优化直接获取count文件explain plan select count() from hits_v1;123452.2 消除子查询重复字段explain syntax select UserID, UserID, VisitID from visits_v1;explain syntax select UserID, UserID as UserID2, VisitID from visits_v1;122.3 谓词下推2.3.1 having当group by有having子句,但是没有with cube, with rollup 或者 with totals修饰的时候,having过滤会下推到where提前过滤。explain syntax select UserID from hits_v1 group by UserID having UserID = '8585742290196126178';--优化后SELECT UserID FROM hits_v1 WHERE UserID = '8585742290196126178' GROUP BY UserID;12342.3.2 子查询优化后过滤条件被移至子查询中。explain syntax select * from (select UserID from visits_v1) where UserID = '8585742290196126178';--优化后SELECT UserIDFROM    (SELECT UserID FROM visits_v1 WHERE UserID = '8585742290196126178') WHERE UserID = '8585742290196126178'12345672.4 聚合计算外推explain syntax select sum(UserID * 2) from visits_v1--优化结果select sum(UserID) * 2 from visits_v11234explain syntax select sum(exp_cnt * 2) from test.test1;--优化结果SELECT sum(exp_cnt) * 2 FROM test.test1;1234需要注意的是clickhouse并不会自动帮我们优化,可以执行两种查询语句查看执行时间:--明显第二种方式结果更快select sum(exp_cnt * 2) from test.test1;SELECT sum(exp_cnt) * 2 FROM test.test1;1232.5 聚合函数消除explain syntaxselect    sum(UserID * 2),    max(VisitID),    max(UserID)from visits_v1group by UserID--优化后的语句SELECT    sum(UserID) * 2,    max(VisitID),        UserID  --去掉无意义的函数FROM visits_v1    GROUP BY UserID123456789101112131415162.6 删除重复2.6.1 删除重复的order by keyexplain syntaxselect UserID, VisitIDfrom visits_v1order by    UserID ASC,    UserID DESC,    VisitID ASC,    VisitID ASC--优化后语句explain syntaxselect UserID, VisitIDfrom visits_v1order by    UserID ASC,    VisitID ASC12345678910111213141516172.6.2 删除重复的limit by key参考:LIMIT BYexplain syntaxselect *from visits_v1order by CounterIDlimit 2 by CounterID, CounterID  --每个单独的CounterID保留两条数据LIMIT 10--优化后的语句select *from visits_v1order by CounterIDlimit 2 by CounterIDLIMIT 1012345678910111213142.6.3 删除重复的USING Keyexplain syntaxselect     a.UserID,    b.VisitID,    a.URL,    b.UserIDfrom hits_v1 AS aleft join visits_v1 as b using (UserID, UserID) --on a.UserID=b.UserID--返回优化后的语句select     UserID,    VisitID,    URL,    b.UserIDfrom hits_v1 AS aleft join visits_v1 as b using (UserID)12345678910111213141516172.7 标量替换如果子查询只返回一行数据,在被引用的时候用标量替换。在本例中,指的是``with (select sum(bytes) from system.parts where active) as total_disk_usage`会被优化为用一个数值代替。explain syntaxwith (select sum(bytes) from system.parts where active) as total_disk_usageselect     table, (sum(bytes) / total_disk_usage) * 100 as table_disk_usage, total_disk_usagefrom system.partsgroup by tableorder by table_disk_usage desclimit 10;--优化结果,WITH语句内容似乎是与查询语句绑定的,不能单独执行,不然结果是不对的WITH identity(CAST(0, 'UInt64')) AS total_disk_usageSELECT     table,    (sum(bytes) / total_disk_usage) * 100 AS table_disk_usage,    total_disk_usageFROM system.partsGROUP BY tableORDER BY table_disk_usage DESCLIMIT 10;123456789101112131415161718192.8 三元运算优化开启参数 optimize_if_chain_to_multiif,则三元运算符会被替换成multiIf函数explain syntaxselect number = 1 ? 'hello' : (number = 2 ? 'world' : 'atguigu')from numbers(10)settings optimize_if_chain_to_multiif = 1;--优化结果SELECT multiIf(number = 1, 'hello', number = 2, 'world', 'atguigu')FROM numbers(10)SETTINGS optimize_if_chain_to_multiif = 1;123456789三、查询优化3.1 单表查询3.1.1 prewhere代替wherewhere是先过滤出满足条件的行,然后再选择需要的列。prewhere只支持MergeTreee族系列引擎的表,首先会读取指定的列数据,来判断数据过滤,等待数据过滤之后再读取select声明的列字段来补全其余属性,这样可以避免整行扫描。当查询列明显多于筛选列时,prewhere可十倍提升查询性能,自动优化执行过滤阶段的数据读取方式,降低io操作。默认情况下,where条件会自动优化成prewhere。关闭自动优化:set optimize_move_to_prewhere=0;explain syntaxselect     WatchID, EventTime, UserID, URLDomain, RefererDomainfrom datasets.hits_v1where UserID = '8585742290196126178'--优化结果SELECT WatchID, EventTime, UserID, URLDomain, RefererDomainFROM datasets.hits_v1PREWHERE UserID = '85857422901961261712345678910不能自动优化的情况:使用常量表达式使用默认值为alias类型的字段包含了arrayJOIN, globalIn, globalNotIn, indexHint的查询使用了主键字段select 查询的列字段和where的谓词相同explain syntaxselect UserIDfrom datasets.hits_v1where UserID = '8585742290196126178';--结果没有优化SELECT UserIDFROM datasets.hits_v1WHERE UserID = '8585742290196126178';1234567893.1.2 数据采样采样可以极大提升数据分析的性能select Title, count(*) as PageViewsfrom datasets.hits_v1sample 0.1where CounterID = 57group by Titleorder by PageViews desc limit 10001234563.1.3 列裁剪与分区裁剪数据量太大时应避免使用select * 操作,尽量只取用到的列,必要时可对分区进行过滤-- 反例select * from datasets.hits_v1;-- 正例select WatchID, JavaEnable, Title, EventTime, EventDate, CounterID, ClientIP, ClientIP6, RegionID, UserIDfrom datasets.hits_v1;-- 分区裁剪select WatchID, JavaEnable, Title, EventTime, EventDate, CounterID, ClientIP, ClientIP6, RegionID, UserIDfrom datasets.hits_v1where EventDate = '2014-03-23';12345678910113.1.4 orderby结合where, limit千万以上数据集进行order by查询时需要搭配where条件和limit语句一起使用。-- 正例select UserID, Agefrom hits_v1where CounterID = 57order by Age desc limit 1000;-- 反例select UserID, Agefrom hits_v1order by Age desc;123456789103.1.5 避免构建虚拟列如非必须,不要在结果集上构建虚拟列,虚拟列非常消耗资源浪费性能,可以考虑前端进行处理,或者在表中构造实际字段进行额外存储。-- 反例select Income, Age, Income/Age as IncRate from datasets.hits_v1;-- 正例select Income, Age from datasets.hits_v1;12343.1.6 uniqCombined替代distinct性能可提升10倍以上,uniqCombined底层采用类似HyperLogLog算法实现,能接受数据误差,可直接使用这种去重方式提升查询性能。-- 反例select count(distinct UserID) from datasets.hits_v1;-- SELECT uniqExact(UserID) FROM datasets.hits_v1-- 正例select uniqCombined(UserID) from datasets.hits_v1;1234563.1.7 其他注意事项1)查询熔断为了避免因个别慢查询引起的服务雪崩的问题,除了可以为单个查询设置超时以外,还可以配置周期熔断,在一个查询周期内,如果用户频繁进行慢查询,超出规定阈值后将无法继续进行查询操作。2)关闭虚拟内存物理内存和虚拟内存的数据交换会导致查询变慢,资源允许的情况下,关闭虚拟内存。3)配置join_use_nulls为每一个账户添加join_use_nulls配置,左表中的一条记录在右表中不存在,游标的相应字段会返回该字段相应数据类型的默认值,而不是Null值。4)批量写入时先排序批量写入数据时,必须控制每个批次的数据中涉及到的分区的数量,在写入之前最好对需要导入的数据进行排序。无序的数据或者涉及的分区太多,会导致clickhouse无法及时对新导入的数据进行合并,从而影响查询性能。5)关注CPUcpu一般在50%左右会出现查询波动,达到70%会出现大范围的查询超时,cpu是最关键的指标,要非常关注。3.2 多表关联3.2.1 准备表和数据# 创建小表create table visits_v2engine = CollapsingMergeTree(Sign)partition by toYYYYMM(StartDte)order by (CounterID, StartDate, intHash32(UserID), VisitID)sample by intHash32(UserID)settings index_granularity = 8192as select * from visits_v1 limit 10000;# 创建join结果表,避免控制台疯狂打印数据# 巧用条件语句复制表结构而不导入数据create table hits_v2engine = MergeTree()partition by toYYYYMM(EventDate)order by (CounterID, StartDate, intHash32(UserID))sample by intHash32(UserID)settings index_granularity = 8192as select * from hits_v1 where 1=0;1234567891011121314151617183.2.2 join优化3.2.2.1 常规join方式表A和表B进行join时,先将B加载到内存中,然后A每一条数据都去内存中查询表B进行匹配。3.2.2.2 大小表join多表join时要满足小表在右的原则,右表关联时被加载到内存中与左表进行比较。clickhouse中无论时left join, right join还是inner join,永远都是拿着右表中的每一条记录到左表中查找该记录是否存在,所以右表必须是小表。小表在右insert into table hits_v2select a.* from hits_v1 a left join visits_v2 b on a.CounterID = b.CounterID;12大表在右insert into table hits_v2select a.* from visits_v2 b left join hits_v1 a on a.CounterID = b.CounterID;123.2.2.3 用in代替join多表联查时,查询的数据仅从其中一张表出时,可以考虑用in操作而不是joininsert into hits_v2select a.* from hits_v1 a where a.CounterID in (select CounterID from visits_v1);1233.2.2.4 谓词下推谓词下推的基本思想即:将过滤表达式尽可能移动至靠近数据源的位置,以使真正执行时能直接跳过无关的数据。join查询时不会主动发起谓词下推的操作,需要每个子查询提前完成过滤操作,需要注意的时,是否执行谓词下推,对性能影响差别很大(新版本不存在该问题,但需要注意谓词的位置不同依然有性能的差异)explain syntaxselect a.* from hits_v1 a left join visits_v2 b on a.CounterID = b.CounterIDhaving a.EventDate = '2014-03-17';# 最后一行变成了PREWHERE EventDate = '2014-03-17'explain syntaxselect a.* from hits_v1 a left join visits_v2 b on a.CounterID = b.CounterIDhaving b.StartDate = '2014-03-17';# 最后一行变成了WHERE StartDate = '2014-03-17'123456789尽量在join前进行where过滤,提升查询效率explain syntaxselect a.* from (    select * from hits_v1     where EventDate = '2014-03-17')a left join visits_v1 b on a.CounterID = b.CounterID;# PREWHERE EventDate = '2014-03-17'1234567on关联条件中不可有过滤条件# 报错,关联条件不可用来做过滤explain syntaxselect a.* from hits_v1 a left join visits_v2 b on a.CounterID = b.CounterIDand a.EventDate = '2014-03-17';12343.2.2.5 分布式表使用global两张分布式表上的in和join之前必须加上global关键字,右表只会在接收查询请求的那个节点查询一次,并将其分发到其他节点上。如果不加global关键字的话,每个节点都会单独发起一次对右表的查询,而右表又是分布式表,就导致右表一共会被查询N的2次方(N是分布式表的分片数量),这就是查询放大,会带来很大开销。可能会减小为N次。3.2.2.6 使用字典表将一些需要关联分析的业务创建成字典表进行join操作,前提字典表不宜太大,因为字典表会常驻内存。3.2.2.7 提前过滤通过增加逻辑过滤可以减少数据扫描,达到提高执行速度及降低内存消耗的目的。3.3 总结尽量不要用join能过滤先过滤,尤其是右表右边放小表特殊场景可以考虑使用字典表可以替换的话,尽量不要用join,比如用In实现参考:https://play.clickhouse.com/http://nicethemes.cn/news/txtlist_i169603v.html————————————————版权声明:本文为CSDN博主「囊萤映雪的萤」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/liuyingying0418/article/details/121618255
  • [行业资讯] 罗永浩盯上的AR行业,是机遇还是风险?
    “真还传”即将结局,老罗近日宣布,要退出社交平台进行再次创业。这一次创业,老罗选择的方向是AR方向。这绝非是一时兴起,在前段时间的采访中老罗就提到,只有两个方向是他真正感兴趣并愿意投入后半辈子去做的,一个是电动汽车,另一个是下一代计算平台。而AR,便是科技界被认为最有可能成为下一代计算平台的产品。那么,被“行业冥灯”罗永浩看上的这条赛道,究竟如何?本篇文章,把AR和VR行业拆分开来,单独分析AR行业,从概念、应用到市场,简单剖析一下AR产业,旨在让大家对AR行业有一定的了解,而不是将AR/VR产品放在一起混淆视听。01、AR是什么增强现实(Augmented Reality)指通过计算设备对现实环境的实时感知和计算,将文字、图片、视频等3D内容和信息叠加在现实世界中,具有虚拟现实融合、实时交互、三维注册三大特征。目前,其硬件产品代表作有Google Glass、而游戏代表作则是大名鼎鼎的《Pokemon Go》。AR技术主要由硬件部分和软件部分构成。硬件部分主要有处理器、显示器、输入设备和传感器。显示器便是我们常见的显示设备、手持设备、眼镜或者头戴显示器;输入设备则可以是智能手机的摄像头或连接到互联网的网络摄像头;传感器为移动设备的陀螺仪或加速度传感器、红外传感器等,为设备交互提供响应。要认识AR,首先要知道它和VR的区别。VR技术(virtual reality虚拟现实)是指利用计算机技术模拟产生一个为用户提供视觉、听觉、触觉等感官模拟的虚拟环境,用户借助设备与虚拟世界进行交互。其重点是创造一个完全虚拟的环境,其软件建模量、数据传输量相比于AR要多出许多,所以导致AR/VR技术即使已经出现多年,VR的设备还是难产的现象,其背后原因就是因为其场景设计的复杂性与高带宽的需求限制了VR设备的发展。AR技术(Augmented Reality)则更加关注虚拟和现实的融合,期望通过部分虚拟三维物体与现实融合,对真实世界进行数字化景象增强。从电脑到智能手机以来,人们从未停止探寻更强大、更快、更智能的工具,而AR则正是这一探索的终极体现。它就像是一个集合所有人类对工具需求特性的技术,能够将现实世界和虚拟物品进行一定的融合,同时创造了高于鼠标、屏幕的新型交互方式。02、AR的技术“我们相信 AR 就是下一代计算平台,这在科技界很大程度上也是共识了,并不是我们的创见。”罗永浩说。为什么老罗会如此看好AR?这就要从AR的三大特征和一些技术说起了。1、虚拟现实融合不同于VR,AR技术是将虚拟物品显示在现实世界里的。正如其全名“增强现实”一样,目的是为了解决一些现实生活中存在的问题。其实,在B端,AR设备已经出现了不少应用,比如在工厂中利用AR眼镜对新员工进行培训,将老员工的经验化作数据,在新员工进行生产线工作时,为其错误的行为进行及时的修正。当然,目前AR的应用还存在着一些缺陷,同时成本高昂,使其难以大规模推广。但是,通过虚拟与现实的融合,现在的AR设备已经能够帮助企业或政府解决一些传统工具无法解决的问题了。2、实时交互交互指产品和人之间的交流,通过某种特定方式达成一定的目的。在70多年前,第一代晶体管计算机是采用开关来工作的,人们需要不停地拨动开关以进行计算,后来在斯坦福研究所,道格拉斯·恩格尔巴特把一个球装进了盒子里,于是有了鼠标,再配合上键盘,使之便于日常使用,很快便走进了千家万户。诺基亚时代大哥大和拇指机的按键交互,到后来苹果的触屏交互,其核心就在于交互形式的改变,发展至今也变成了手机的标配。对于计算平台来说,交互方式的创新往往意味着变革。再来看看AR的交互方式,其亮点便是实时多点感知交互。目前AR的交互手段主要为眼动交互、手势交互和语音交互。眼动交互是通过传感器捕捉视线,从而用眼睛控制屏幕内容;手势交互则是大部分关于未来的宣传片中出现的那样,出现一个全息投影的屏幕,人们通过几个简单的手势就能够完成指令的下达,属于是键盘鼠标的上位替代品;语音交互是这三种新交互模式中最成熟的一种,通过语音补充前两种交互的缺点,从而实现实时的人机互动。3、三维注册三维注册可以说是AR中最为核心的技术,是对现实场景中的图像或物体进行跟踪与定位。简单来说,三维注册就是要让虚拟场景或物体准确定位到真实环境中,并根据用户移动和现实场景的变化做出相对应的改变。听上去容易,但实际落地过程中需要极强的算力与算法的支持,这也是AR产品目前遇到的主要瓶颈。现在市面上主要的方式有基于计算机视觉,利用标志物实现的三维注册,以及基于硬件传感器的跟踪注册技术,但仅在能部分领域能有所应用,无法推向消费端。目前,最有效的实现方案是SLAM(即时定位与地图构建,Simultaneously Localization And Mapping),通过传感器所处的环境来定位传感器并同时绘制环境结构。这个技术对于机器人和无人机领域来说并不陌生,现在的许多机器人的快速定位也是采用SLAM技术实现的。结合这些特点,和我们现在使用的计算平台-电脑做对比,AR可以将虚拟世界和现实世界进行三维结合,同时,通过交互模式的升级,将键鼠替换成了手势、动作和语音,创新了交互模式,使平台的应用更加便捷。所以老罗认为,AR很有前景发展成为下一代计算平台。03、目前AR可能的应用和VR不同,AR其实早已在许多领域内有所应用。目前其主要应用集中在B端场景,主要在文旅娱乐、教育培训、营销零售、工业制造这四个方面。文旅娱乐是AR最开始走进人们视野时选择的行业。疫情之前,游客为什么喜欢前往景区?是因为在景区可以观奇景、听奇事、聊奇谈。为了满足好奇心,便走向世界各地去寻找不同的生活。而在20年疫情爆发后,疫情限制了人们的出行,云旅游概念也横空出世。华为P40系列联合敦煌莫高窟,将AR技术应用于文旅,实现了人们云旅游的想法。要知道,莫高窟有735个洞窟,而旺季单程对游客仅开放8个左右,并且参观的洞窟都是随机的,慕名而来的游客只能把这段旅行交给运气,经常难以看到自己向往的洞窟。而通过AR,敦煌莫高窟进入了虚拟与现实之间的空隙,用户不仅能够游览上百个洞窟,而且可以和敦煌壁画中出来的虚拟形象进行互动,获得全新的游览体验。教育培训也是AR应用的一个核心场景。从中小学的教学,到职业技能培训以及专业学科学习,使用AR都能为教学过程中带来极大的便利。比如下图的人体解剖学,曾经需要摆放大量的人体模型在学校实验室,制作这些模型的成本较高,同时还容易损坏。通过AR记录下来人体结构信息,不仅可以长久保存使用,还能清晰简洁的传递更多信息。营销零售行业对于AR的使用会更多的涉及与物联网各种技术的结合,已实现更加智能的管理以及为客户提供更加完善的体验。我们都知道现在大型的零售商将RFID标签使用在商品上,或使用溯源码等方式透明化产品的管理,但其实,这是一种碎片化的体验。而完善体验的方法可能就在AR产品中。设想一下,通过AR的导购,用户从进入商场就可以确认自己买的物品在什么位置,提高购物的效率;同时,在AR场景中还可以设置各种各样的独属于用户的彩蛋或惊喜,为顾客的购物体验增加刺激点,利用彩蛋或隐藏优惠券来刺激购物者进一步消费。最后,结合各种物联网技术,产品从被选购到被购买,甚至到被使用后,所有的体验都可以被一同进行设计与优化,为营销零售带来极大的体验提升。工业制造则可能会是未来AR应用最多的场景,仓库物料周转、设备维修与安全检查、机械操作培训、流水线模拟、数字建模等等领域,AR都有着无可替代的优势。AR能够更好的将生产资料从老工人传递给新工人,同时其在建模与安检中的应用也能够实现对企业生产过程中的降本增效。当然,大部分AR参与者都不想只是停留于B端,因为最后也就能卖个几十万台机器,所创造的利润和高额的研发成本和制造成本完全无法相比。所以,老罗和大部分AR行业玩家的最终目标都是消费级AR设备,希望这个设备能像电脑或手机一样走进千家万户,从而卖出数以亿记的产品。04、AR与物联网物联网和AR的融合是合乎逻辑的。物联网解决方案的好处之一是,它使企业能够高效收集运行中的数据,并对各种资产的位置、状态和条件具有实时可见性。但是,收集的数据,以往都是将数据利用AI进行分析,并且训练出可以执行的一些条件,故将AI和IoT两个行业放在一起。如果未来AR能够大范围的在各种场景中应用,得到的数据不仅可以训练机器,更可以将信息可视化,辅助员工的决策或行动。换句话说,物联网的数字孪生就有可能实现。数字孪生,就是在信息化平台内模拟物理实体、流程或者系统,类似实体系统在信息化平台中的双胞胎。通过集成物理反馈数据,并辅以人工智能、机器学习和软件分析,物联网获得的数据得以和软件结合。而数据输出的窗口还需要一个硬件,这必然会是下一代计算平台,也就是AR的主要任务。05、AR的市场无论国内外,许多企业都想在AR/VR/元宇宙中分一杯羹,或者直接作为领头羊带领这个行业前进。国内也如雨后春笋般,有许多企业在AR领域已经有所成就。容易发现,在AR场景有能拿出来的产品或方案的企业大多是一些小公司,而缺少大公司的身影。在这里进行一些猜想:第一,可能大公司由于其发展模式,很难拿出全部精力去做其中一个细分方向,而是将市场上流行的概念全部参与,共同推进,以期把风险降至最低;而小公司能够专注于一个细分方向,解决具体的某个问题并提供方案,所以在小公司中先出现了AR公司。第二种可能就是,大公司看不上B端AR的利润,在倾尽全力研发消费级AR,希望借助其丰厚的资源成为更大市场的领头羊。正如国外的苹果、谷歌、Meta等等公司,都在从硬件、软件上下手。然而,除了谷歌拿出了一个半成品的AR眼镜外,其他公司大多时候只是在搞噱头,以至于人们总认为AR/VR只是泡沫。关于AR的市场,未来几年AR产品可能会有指数级增长。根据 YOLE 预测,全球AR设备出货量将从2021年的103万台提升至2026年的4123万台,CAGR 109%,市场规模有望超过200亿美元。06、总结虚拟现实这个概念,从16年VR设备的难产,到21年资本市场对于元宇宙的炒作,使人们都对这项技术产生了怀疑,开始秉持技术无用论。但是,纵观历史,计算机在刚被发明出来时仅仅被用作计算;智能手机出现时,还有坚持生产按键机的诺基亚。如今这些产品都成为了每家必备的生活用品。没有任何一项技术是无用的,只是人们还没有找到使用它的方法。未来如何,没有人能准确地预知,但现在,最起码不能对新兴事物产生非常大的排斥情绪。毕竟,除了改变,没有什么是永恒不变的。
  • [计算] 裸金属的优势,然后怎么给高性能计算需求客户推荐上云
    裸金属:为用户提供专属的物理服务器,提供卓越的计算性能,满足核心应用场景对高性能及稳定性的需求,结合了传统托管服务器带来的稳定性能与云中资源高度弹性的优势。安全可靠裸金属服务器是用户专属的计算资源,支持VPC、安全组隔离;支持主机安全相关组件集成;基于擎天架构的裸金属服务器支持云磁盘作为系统盘和数据盘,支持硬盘备份恢复能力;支持对接专属存储,满足企业数据安全和监管的业务安全和可靠性诉求。性能卓越裸金属服务器继承物理服务器特征,无虚拟化开销和性能损失,100%释放算力资源。结合华为自研擎天软硬协同架构,支持高带宽、低时延云存储、云网络访问性能;满足企业数据库、大数据、容器、HPC、AI等关键业务部署密度和性能诉求。敏捷的部署效率裸金属服务器基于擎天加速硬件支持云磁盘作为系统盘快速发放;分钟级资源发放,基于统一console控制台、开放API和SDK,支持自助式资源生命周期管理和运维。4.云服务和解决方案快速集成裸金属服务器基于统一的VPC模型,支持公有云云服务的快速集成;帮助企业客户实现数据库、大数据、容器、HPC、AI等关键业务云化解决方案集成和加速业务云化上线效率。推荐高性能客户上云:选配ECS高配性能版-若客户的核心业务对于虚拟化环境运行无特殊要求,仅仅是性能要求较高,这是一个可用的选择;如果客户特殊异构计算的性能需求,可以推进GPU、AI、HPC、FGPA等异构计算服务若客户高性能业务不可兼容虚拟化环境,则可推荐BMS裸金属服务;
  • [计算] 裸金属的优势,然后怎么给高性能计算需求客户推荐上云
    裸金属:为用户提供专属的物理服务器,提供卓越的计算性能,满足核心应用场景对高性能及稳定性的需求,结合了传统托管服务器带来的稳定性能与云中资源高度弹性的优势。安全可靠裸金属服务器是用户专属的计算资源,支持VPC、安全组隔离;支持主机安全相关组件集成;基于擎天架构的裸金属服务器支持云磁盘作为系统盘和数据盘,支持硬盘备份恢复能力;支持对接专属存储,满足企业数据安全和监管的业务安全和可靠性诉求。性能卓越裸金属服务器继承物理服务器特征,无虚拟化开销和性能损失,100%释放算力资源。结合华为自研擎天软硬协同架构,支持高带宽、低时延云存储、云网络访问性能;满足企业数据库、大数据、容器、HPC、AI等关键业务部署密度和性能诉求。敏捷的部署效率裸金属服务器基于擎天加速硬件支持云磁盘作为系统盘快速发放;分钟级资源发放,基于统一console控制台、开放API和SDK,支持自助式资源生命周期管理和运维。4.云服务和解决方案快速集成裸金属服务器基于统一的VPC模型,支持公有云云服务的快速集成;帮助企业客户实现数据库、大数据、容器、HPC、AI等关键业务云化解决方案集成和加速业务云化上线效率。推荐高性能客户上云:选配ECS高配性能版-若客户的核心业务对于虚拟化环境运行无特殊要求,仅仅是性能要求较高,这是一个可用的选择;如果客户特殊异构计算的性能需求,可以推进GPU、AI、HPC、FGPA等异构计算服务若客户高性能业务不可兼容虚拟化环境,则可推荐BMS裸金属服务;
  • [应用服务] 容器vs虚拟化
    容器与虚拟机本质上都属于虚拟化技术,所不同的是两者所在层级不同,容器在操作系统之上,与虚拟机相比少了操作系统,不同容器之间能共享操作系统,因此更轻量,启动更快,效率更好。也正因为如此,与虚拟机相比容器的隔离性要差,安全性不如虚拟机。另一方面,虚拟机应用得更普及,相关工具也更为成熟和完善。区别:1、容器主机必须有OS环境2、容器没有虚拟化软件3、容器应用镜像来自公共、私有、社区HUB4、容器引擎直接安装镜像---运行实例5、容器无需安装OS、无需做任何配置容器和虚拟机的优势对比1、容器占用空间是MB级别,虚拟机是GB级别2、容器的运行速度是秒级,虚拟机是分钟级3、容器的安全性不如计算虚拟化4、容器创建数量无上限,虚拟机受限于hypervisior容器具有打包、分发、运行标准化,更高效地利用系统资源,更快速的启动时间,一致的运行环境,支撑持续集成持续部署,更轻松的多云迁移等优势,容器将依赖环境一起打包,因而屏蔽了开发、测试和运行环境的差异,再加上秒启、可多开的特性,使得微服务和DevOps均得以实现。所以可以说,容器技术是云原生的最佳载体,成为云原生的基石。cicd devops还有微服务关系cicd:持续开发、交付、部署、扩容/快速反馈,响应业务需求DevOPs:开发、测试、交付、运维一体,微服务的最佳组织阵型微服务:独立开发、发布、交付、部署容器及其编排:敏捷的基础设施、按需急用、微服务最佳载体微服务功能微服务 :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 就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠容器化:容器是通过一种虚拟化技术来隔离运行在主机上不同进程,从而达到进程之间、进程和宿主操作系统相互隔离、互不影响的技术。这种相互孤立进程就叫容器,它有自己的一套文件系统资源和从属进程。
  • [综合] ECS高可靠与高性能
    ECS高可用:(1)云资源管理与主要调度策略:Cell解耦的服务组件池,解决发规模的扩展和性能瓶颈;AvaliabilityZone独立的计算资源池,如独立的供电机房和机架;Aggregate不同物理配置的计算节点资源池,如通用计算、存储密集等。调度策略:根据云服务器规格类型调度到对应的资源池,根据云服务器规格配置调度到对应的宿主机Host,根据反亲和(Anti-Affine)策略,VM分散在不同的宿主机上。(2)ECS 的HA 保障:支持主机、虚拟平台、虚拟机内部多种故障场景的检测和虚拟机恢复;支持集中控制HA和集群自治HA,设置HA心跳消息的网络平面,降低网络压力,多种故障判断机制,避免漏判、误判故障,支持共享存储与本地存储虚拟机HA。(3)NUMA亲和性调度,支持HOST NUMA:Hypervisor层将VM的NUMA架构映射到主机的物理Node上,确保物理Node资源均衡。跨Node资源均衡调度,物理Node资源不均衡时,Host NUMA临时将Vcpu 调度到其他Node运行。(4)高速虚拟网络,支持IB使用RDMA技术提供低时延高带宽网络。IB协议栈与TCP/IP完全不同,依赖于IB设备,节点上compute-agent下发虚拟机配置,compute-network 下发网络配置。
  • [经验交流] 网络类型
    一、云专线:云专线(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。
  • [综合] 容器和虚拟机的区别
    1、容器主机必须有OS环境2、容器没有虚拟化软件3、容器应用镜像来自公共、私有、社区HUB4、容器引擎直接安装镜像---运行实例5、容器无需安装OS、无需做任何配置容器和虚拟机的优势对比1、容器占用空间是MB级别,虚拟机是GB级别2、容器的运行速度是秒级,虚拟机是分钟级3、容器的安全性不如计算虚拟化4、容器创建数量无上限,虚拟机受限于hypervisior容器的最大价值(CCI+CCE)1、无服务器架构2、预装好具备容器编排能力的平台
  • [技术干货] 业务系统虚拟化整合价值
    1) 突破传统,战略转型,聚焦公司核心业务发展传统系统建设周期长、吓投资成本高,运维成本高,通过云平台建设,利用云平台统一设备管理,低维护成本,易扩展性,资源部署周期短等优势,面向全业务竞争,把公司投入到传统建设与维护的核心资源释放出来,聚焦公司主流业务。。。2)响应国家节能减排,优化资源利用,建设绿色IT云平台易扩展、设备易替换,提高资源复用率,避免传统IT烟囱式发展,资源利用率低的现状,能够有效地实现节能减排。。3)精简IT资源,降低成本利用云平台统一资源管理,提高设备资源利用率,降低设备投资源成本:统-- 的运维管理平台,隆低维护维护成本,从隆成本中贡献净利润.4)灵活应对业务和IT的需要,缩短部署周期云平台一次规划,多次(按需)部署,降低规划难度,规避投资风险,柔性子足,使利的扩减容机制,可随时调整以匹配业务或IT的变化等。5) 利用云平台的高可靠性,确保核心业务的连续性通过云平台 HA、热迁移功能,能够有效减少设备放障时问,确保核心业务的连续性,避免传统IT,单点故障导致的业务不可用。