• [行业资讯] 中软国际发力智联网自主创新 数智赋能千行百业
    2022年11月4日-6日,第四届华为开发者大会2022(Together)在东莞松山湖盛大举行。作为开源鸿蒙生态共建者和重要贡献者,中软国际与深开鸿应邀携手参加此次开发者大会。中软国际智能物联网业务集团市场部总经理黄志航在鸿蒙生态伙伴媒体发布会上作《数字化时代的自主创新之路》主题演讲,阐述数字经济时代智能物联网的战略价值和发展趋势,深入解读中软国际在自主创新智能物联网上的多层次业务布局并发布相关创新成果。数字经济是推动经济发展的新动力物联网是数字化转型的必经之路随着新一轮科技革命和产业变革深入发展,数字经济已成为世界各国抢抓发展新机遇、塑造国际竞争新优势的焦点。《“十四五”数字经济发展规划》提出,到2025年数字经济核心产业增加值占GDP比重达到10% ,指标达成的关键在于推动数字化转型,发展数字产业新赛道。在数字化转型与数字产业新赛道的交叉路口上,物联网是必经之路。中国物联网市场发展迅速,投资前景巨大。物联网在各行各业的应用正不断深化,催生出大量的新技术、新产品、新应用。与此同时,传统物联网存在的问题也开始暴露出来,如对外依赖强、烟囱项目多、项目周期长、多端互动难、安全隐患多等,成为行业向上跃升的巨大阻碍。人工智能与物联网协同应用,将成为解决难题的关键抓手。相比传统物联网,智能物联网更自主可控、更个性定制、更敏捷灵活、更全域智能、更高效安全。物联网升级智联网势在必行。中软国际发力智联网自主创新 以KaihongOS为底座构建多层次业务格局 自主创新操作系统是智能物联网之根。中软国际基于OpenHarmony产业生态,联合深开鸿创新研发一个数字底座——KaihongOS,一个超级终端管理平台GitIoT应用开发平台,赋能N个行业应用场景。面向智能物联网领域,自主创新操作系统KaihongOS下链智能终端设备,上承数字软件生态,聚合超级终端管理平台,推动千行百业自主创新发展。依托20多年软工能力沉淀和9万数字铁军,结合中软国际优秀的服务及交付能力,中软国际和深开鸿优势互补,联合打造“云-管-边-端”一体化全栈服务体系,通过国产化、模块化、系统化构筑端到端的自主、安全、可控AIoT行业解决方案,满足物联网领域行业垂直、场景具体、深度定制的要求,赋能国产智联网生态建设。打造AIoT生态服务平台——鸿联创 全面服务产品智能化 助力行业自主创新 智能物联网生态构建的重点,在于平台支撑、区域布局、机制形成与品牌打造。中软国际打造鸿联联创营(以下简称“鸿联创”)AIoT生态服务平台,旨在以需求为驱动、以场景为路径、以政府为先导、以区域为单元,探索对接服务自主创新智能物联网南北向生态的新模式。鸿联创于2020年9月首发乌镇并启动运营,之后逐步拓展郑州、苏州、盐城、中山、天津等地,为当地AIoT生态发展使能、释能、赋能。鸿联创全面服务产品智能化。在物联网产品迈向智能化的迫切需求下,企业急需针对研发制造、营销、运营服务等环节,实现全场景的智能产品全生命周期管理和改造。鸿联创以产品制造、产品营销、产品连接管理、产品创新运营等四大场景为牵引,通过流程改进、问题预防、数据可视化、自动化运维等技术手段,缩短智能化产品上市时间,减少研发成本,提升制造企业核心竞争力。鸿联创助力行业自主创新。鸿联创以构建智联网生态平台为抓手,以云原生数字底座、低代码应用开发、微服务、设备连接管理、数据可视化等技术套件,共建便捷、低成本的智联网生态体系,推动产业全价值链、全要素、全生命周期互联互通和数据共享,实现行业高效协同和资源精准配置。随着行业对自主创新的需求越来越高,推进自主、可控、安全的智联网建设也迫在眉睫,中软国际鸿联创也在全面升级平台、产品、服务、战略、品牌,聚焦政企客户AIoT国产化迁移场景和需求,深入发展自主创新智联网应用及生态。同时,中软国际将不断向下扎深kaihongOS“根技术”,强大GitIoT开发应用平台的“树干”,并以鸿联联创营为抓手,拉通供需,向上滋养千行百业枝繁“叶”茂,最终推动整个产业的数字化、智慧化数字转型!
  • [技术干货] 每周四晚8点|Volcano云原生批量计算课程直播!
    随着业务场景的不断丰富,批量计算也由传统的HPC逐渐扩展到大数据、AI等多种场景,但各领域独立发展将造成技术栈不兼容、资源使用率低等问题。在此背景下,云原生技术以其丰富的生态和灵活的扩展性受到各大厂商的青睐,云原生统一基础设施成为必然选择。Volcano作为CNCF首个云原生批量计算项目,支持几乎所有的主流计算框架,提供丰富的高级调度策略及多元算力支持,可在人工智能、大数据、基因测序等海量数据计算和分析场景得到快速应用,弥补了Kubernetes批处理调度能力的空缺 ,并已构建起完善的上下游生态。项目目前已有450+位来自全球各地的贡献者和50+落地案例。今年6月,Apache Spark 3.3版本正式发布,v3.3选择Volcano作为默认batch调度器,助力大数据平台云原生化。9月29日开始,Volcano即将全面开启技术分享课程,核心技术无保留传授——27节公开课,全网首发!13位批量计算行业大咖亲自教学一门职业技能,轻松get!课程研发团队 本次批量计算课程由CNCF 首个容器批量计算项目Volcano的核心贡献者联合研发。适合人群 计算机相关专业的学生群体云计算应用开发、运维工程师、产品经理云原生开源技术爱好者、Volcano社区用户、贡献者部分课表 课次课程名称1云原生批量计算公开课简介2云原生批量计算的先行者Volcano3Volcano安装部署快速入门4如何在AI场景下使用Volcano?5如何在大数据场景下使用Volcano?6如何在HPC场景下使用Volcano?7云原生批量计算的集大成者Volcano Job8Volcano Job插件机制及使用9手把手教你构建自己的Volcano Job插件10资源调度的基石Queue11Volcano的独门秘籍PodGroup12Volcano技术内幕:架构设计与实现原理13走近Action和Plugin机制14Action和Plugin之资源预匹配与SLA策略15Action和Plugin之资源分配与装箱策略扫码回复Volcano进群 免费领取全部27节课·课表不能错过的第一堂课 9月29日日开启,每周周四晚20:00开课CNCF 大使 Kevin WangVolcano 社区 Maintainer 王雷博为大家率先开启课程后续每周讲师信息,可添加k8s2222进学习群获取成为大家的批量计算导师带大家开启云原生批量计算的学习整个学习期间,你们的大佬级导师,也会在学习群内陪伴大家的课程,监督大家的课程进度哦。从入门到精通,万万不能错过第一课!(扫上方海报码回复Volcano进群)学批量计算,认识批量计算达人技能破局,需要1次体系化的洗礼27节课程规划,理论+实践提升战力每周1小时,轻松为个人职业加码不只是学习,一路结识更多批量计算达人添加助教微信领取开课礼包
  • [技术干货] 【一行代码秒上云应用上云实训营二期任务二】十分钟搞定应用上云运行实践,输出反馈文章赢取额外积分,还有征文奖励哦~
    **十分钟搞定应用上云运行实践****输出测评反馈文章获取额外积分**请各位参与活动的开发者,将实践手册体验测评反馈文章,、以博客的形式发出,并将博客链接附在此帖评论区即可~实践手册传送通道>>>征文活动>>>活动详情页>>>
  • [热门活动] 【一行代码秒上云应用上云实训二期任务一】零基础体验AppCloud一键部署,完成应用上云,还有积分、《程序员修炼之道》、代金券等诸多礼品可得哦~
    **零基础体验AppCloud一键部署****输出专业反馈报告赢取精美礼品**前往领取专属代金券资源>>>(已截止)体验传送通道>>>活动详情页>>>活动奖励奖项奖品要求报名AppCloud一键部署体验(已截止)1元ECS代金券前往AppCloud完成一键部署任务输出体验反馈报告5元ECS代金券以压缩包、帖子链接、博文链接等的方式附在本帖评论区优秀反馈体验报告《程序员修炼之道》由华为云AppCloud技术专家评审,参考模板详见附件~反馈体验幸运奖《devops实践指南》当反馈报告人数超过四人时,以抽奖形式送出操作流程1.前往体验AppCloud一键部署2.创建应用:自定义名称、应用简介、选择在华为云DevCloud中同步创新项目3.基础设置:下载软件包上传至华为云DevCloud,本机配置云服务器名称和ecs密码自定义4.一键部署:​5.访问应用6.释放资源:前往我的主页释放资源
  • 【一行代码秒上云应用上云实训二期奖励发放】零基础体验应用上云流程,加入华为云DTSE培训队伍,还有1400元ECS云资源券、开发者认证代金券、书籍、无线鼠标、香薰加湿器等诸多礼品等你来赢!
    奖项公示期三天,请各位如有异议私信版主反馈~若无异议,请获奖用户前往此问卷>>>填写获奖信息,以便寄送礼品~超过15个工作日未反馈信息,则视为放弃领奖哦~奖项奖品获奖用户AppCloud体验报告参与奖5元华为云代金券zz**liAr***veBre****anhid_****dg_leuhuf8osun***beiyu**n优秀产品体验报告《程序员修炼之道》Bre****anAppBazaar体验反馈幸运奖《devops实践指南》sun***bei积分奖37元微认证代金券zz**li**以“一行代码秒上云”为活动宗旨,追求高效上云实践****华为云DTSE强势站台,提供一线上云经验及技术支持****聚焦于开发者华为云云服务产品的使用到华为云云原生进阶的技术支持服务**适合人群:想要学习云上应用开发构建的开发者;                 想要了解实操华为云服务产品能力的开发者;                 对DevOps、敏捷知识感兴趣的开发者活动时间:2022.09.16-2022.11.30(鉴于目前活动参与人数较少,活动延期至11.30,请谅解~)学习交流群   注:请修改群内昵称为华为云账号+xx活动参与方式:注:体验AppCloud一键部署和AppBazaar实践操作都会涉及云资源消耗,产生一定的费用,请知晓并及时释放资源避免产生更多付费。 完成活动报名;点击​,邀请朋友完成任务,报名链接>>>完成AppCloud一键部署体验,并反馈产品体验报告,任务指导>>>完成AppBazaarDIY文档实践体验,参与征文活动,任务指导>>>完成问答抽奖,抽奖地址>>>参考AppBazaar官方DIY文档,自行设计一个项目的上云方案,任务指导>>>(1)邮箱提交:以《一行代码秒上云二期》DIY方案提交为主题提交至邮箱hwappcloud@163.com,邮件内容附联系方式、华为云账号以及微信号,以便后续邀请您加入华为云DTSE培训队伍~(2)微信提交:直接加入学习交流群将文档提交给群主,并提供联系方式和华为云账号~合格作品要求:(1) 开发者设计的上云方案经过验证确认该过程可复现、应用可运行;(2) 开发者上云方案所涉及项目代码需保证其安全性,无版权风险,且支持华为方进行方案复现评审;(3)方案文档呈现需完整,可读性强。优秀作品要求:(1)代表性,上云方案等是否具备代表性;(2)技术复杂度,包括使用的云服务的数量,高阶云服务的数量,产品高端特性、高级技术的应用等;(3)热度,酌情考虑案例发布后引起开发者技术探讨的热度、模仿该案例的热度等;(4)方案呈现的完整度,直观性,多样性等。任务清单>>>积分规则:任务点分值备注体验AppCloud20分输出产品体验报告10分评选为优秀产品体验报告10分完成上云实验10/个上限30分输出实践测评文章5分提交DIY上云方案10分评选优秀上云方案5分邀请好友完成AppCloud体验1分/个上限10分奖励清单:奖励类型奖项奖励个人奖报名并完成AppCloud体验(已截止)一元代金券AppCloud优秀体验报告Top1-3《程序员修炼之道》AppCloud体验报告参与奖5元华为云代金券AppBazaar体验反馈幸运奖《devops实践指南》  AppBazaar征文奖励600元、400元、300元、100元、50元开发者礼包问答抽奖《devops实践指南》积分奖积分>75,且TOP1-3499元开发者认证代金券+无线鼠标+公牛插座魔方+酷睿冰尊A9 带屏 笔记本散热器+定制双肩包+盲盒冰箱贴+《程序员修炼之道》书籍+京东京造金属鼠标垫积分积分>65,且TOP4-1037元微认证代金券+《微服务架构模式设计》+无线鼠标积分积分>50,且TOP11-2037元微认证代金券+无线鼠标积分>50,TOP21-5037元微认证代金券邀请奖邀请100+好友完成AppCloud产品体验,且邀请好友数量TOP11400元华为云云服务器产品券邀请40+好友完成AppCloud产品体验,且邀请好友数量TOP2香薰加湿器+酷睿冰尊A9 带屏 笔记本散热器+《凤凰项目 一个IT运维的传奇故事》书籍邀请20+好友完成AppCloud产品体验,且邀请好友数量TOP3无线鼠标+京东京造金属鼠标垫邀请10+好友完成AppCloud产品体验,且邀请好友数量TOP4-TOP10手持电风扇邀请1位好友完成AppCloud产品体验,可抽奖公牛插排奖品发放说明:本次活动抽奖将对抽奖过程做录屏公示,如您对评奖方式有异议,请勿参加本次活动。每位参加活动的用户理解并同意,为联系获奖用户以及奖品发放的需要,用户须在参与活动之时提供诸如姓名、联系方式、电子邮箱、通讯地址等真实个人信息,活动主办方将仅为前述目的以及适用法律规定的最小限度内收集和使用用户的个人信息,本次活动所收集的个人信息将在活动结束后删除。(用户在向华为云提交个人信息之前,应阅读、了解华为云《隐私政策声明》;用户参加本活动视为理解并同意华为云《隐私政策声明》,华为云《隐私政策声明》网页地址如下:https://www.huaweicloud.com/declaration/sa_prp.html)。获奖用户在领奖界面填写获奖信息,活动结束且用户填写完整领奖信息后14个工作日内,将统一发出奖品,不额外收取任何费用。由于获奖用户自身原因(包括但不限于提供的联系方式有误、身份不符或者通知领奖后超过30天未领取等)造成奖品无法发送的,视为获奖用户放弃领奖。为保证活动的公平公正,华为云有权对恶意刷活动资源(“恶意”是指为获取资源而异常注册账号等破坏活动公平性的行为),利用资源从事违法违规行为的用户收回抽奖及奖励资格。本活动规则由华为云在法律规定范围内进行解释。华为云保留不时更新、修改或删除本活动规则的权利。所有参加本活动的用户,均视为认可并同意遵守《华为云用户协议》,包括以援引方式纳入《华为云用户协议》的《可接受的使用政策》、《法律声明》、《隐私政策声明》、相关服务等级协议(SLA),以及华为云服务网站规定的其他协议和政策(统称为“云服务协议”)的约束。云服务协议链接的网址:cid:link_8 如果您不同意本活动规则和云服务协议的条款,请勿参加本活动。
  • [技术干货] 【一行代码秒上云】项目临时初验,生产环境还没搭全怎么办,在线等,急!
    客户领导临时决定明天项目初验,生产环境还没搭全怎么办,在线等,急!每当年底很多项目都忙着验收回款,验收回款的意义有多重大——成了,项目组发奖金;不成,别说奖金,明年开春团队保不保得住都难说。今天XX云项目的客户领导突然提议要在明天进行项目初验,项目经理小贾是悲喜交加,喜可以理解, “悲”又是怎么回事呢?原来,事情的经过是这样的。XX云原定在年后3月进行项目初验,因为小贾为人热情厚道,客户关系搞的也不错,所以客户领导决定提前初验,好让开发团队过个好年。提前验收是个好事,可是生产环境还没完全搭起来,——刀片机到位了,网络还没配置,程序运行环境、数据库啥的更别提了,一天时间根本搞不定,可告诉客户还没准备好的话,年前验收估计没戏了。“客户有意愿初验,那就必须拿下,可是生产环境都没弄好,咋整呢。我问问强哥,看看他有没有啥办法。”小贾真没辙了。强哥是XX云的研发大牛,作为团队骨干,这种小Case自然难不倒他。“亏你还是咱们XX云项目经理,云呀,你可以代码上云呀!”“代码上云和本地有什么区别么?”小贾一脸疑惑。“来,让强哥给你唠一唠这里面的门道。”什么是代码上云随着时代发展,IT项目对本地硬件环境要求也越来越高——越来越多的用户,越来越高的稳定性,越来越强劲的计算能力等。当然除了硬件环境外,还需要一支专业运维团队去配置、运行、维护这套环境,不管是资源投入,还是时间投入对企业来说,都是一笔不小的开销。“云”应运而生。“云”即云计算,指一种提供资源的网络,使用者可以随时获取“云”上的资源,按需使用且可无限扩展。大多数情况下,“云”可通过软件实现自动化管理,相比本地资源,只需少量人力参与,就能让资源被快速提供。“上云”是指将应用从本地部署或迁移至“云”上的过程,应用上云后,开发团队可以不必再过分关注硬件、环境等问题,因为云服务提供商的专业团队会保障环境稳定运行。为便于理解,举一个简单的例子:用老式随身听听音乐,需要不断地购买卡带或者cd(不管是体积还是成本都很大),而现在我们只需要用音乐软件搜一下想听的音乐,就可以直接听了,这就是本地环境和“上云”的差别。 “说了这么多,你明白了么”强哥问道。“你的意思是,我直接把应用部署到云主机上?网络、环境啥的都不用管了?”小贾似懂非懂。“也不全对,虽然现在云主机,云数据库等各类云产品功能很全,但是你还是得根据咱们项目修改一些应用配置,不过工作量相比于之前来讲,真是少多啦。”强哥自信的说道。听了强哥的建议,小贾内心的大石头落地了,验收和年终奖看来都不成问题了“云竟然这么厉害,我之前还真没了解过,哈哈哈哈。”“云的优点还不止这些呢,强哥再给你唠一唠?” “行啊~”代码上云的优点代码上云的优点有很多,在此列举以下四点:1.降低成本,提高效率开发团队直接从供应商处获取资源,无需像十几年前花费大量金钱来购买和维护资源(包括机房、主机、运维团队等),大大降低了资本支出成本。另外普通的开发团队很难应对来自网络对应用的各种攻击,而使用云服务则可以借助专业的安全团队来有效降低安全风险。2、按需购买,即开即用开发团队可以根据根据自己的需求,购买自己需要的配置,同时很多云厂商会提供“包年/包月”、“按实际时长计费”等多种计费方式。当资源不被需要时,可直接释放。 3、弹性易用开发团队可以根据业务需求自行定义弹性伸缩策略,通过可视化控制台配置定时或者周期性的监控策略,动态的调整弹性云服务器实例,保证业务平稳健康运行满足业务需求的同时,减少资源投入。通过云计算架构,当云资源无法满足应用生产时,开发团队可以对所用资源的配置进行升级。4、可靠性高。各大云平台通常会提供安全、稳定、高速、隔离、专有的网络传输通道,以保障云资源的网络稳定,同时提供开放性的云监控服务平台,提供资源的实时监控、告警、通知等服务,让开发团队可第一时间知悉业务运行状况。“代码上云优点多着呢,正好我这有一个SpringBoot的Demo,我给你打个样,让你看看什么叫‘一行代码秒上云’。”强哥越说越激动。“好啊,等我看完,我就把咱们项目部到云上。”华为云DevCloud如何实现“一行代码秒上云”想要一行代码秒上云,工具自然少不了,这里推荐使用华为云弹性云服务器ECS搭配华为云DevCloud。弹性云服务器ECS弹性云服务器是由CPU、内存、镜像、云硬盘组成的一种可随时获取、弹性可扩展的计算服务器,同时它结合虚拟私有云、虚拟防火墙、数据多副本保存等能力,为您打造一个高效、可靠、安全的计算环境,确保您的服务持久稳定运行。弹性云服务器创建成功后,您就可以像使用自己的本地PC或物理服务器一样,在云上使用弹性云服务器。购买弹性云服务器ECS时,可以按需选择主机的计费模式,主机配置,操作系统等属性。购买完成后,就拥有一台云端的弹性云主机。华为云DevCloud华为云软件开发服务(DevCloud)是一站式云端DevOps平台,面向开发者提供的云服务,即开即用,随时随地在云端进行项目管理、代码托管、代码检查、流水线、编译、构建、部署、测试、发布等,让开发者快速而又轻松地开启云端开发之旅。新建项目通过华为云软件开发服务(DevCloud)进入华为云DevCloud后,可以直接新建项目。选择“Scrum流程”开发流程,设置项目名称为“demo”,输入项目描述信息。如下图所示:完成项目创建。主机组管理点击项目“demo”顶部右侧的 “设置”下的“通用设置”。然后在通用设置页面左侧菜单栏选择“主机组管理”,点击“新建主机组”按钮添加主机组。在主机组管理功能中,填写项目需要部署运行的主机信息,如IP、用户名、密码等。代码托管代码托管 CodeHub,源自华为千亿级代码管理经验,基于Git,提供企业代码托管的全方位服务。点击项目“demo”项目顶部菜单栏“代码”,然后选择“代码托管”进入代码托管界面,点击“普通新建”按钮右侧的下拉箭头“V”并选择“按模板新建”选择名为“Java Web Demo”的官方代码仓库模板,点击“下一步”。根据提示填写仓库关键信息,即可生成代码仓库当然这里只是示例,代码仓库的操作、功能和本地Git仓库基本相同。代码检查代码检查(CodeCheck)是基于云端实现代码质量管理的服务,软件开发者可在编码完成后执行多语言的代码静态检查和安全检查,获取全面的质量报告,并提供缺陷的改进建议和趋势分析,有效管控代码质量,帮助产品成功。点击项目“demo”项目顶部菜单栏“代码”,然后选择“代码检查”进入代码检查界面,选择“web-dev-codecheck”检查任务,进入进入代码检查任务的“设置”界面,选择“规则集”在Java语言的“启用规则集”中选择“安全检查规则集”点击“开始检查”启动代码安全性检查任务执行。稍作等待,待任务执行完毕,点击“概览”查看检查结果,如下图所示实际开发中可根据代码检查报告,对代码中存在的安全问题进行修复后再执行安全检查直至问题达到可允许的范围内。。编译构建编译构建(CloudBuild)基于云端大规模并发加速,为客户提供高速、低成本、配置简单的混合语言构建能力,帮助客户缩短构建时间,提升构建效率。点击项目“demo”项目顶部菜单栏点击“构建&发布”,选择“编译构建”,进入编译构建服务首页,如下图所示:点击系统自动创建的名为“WEB-Dev-cloudbuild”构建任务所在行的“开始构建”按钮,开始进行编译构建(构建步骤可根据自身项目自行配置)。点击项目“demo”项目顶部菜单栏点击“构建&发布”,选择“发布”,按照构建任务名称及时间戳点击查看构建生成的软件包部署部署(CloudDeploy)提供可视化、一键式部署服务,支持并行部署和流水线无缝集成,支持脚本部署,容器部署等部署类型,支持java、node.js、python等多种技术栈,实现部署环境标准化和部署过程自动化。点击项目“demo”项目顶部菜单栏点击“构建&发布”,选择“部署”,进入部署服务页面,如下图所示:按上图所示点击“web-dev-deploy”部署任务所在行的图标,进入任务编辑页面。“web-dev-deploy”是代码模板自带由系统自动创建的,实际开发项目需要根据业务场景自行创建部署任务。启动执行后,等待部署任务执行完毕,如下图所示:访问结果如下图所示:“小老弟,看明白了么?”强哥问道。“明白,代码上云也不难嘛,也就分分钟钟的事。”“嘿嘿,我还有一招没秀呢,那就是流水线,有了它,以后每次发版更新,那都是秒上云了~”“哦?流水线?”流水线流水线 CloudPipeline提供可视化、可定制的持续交付流水线服务,实现缩短交付周期和提升交付质量的效果。点击项目“demo”项目顶部菜单栏点击“构建&发布”,选择“流水线”,进入流水线服务页面,如下图所示:按上图所示点击名为“WEB-Dev-pipeline”流水线任务所在行的图标,进入任务编辑页面。“WEB-Dev-pipeline”是代码模板自带由系统自动创建的,实际开发项目需要根据业务场景自行创建流水线任务。通过流水线,可以将之前配置的任务串联起来,自动执行,提升研发效率。“原来项目上云这么方便啊!我的初验有救了!我的年终奖有着落了!强哥你就是我的救世主!”小贾感叹道。强哥语重心长的说:“现在咱们IT圈干啥都离不开云,你应该多了解一下了云啦 ~”
  • [技术干货] 【华为云AppCloud】应用上云就三步,你学“Fei“了不?
    提问:把应用代码构建成可使用的云上应用,总共要几步?小白这样说:问我这个问题,我真的会谢…我能localhost把应用运行起来就不错了,构建云上应用?想都不敢想….刚出新手村的开发者这样说:这个问题难不倒我,依我这一年多的开发经验来看,至少得五步吧:第一步:把代码编译成制品包,第二步:买一台云主机,配上公网IP,至于主机规格,我可说不准,先2核4G,跑不起来再说呗;第三步:搭环境,在主机上安装jdk、tomcat等一系列应用运行所需要的程序;第四步:把制品包放到云主机的对应目录下,通过shell脚本启动服务,查看日志,看看有没有启动异常;第五步:打开浏览器,输入地址,访问应用。怎么样,没毛病吧,我跟你讲,自己搞一套应用环境,可不容易啊。大拿这样说:就这?DevOps听说过没?就是I have Development,I have Operations,emm…DevOps。提交代码到Git上,安装DevOps工具链完成应用的构建和部署,最后打开浏览器访问应用,三步到位,都不用手工安装服务器环境。当然DevOps包含的内容很多,比如 敏捷、精益、自动化、持续集成等 。DevOps最初的出现是为了解决复杂系统的快速迭代交付,通过自动化工具链比如Jenkins,让代码的构建以及软件包的部署都可以定时或触发性的自动化执行,这样就提高了交付效率。如果只是部署一个不经常更新的单机应用的话,说实话DevOps有些大材小用了。不过,我用DevOps工具链已经用习惯了,让我手动装环境是不可能的——具体流程我上面已经说过了;如果再算上购买云主机、弹性IP等步骤,最多就是四步吧。在这个过程中,DevOps工具链会帮助我完成服务器环境的搭建,这可比手工安装省事太多了,一台服务器还好,让我手工部署到10台服务器上,我可受不了;不过DevOps工具链的安装配置,也是一门学问哟,没有点基础,一般人可学不来。AppCloud这样说:两步。一个高效的工具两步就足够了。两步? AppCloud是什么牛马?什么是AppCloud?AppCloud是一个通过“技术方案”帮助开发者轻松构建上云应用的工具平台;我们将构建应用的“过程”模板化,形成“技术方案”;同时AppCloud结合DevOps理念,开发者在使用AppCloud时,只需要调用对应的技术方案,AppCloud会自动调用DevOps工具链,实现一键部署,快速构建云上应用。AppCloud对开发者有什么意义?当开发者对于构建应用无从下手或者有困惑时,可以通过我们的AppCloud提供的技术方案(包括部署来源,主机配置,部署任务等)实现一键部署,轻松完成云上应用的构建;同时AppCloud支持用户自定义“技术方案”,以供其他用户进行学习、使用。AppCloud好操作么?即使是小白,在AppCloud的帮助下,也能轻松构建云上应用。在AppCloud里没有复杂的环境配置,大部分配置都是预制好的,比如运行应用的资源、服务器环境等,这样就大大降低了构建云上应用的门槛。那具体如何构建云上应用呢?第一步:将应用代码构建成制品包(可通过本地IDE执行);第二步:打开AppCloud,将制品包上传至AppCloud,进行一键部署,在此过程中,AppCloud会自动购买应用运行所需的资源,并搭建运行环境,最后完成应用部署,从AppCloud中访问应用,上云完成。轻轻松松,一键上云,你还不来试试么?现在点击此处前往华为云体验官活动,一分钟体验一键部署云上应用!加入华为云体验官队伍还有更多权益等你来拿! 高效工具爱好者进入聊天:想知道我还能安利什么神奇工具,点我头像啊~​
  • [技术干货] 【云原生| Docker】 部署 Django & mysql 项目-转载
     一、准备工作   镜像加速源  镜像加速器    镜像加速器地址 Docker 中国官方镜像    https://registry.docker-cn.com DaoCloud 镜像站    http://f1361db2.m.daocloud.io Azure 中国镜像    https://dockerhub.azk8s.cn 科大镜像站    https://docker.mirrors.ustc.edu.cn 阿里云(需要注册,建议)    https://.mirror.aliyuncs.com 七牛云    https://reg-mirror.qiniu.com 网易云    https://hub-mirror.c.163.com 腾讯云    https://mirror.ccs.tencentyun.com  二、部署 Django & Mysql  1) .Dockignore 创建.dockignore文件  .git settings/local.py **/__pycache__ 2) Dockfile 使用pip freeze > requirements.txt命令打包好项目的依赖包列表(这种方式只适合在虚拟环境中导出虚拟环境中的包,如果不是在虚拟环境下就会导出全局环境的python的环境包) 要想在全局环境中导出我们项目的依赖包,可以利用python包pipreqs # 进入到项目所在目录,在执行下面的命令 $> pip install pipreqs $> pipreqs . --encoding=utf8 --force    # “.” 指的是将导出依赖包的文件放在当前目录下 # “--encoding=utf8” 指的是存放文件的编码为utf-8,否则会报错 # “--force”  --force 强制执行,当 生成目录下的requirements.txt存在时强子覆盖 创建dockfile文件 # 指定基础镜像 FROM python:3.7  #ENV server.params=  # updata太慢 设置镜像源 RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \ && apt-get clean  \     && apt-get update  \     && apt-get install python3-dev default-libmysqlclient-dev -y   # 创建 code 文件夹并将其设置为工作目录 RUN mkdir /code WORKDIR /code   # 将 requirements.txt 复制到容器的 recruitment 目录 ADD requirements.txt /code/  # 更新 pip 并 安装依赖库 RUN pip install pip -U && pip install -r requirements.txt  # COPY 是不解压的 ADD . /code/  # CMD [ "/bin/sh", "/code/start.local.bat" ] FROM python:3.7 指令从仓库拉取一个包含 python 3.7 的 Linux 操作系统环境(Linux 版本为 Debian)。  RUN 和 WORKDIR 指令都是针对容器的,功能是在容器里创建目录、并将其设置为工作目录。注意宿主机是没有这个目录的。  ADD 指令出现了两次。ADD requirements.txt /code/ 意思是将宿主机当前目录(即 Dockerfile 所在目录)的 requirements.txt 文件复制到容器的 /code 目录中。ADD . /code/ 意思是把当前目录所有内容复制到容器 /code/ 目录,注意中间那个点。  3) docker-compose.yml version: "3" services:   #  设置应用 容器   app:     restart: always     build: .   # todo 根据当前项目 dockerfile生成,相当于 docker build -t="ouruser/sinatra:v2" .   # bash shell窗口 -c命令行 默认迁移 和 运行     command: bash -c "python manage.py runserver 0.0.0.0:8080"   # bash -c "python manage.py runserver 0.0.0.0:8080"     volumes:       - .:/code     ports:       - "8080:8080"     depends_on:       - db     networks:       - db_network   # 设置数据库 容器   db:     image: mysql:8  # 版本一定要对应!      volumes:      - "./mysql/data:/var/lib/mysql"  # 设置timestamp 可为 null   #  设置字符集 (不是utf8会报错 #   collation 这是排序规则 #      - "./mysql/conf/my.cnf:/etc/mysql/my.cnf"     command: "mysqld --user=root --explicit_defaults_for_timestamp --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci" #      - -character-set-server=utf8mb4  # 设置默认字节 #      - -collation-server=utf8mb4_general_ci #   设置排序 #      - -explicit_defaults_for_timestamp=true # 设置可为 null     #      --default-authentication-plugin=mysql_native_password # 使用 5.7 版本的密码验证     #    "mysqld --user=root --explicit_defaults_for_timestamp --character-set-server=utf8mb4"     ports:       - "3307:3306"     restart: always     environment:       - MYSQL_ROOT_PASSWORD=123456  # 一定要配置       - MYSQL_DATABASE=django_recruitment     networks:       - db_network # 设置网络 networks:   db_network:     driver: bridge version 代表 docker-compose.yml 的版本,目前最新版为 3,不需要改动它。 从整体上看,我们定义了二个容器,分别是app、db,容器之间通过定义的端口进行通讯。定义了网络db_network,只有处在同一网络下的容器才能够互相通讯。不同网络之间是隔离的,即便采用同样的端口,也无法通讯。  定义了一个名叫 app 的容器。后面的内容都是 app 容器的相关配置:  restart :除正常工作外,容器会在任何时候重启,比如遭遇 bug、进程崩溃、docker 重启等情况。 build :指定一个包含Dockerfile的路径,并通过此Dockerfile来构建容器镜像。注意那个 “.” ,代表当前目录。 command :容器运行时需要执行的命令。这里就是我们很熟悉的运行开发服务器了。 volumes :卷,这是个很重要的概念。前面说过容器是和宿主机完全隔离的,但是有些时候又需要将其连通;比如我们开发的 Django 项目代码常常会更新,并且更新时还依赖如 Git 之类的程序,在容器里操作就显得不太方便。所以就有卷,它定义了宿主机和容器之间的映射:“.” 表示宿主机的当前目录,“:” 为分隔符,“/code” 表示容器中的目录。即宿主机当前目录和容器的 /code 目录是连通的,宿主机当前目录的 Django 代码更新时,容器中的 /code 目录中的代码也相应的更新了。这有点儿像是在容器上打了一个洞,某种程度上也是实用性和隔离性的一种妥协。  严格意义上讲,这里用到的 .:/code 并不是卷,而是叫挂载,它两是有区别的,只不过 docker-compose 允许将挂载写到卷的配置中。  expose:暴露容器的8000端口供其他容器访问,宿主机和外界无法访问 networks:能够访问db_network depends_on : 意思是此容器需要等待 db 容器启动完毕才能够启动。  分析一下 db 容器:  image :从仓库拉取 MySQL 5.7 。 volumes :这里出现的 static-volume 叫卷。它的使用方式像这样:static-volume:/code/collected_static ,冒号后面还是容器内的目录,但冒号前的却不是宿主机目录、仅仅是卷的名称而已。从本质上讲,数据卷也是实现了宿主机和容器的目录映射,但是数据卷是由 Docker 进行管理的,你甚至都不需要知道数据卷保存在宿主机的具体位置。  相比挂载,数据卷的优点是由于是 Docker统一管理的,不存在由于权限不够引发的挂载问题,也不需要在不同服务器指定不同的路径;缺点是它不太适合单配置文件的映射。和挂载一样,数据卷的生命周期脱离了容器,删除容器之后卷还是存在的。下次构建镜像时,指定卷的名称就可以继续使用了。  ports :MySQL 默认通信端口为 3306 。 environment :定义容器的环境变量,设置了 MySQL 的 root 用户的密码、数据库的名称。 network:只能够访问db_network。添加db容器后记得的修改Django里的数据库设置。  4)修改项目settings.py 我们在开发项目中,往往是使用django自带的sqlite进行快速开发测试,后面部署再使用mysql,这里也是一样的,个人建议部署到服务器可以先使用带过去的sqlite进行测试(且此时数据库是有数据的), 进行真正上线则使用mysql(没有数据)  ALLOWED_HOSTS = [ '*']  DATABASES = {     'default': {         'ENGINE': 'django.db.backends.sqlite3',         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),     } }  # 部署用数据库配置 # DATABASES = { #     'default': { #         'ENGINE': 'django.db.backends.mysql', #         'NAME': 'django_recruitment', #         'USER': 'root', #         'PASSWORD': '123456', #         'HOST': 'db',         # 'HOST': '127.0.0.1', #         'PORT': '3306', #         'OPTIONS': {'charset': 'utf8mb4'}, #     } # }   # todo 注意:这里使用的是db别名,docker会自动解析成ip  部署!  5)生成表&数据迁移 由于我们所配置的数据是空的,此时我们需要生成表和数据迁移  5.1 生成表 进入到sh命令窗口  bash python manage.py migrate 5.2 数据迁移 django先连接回原来的数据库, python manage.py dumpdata > data.json 导出数据,并修改文件编码! 不然后面 loaddata会报错!  进入mysql终端,设置忽略外键 和 删除 auth_permission 和 django_content_type 表 ( 由于在数据迁移过程中这两个表数据默认生成)  set foreign_key_checks=0; truncate table django_content_type; truncate table auth_permission; set foreign_key_checks=1; 回到项目容器终端 进入到sh命令窗口  bash python manage.py loaddata data.json   # mysql版本一定要一样 不然报错 部署命令  运行命令docker-compose build构造镜像,再使用docker-compose up即可启用服务。  下面附上一下经常用到的命令:  停止容器,docker-compose down 后台运行docker容器:docker-compose up -d 只想启动其中的一个容器:docker-compose up -d db或者docker-compose up -d app即可启动db容器或app容器。 进入容器:docker exec -it container_id /bin/bash 上面的container_id如果不知道如何获取可以通过docker ps命令查看。 ———————————————— 版权声明:本文为CSDN博主「计算机魔术师」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_66526635/article/details/126023879 
  • [技术干货] 【云原生】-Docker部署SQL Server及最佳应用-转载
     前言 SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),本文总结了容器环境下的部署及实践应用 ⛳️ 1.SQL Server介绍  SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS); SQL Server使用方便,伸缩性好与相关软件集成程度高; SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能  SQL Server 服务作用简介: 1.SQL Server(MSSQLSERVER)是必须要开启的,这个是数据库引擎服务,它就像汽车的发动机一样,缺它不可。 2.SQL Server代理(MSSQLSERVER)是代理服务,比如你有一些自动运行的,定时作业, 或者是一些维护计划,比如定时备份数据库等操作,那么就要打开,否则,就不会备份数据库了。  3.SQL Server Analysis Services (MSSQLSERVER)是分析服务,一般不用开启,除非你做多位分析,和数据挖掘,才需要开启。 4.SQL Full-text Filter Daemon Launcher (MSSQLSERVER)是全文检索服务,如果你没有使用全文检索技术,那么也不需要开启。  5.SQL Server VSS Writer MicrosoftSQLServer的SQL编写器服务, 允许备份和还原应用程序以便在VolumeShadowCopyService(VSS)框架中进行操作。 6.Sql Browser 服务 一般你要进行远程访问,不需要开启sql browser开启sql browser, 通过:服务器ip,端口 这种方式就可以访问远程的服务器 ⛳️ 2.查看镜像源 [root@jeames ~]# docker search mssql  ⛳️ 3.拉取镜像 docker pull mcr.microsoft.com/mssql/server:2017-latest  ​[root@jeames ~]# docker images  ​⛳️ 4.运行容器 docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=jem202207090." \ -p 1433:1433 --name sqlserver2017 \ -d mcr.microsoft.com/mssql/server:2017-latest  此处记得密码设置为复杂密码  参数解释: -e "ACCEPT_EULA=Y":默认选择同意协议许可证 -e "SA_PASSWORD=jem202207090.":设置连接密码为jeames007 -p 1433:1433: 宿主机端口映射到容器端口(前者为宿主机) --name sqlserver2017:容器别名 -d: 后台运行 mcr.microsoft.com/mssql/server:2017-latest:镜像名称:标签 ⛳️ 5.使用数据库 🚀 5.1 进入容器 [root@jeames ~]# docker exec -it sqlserver2017 bash ##查看docker日志 [root@jeames ~]# docker logs sqlserver2017   🚀 5.2 连接数据库 root@a0e5be7e8e03:/# /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P “jem202207090.”  🚀 5.3 查询数据库 1> select name from sys.Databases; 2> go   🚀 5.4 创建数据库 1> create database jem_db 2> go 可以看到我们成功的创建好了一个数据库。   ⛳️ 6. 远程连接 使用Navicat进行远程数据库链接测试,你可能会遇到远程连接失败问题, 请检查服务器防火墙,或者安全组规则配置。 SQL Server默认端口:1433 ​​​​​​​原因是Navicate没有找到电脑安装的sqlserver驱动,那么咱们进行安装即可, 找到navicat的安装目录下的sqlncli.msi(32位)或sqlncli_x64.msi(64位)的,根据系统版本选择安装 ———————————————— 版权声明:本文为CSDN博主「IT邦德」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_41645135/article/details/126416874 
  • [技术干货] kubernetes v1.23.3 二进制部署
    1. 组件版本和配置策略1.1 主要组件版本组件版本发布时间kubernetesv1.23.32022-01-26etcdv3.5.22022-02-01cri-ov1.23.02021-12-18flannelv0.16.32022-01-29coredns1.9.02022-02-10cni-pluginsv1.0.12021-09-081.2 主要配置策略kube-apiserver:使用节点本地 nginx 4 层透明代理实现高可用;关闭非安全端口 8080 和匿名访问;在安全端口 5443 接收 https请求;严格的认证和授权策略 (x509、token、RBAC);开启 bootstrap token 认证,支持 kubeletTLS bootstrapping;使用 https 访问 kubelet、etcd,加密通信;kube-controller-manager:3 节点高可用; 关闭非安全端口,在安全端口 10257 接收 https 请求;使用 kubeconfig 访问 apiserver的安全端口;自动 approve kubelet 证书签名请求 (CSR),证书过期后自动轮转;各 controller 使用自己的ServiceAccount 访问 apiserver;kube-scheduler:3 节点高可用; 使用 kubeconfig 访问 apiserver 的安全端口;关闭非安全端口,在安全端口 10259 接收https 请求;kubelet:使用 kubeadm 动态创建 bootstrap token,而不是在 apiserver 中静态配置;使用 TLSbootstrap 机制自动生成 client 和 server 证书,过期后自动轮转;在 KubeletConfiguration类型的 JSON 文件配置主要参数;关闭只读端口,在安全端口 10250 接收 https请求,对请求进行认证和授权,拒绝匿名访问和非授权 访问;使用 kubeconfig 访问 apiserver 的安全端口;kube-proxy:使用 kubeconfig 访问 apiserver 的安全端口;在 KubeProxyConfiguration 类型的 JSON文件配置主要参数;使用 ipvs 代理模式;集群插件:DNS:使用功能、性能更好的 coredns;2. 初始化系统和全局变量2.1 集群规划master节点:节点名称IP地址k8s-master-1192.168.2.175k8s-master-2192.168.2.176k8s-master-3192.168.2.178node 节点:节点名称IP地址k8s-node-1192.168.2.185k8s-node-2192.168.2.187k8s-node-3192.168.3.62k8s-node-4192.168.3.70控制节点/配置生成节点:节点名称IP地址qist192.168.0.151工作目录: /opt三台机器混合部署本文档的 etcd、master 集群和 woker 集群。如果没有特殊说明,需要在所有节点上执行本文档的初始化操作。2.2 kubelet cri-o cgroupCgroup Driver:systemd kubeelt cri-o Cgroup 配置为systemd2.3 设置主机名hostnamectl set-hostname k8s-master-1 # 将 k8s-master-1 替换为当前主机名退出,重新登录 root 账号,可以看到主机名生效。2.4 添加节点信任关系本操作只需要在 qist 节点上进行,设置 root 账户可以无密码登录所有节点:ssh-keygen -t rsa ssh-copy-id root@192.168.2.175 ssh-copy-id root@192.168.2.176 ssh-copy-id root@192.168.2.177 ssh-copy-id root@192.168.2.185 ssh-copy-id root@192.168.2.187 ssh-copy-id root@192.168.3.62 ssh-copy-id root@192.168.3.702.5 安装依赖包yum install -y epel-release yum install -y chrony conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget socat gitkube-proxy 使用 ipvs 模式,ipvsadm 为 ipvs 的管理工具;etcd 集群各机器需要时间同步,chrony用于系统时间同步;2.6 关闭防火墙关闭防火墙,清理防火墙规则,设置默认转发策略:systemctl stop firewalld systemctl disable firewalld iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat2.7 关闭 swap 分区关闭 swap 分区,否则kubelet 会启动失败(可以设置 kubelet 启动参数 --fail-swap-on 为 false 关闭 swap检查):swapoff -a sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab2.8 关闭 SELinux关闭 SELinux,否则 kubelet 挂载目录时可能报错 Permission denied :setenforce 0 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config2.9 优化内核参数cat > /etc/sysctl.d/kubernetes.conf <关闭 tcp_tw_recycle,否则与 NAT 冲突,可能导致服务不通;内核低于4版本添加fs.may_detach_mounts=12.10 系统文件打开数cat>>/etc/security/limits.conf<centos7还需修改sed-i's/4096/655350/'/etc/security/limits.d/20-nproc.conf2.11 内核模块配置重启自动加载加载ipvs内核模块cat>/etc/modules-load.d/k8s-ipvs-modules.conf<加载netfilter等模块 内核4版本以下 nf_conntrack 替换 nf_conntrack_ipv4cat>/etc/modules-load.d/k8s-net-modules.conf<2.12 设置系统时区timedatectlset-timezoneAsia/Shanghai2.13 设置系统时钟同步systemctl enable chronyd systemctl start chronyd查看同步状态:timedatectl status输出:System clock synchronized: yes NTP service: active RTC in localTZ: noSystem clock synchronized: yes,表示时钟已同步;NTP service: active,表示开启了时钟同步服务;#将当前的UTC时间写入硬件时钟 timedatectlset-local-rtc0#重启依赖于系统时间的服务 systemctl restart rsyslog systemctl restart crond2.14 关闭无关的服务systemctl stop postfix && systemctl disable postfix2.15 创建相关目录创建目录:master 组件目录#k8s目录 mkdir -p /apps/k8s/{bin,log,conf,ssl,config} mkdir -p /apps/work/kubernetes/{manifests,kubelet} mkdir -p /var/lib/kubelet mkdir- p /usr/libexec/kubernetes/kubelet-plugins/volume/exec/ mkdir -p /apps/k8s/ssl/{etcd,k8s} #etcd目录 mkdir -p /apps/etcd/{bin,conf,data,ssl} #etcd data-dir目录 mkdir -p /apps/etcd/data/default.etcd #etcdwal-dir目录 mkdir -p /apps/etcd/data/default.etcd/walnode 节点目录mkdir -p /apps/k8s/{bin,log,conf,ssl} mkdir -p /apps/work/kubernetes/{manifests,kubelet} mkdir -p /var/lib/kubelet mkdir -p /usr/libexec/kubernetes/kubelet-plugins/volume/exec/cri-o 目录结构创建mkdir -p /apps/crio/{run,etc,keys} mkdir -p /apps/crio/containers/oci/hooks.d mkdir -p /etc/containers mkdir -p /var/lib/containers/storage mkdir -p /run/containers/storage mkdir -p /apps/crio/lib/containers/storage mkdir -p /apps/crio/run/containers/storage2.16 mount目录挂载挂载kubelet 跟cri-o数据目录最大兼容其它依赖组件例如csi插件cat>> /etc/fstab <验证挂载是否有误mount-a重启机器:sync reboot期待下次的分享,别忘了三连支持博主呀~ 我是 念舒_C.ying ,期待你的关注~💪💪💪
  • [技术干货] 报名
    报名DataFactory双轮驱动的开发模式
  • [知识分享] KubeEdge:下一代云原生边缘设备管理标准DMI的设计与实现
    摘要:KubeEdge设备管理架构的设计实现,有效帮助用户处理设备数字孪生进程中遇到的场景。本文分享自华为云社区《KubeEdge:下一代云原生边缘设备管理标准DMI的设计与实现》。随着5G、AI、分布式云等技术的成熟发展,万物互联、数字孪生、算力泛在等理念不断推进,带来了很多行业业务的创新,越来越多的设备、应用运行在端侧,并产生大量的数据。如何更好地解耦业务应用开发和设备数据访问,为设备提供完整的生命周期数据管理,释放设备数据的价值?如何在保证集群可用性的同时,高效管理和传输设备数据,获得更为方便、灵活的数据访问方式?云原生边缘计算的方案选择可以帮助用户更好地应对这类问题。一、KubeEdge设备管理框架KubeEdge设备管理架构的设计实现,有效帮助用户处理设备数字孪生进程中遇到的场景。用户可以通过KubeEdge,将物理设备抽象成数字孪生,用云原生的方式对设备和数据进行管理。一、KubeEdge设备管理框架 图 1 KubeEdge设备管理架构设计KubeEdge设备管理架构设计如图1所示,具体流程如下:1. 用户调用Kubernetes API接口,创建Device CRD实例到KubeEdge2. KubeEdge云上组件CloudCore watch到Kubernetes中Device CRD实例创建消息3. 此时CloudCore会做两件事情,一方面CloudCore通过云边websocket通道下发Device Twin信息到EdgeCore,另一方面CloudCore会生成一份包含Device Profile信息的Configmap,该Configmap是以Node名称为索引,挂载到对应Mapper的Pod中的4. Mapper通过读取挂载的Configmap中的Device Profile信息,更新本地维护的Device list列表5. EdgeCore把接收到的Device Twin信息发送到指定的mqtt topic6. 该节点上的所有Mapper都会收到该Device Twin消息,并根据Device名称来匹配是否是自己维护的list中的Device7. Mapper根据Device Profile信息,通过对应的协议与设备建立连接8. Mapper通过mqtt topic上报设备状态和采集的数据Device Twin到EdgeCore9. EdgeCore通过云边websocket通道上报Device Twin数据到CloudCore10. CloudCore更新设备Device Twin数据到Kubernetes二、DMI框架设计 在此基础上,KubeEdge团队也对框架不断更新迭代。为帮助用户应对未来更大规模设备场景、更高的可用性需求、更灵活的功能支持以及更优的用户体验,KubeEdge 设计了更优化的设备管理框架——DMI。DMI整合设备管理接口,优化边缘计算场景下的设备管理能力,打造基于云原生技术的,覆盖设备管理、设备数据的设备数字孪生管理平台;同时定义了EdgeCore与Mapper之间统一的连接入口,并分别由EdgeCore和Mapper实现上行数据流和下行数据流的服务端和客户端,承载DMI具体功能。DMI框架设计中解耦了设备管理面与设备业务面数据,让Device CRD只承载设备本身的生命周期管理,而设备业务面数据则直接通过微服务的方式为数据消费者应用提供出来。在这样的架构下,设备就不再是单纯的数据源,而是一种云原生的设备微服务,设备数据消费应用的开发者就可以不再关心如何获取设备数据,而是以更云原生的方式来聚焦应用本身的业务逻辑开发。DMI框架还提供多种数据推送方式,让数据消费者可以更灵活地获取设备数据,用户体验更优。由于DMI的设备管理面与业务面数据分离的特点,业务面数据可以通过业务面通道更灵活地在云端或边端被处理,而管理面的云边通道中只会传输少量管理面信息,大大降低了云边通道拥塞的可能,提高了KubeEdge系统的可用性。另外,DMI提供了统一的设备管理相关接口,无论是设备应用开发者还是设备应用的使用者,都可以以更统一、更灵活、更标准化的方式来开展设备相关工作,不拘泥于具体形式,只要能够实现DMI接口,就能够享受KubeEdge边缘计算平台带来的云原生设备管理体验。▍2.1  DMI框架定位图 2 DMI 在 KubeEdge 架构中的定位DMI在KubeEdge架构中的定位如图2所示。DMI类似Kubernetes的CNI、CSI、CRI等接口,定义了一组EdgeCore与Mapper之间的内部API接口以及外部应用访问Mapper的统一的API接口。其中内部接口底层由gRPC结合UDS的方式来实现,外部API接口支持mqtt和REST两种接入方式。Mapper不论是何种承载、实现方式,只要实现了DMI中所定义的上行、下行数据接口,即可接入KubeEdge云原生边缘计算平台,使用云原生的方式对设备进行管理。▍2.2  DMI设备管理与数据管理DMI框架架构设计如图3所示,其中黄色线条为设备管理面数据流管理,蓝色部分为业务面数据流管理。在DMI的架构设计中,将设备的管理面数据与业务面数据进行分离。其中管理面数据主要包括设备的元数据、设备属性、配置、状态、生命周期等,其特点是相对比较稳定,创建后除状态上报外的信息更新较少,更贴近Pod类型资源所产生的数据,在保证用户可以通过云端Kubernetes API像访问Pod一样维护Device的生命周期的同时,尽量减少设备管理产生的额外数据传输开销。图 3 DMI设备管理与数据管理架构在DMI框架设计下,设备不再是单纯的数据源,而是被抽象为微服务,以云原生的方式为设备数据消费者提供数据服务。DMI框架下的设备数据访问支持多种场景,更加灵活。图3中列出了几种主要的数据访问方式,包括推数据和拉数据等,具体情况如下:1. 边缘侧应用通过REST Service访问设备数据2. 云侧应用通过REST Service访问设备数据3. Mapper通过配置REST目的地址,将数据推送到边缘侧应用4. Mapper通过配置REST目的地址,将数据推送到云侧应用5. Mapper通过配置目的地址,将数据推送到边缘侧数据库6. Mapper通过配置目的地址,将数据推送到mqtt broker7. 边缘侧应用通过mqtt broker topic订阅设备数据8. 云侧应用通过mqtt broker topic 订阅设备数据9. 边缘侧应用处理数据后将处理结果传上云▍2.3  DMI工作流程图 4 DMI设备管理工作流程示例在DMI框架下,设备管理工作的流程有一定的变化。如图4所示,在安装KubeEdge的时候,云端CloudCore会注册DeviceController组件用于监听Device和DeviceModel的CRD资源。DeviceController中存在两个模块,Downstream Controller和Upstream Controller,其中Downstream Controller用于监听云端的Device、DeviceModel事件,并通过Cloudhub下发至边缘,Upstream Controller用于接收从Cloudhub转发来的EdgeHub上报的Device状态和消息,并更新Kubernetes中的Device状态。在边缘侧,Mapper初始化的时候,需要调用DMI中的Mapper注册接口,将Mapper的相关信息注册至Device Manager,并接收接口返回的已下发至该节点的且协议匹配的设备信息。EdgeHub在接收到云端下发的设备消息时,会将其转发到DeviceManager组件,DeviceManager会根据该设备的协议选择对应的Mapper驱动程序,发送创建设备的请求,并且本地数据库也会存储该设备的信息,后续Mapper会将设备孪生消息转化为设备协议格式,跟实际的物理设备进行通信。三、DMI接口定义▍3.1 DMI 接口分类DMI接口实现了EdgeCore与Mapper之间的通信,支持REST和mqtt的通信方式,并以标准化的形式呈现,降低了Mapper开发、适配难度。在数据访问方面,DMI可以实现边缘侧和云侧的应用都可以通过REST Service的方式访问设备数据。图 5 DMI接口定义如图5所示,DMI有六类接口,Mapper管理是针对边缘侧各类设备协议驱动程序,Device管理和Device数据管理对管理面和业务面进行了数据拆分,Device升级管理和Device命令管理为具有升级和命令执行功能的设备提供相关的接口,Device事件管理可以监控Mapper及其纳管的各个设备的运行状态。▍3.2 DMI 接口定义示例图 6 DMI设备管理部分接口定义示例如图6所示,为DMI设备管理部分接口定义,v1版本以gRPC proto的方式定义,可使用make dmi命令创建对应的gRPC-go代码。 ▍3.3  DMI 设备相关 CRD 定义如图7所示,是DMI设备相关CRD定义,主要分为Device和DeviceModel。其中DeviceModel与设备型号是一一对应的关系,代表同一类设备型号的共有属性,主要包含设备产生数据属性Properties和设备支持命令属性Commands。Device为设备实例,与真实的物理设备为一对一的关系,每个DeviceModel可以对应统一型号的多个Device实例。Device类型资源主要包含设备型号对应关系信息、设备协议配置信息、设备部署节点信息、设备状态信息以及设备数据Property采集配置信息。图 7 DMI 设备相关 CRD 定义 四、发布计划  四、发布计划DMI发布计划分为三个版本,Alpha版本提供设备管理相关功能实现,以及提供一个支持DMI接口的Mapper Demo。Beta版本支持设备命令管理、设备升级管理以及设备数据管理的能力,此外还会对接第三方平台,并提供相关对接Demo。GA版本会对多平台、多协议进行对接支持,另外会把设备安全以及事件管理的功能补全。图 8 DMI发布计划目前 KubeEdge Device IoT SIG 专注于第一阶段的设备管理和 Mapper Demo 的开发工作。欢迎大家通过下方联系方式联系我们,一起参与到方案设计和特性开发的工作当中本文作者:华为云 赵然 ;DaoCloud 道客 王梓龙附:KubeEdge社区贡献和技术交流地址网站: https://kubeedge.ioGithub地址: cid:link_1地址: https://kubeedge.slack.com邮件列表: https://groups.google.com/forum/#!forum/kubeedge每周社区例会: https://zoom.us/j/4167237304Twitter: https://twitter.com/KubeEdge文档地址: https://docs.kubeedge.io/en/latest/
  • [虚拟化] 【华为云手机】【robox】robox默认的android 版本从7.1切换9.0,原来的转码程序需要升级吗?
    【功能模块】华为鲲鹏920 Robox【操作步骤&问题现象】1、将robox 搭配的安卓7自己升级到安卓9,请问下,转码程序需要升级吗?【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] 业界首个《云原生数据库白皮书》正式发布
    8月18日,华为云TechWave云原生数据库峰会在深圳举办。华为云与中国信通院云计算与大数据研究所共同发布了业界首个《云原生数据库白皮书》,梳理云原生数据库全流程概念及方法。华为云还与沃趣科技、明源云发布基于华为云云原生数据库GaussDB的联合解决方案,助力客户激活数据价值。会上,华为云CTO张宇昕表示:“数据库经历了线下部署和云化部署阶段,进入到云原生时代,云原生数据库已成为云上数据库使用的标准范式。华为云GaussDB践行云原生思维,将围绕Serverless、Regionless、Modeless三大方向构建核心能力,实现极致弹性、全域可用和极简体验,以满足企业上云和智能升级对时效性、可用性、混合负载等方面的诉求,打造企业核心业务云化的智能数据基座。1、云原生数据库持续演进 支撑客户随时、随地、随心使用如今,企业数字化已经进入深水区,业务数据总量呈现爆发式增长,新业务、新场景对数据库的时效性、可用性、混合负载以及性价比等提出了新的挑战。中国信通院云计算与大数据研究所副所长魏凯表示:“为应对上述挑战,数据库技术正朝着降低成本提升易用性、保障数据安全可信、提升功能增强性能、满足新兴业务需求四大目标演进,云原生数据库则是数据库技术发展的主要方向之一。”云原生数据库是为云架构而设计和构建的数据库,具备更高的扩展性,支持多租户、分布式部署等能力。张宇昕指出:“云原生数据库Serverless的特性增强了弹性、降低了成本,Regionless特性提高了可用性和扩展性,而Modeless特性提升了易用性和效率,在新场景和新应用中能够支撑企业业务的高效运转。Serverless让资源极致弹性传统的烟囱式建设模式会导致响应慢、资源利用率低、系统能力缺乏弹性等问题,难以应对业务突发情况及满足业务快速上线需求。华为云云原生数据库GaussDB具备存算分离、资源池化能力,能够提供多维度的弹性服务,将资源弹性速度从分钟级缩短至秒级,随时响应业务需求。Regionless让数据库全域可用随着出海趋势的到来,中国企业正蓄势跳跃到一个全新发展阶段,跨区域访问和7*24小时线上化成常态。在该背景下,客户存在时延高、体验差、投入成本大等问题,且数据安全与业务连续性面临挑战。华为云云原生数据库GaussDB支持跨AZ、跨Region的全球部署,业务可以在任意地方进行接入和访问,同时带来跨地域的高可用。Modeless带来数据库极简体验传统的数据库只能支持单一负载(TP 或者AP)或者单一模式(KV、文档、时序、宽表等),难以做到一体化的数据处理分析,在线化、实时化地发挥数据价值。华为云云原生数据库GaussDB分别采用HTAP和多模数据库技术,一个入口处理多样负载、一个入口处理多种数据类型,实现一站式处理,业务接入效率可从数月缩短至数天。华为云数据库服务产品部总经理苏光牛表示:“云原生数据库能够让客户更高效地使用数据库,从而构建起敏捷智能的企业数字化业务。特别是进入云原生2.0时代,新应用、新场景驱动数据库实现三大转变,即从以资源为中心到以应用为中心、从以地域为中心到以流量为中心、从以负载为中心到以数据为中心。云原生数据库与生俱来的优势与特征,促使越来越多的用户更加坚定地选择云原生数据库。”为加速企业拥抱云原生数据库,华为云与中国信通院云计算与大数据研究所联合撰写《云原生数据库白皮书》,系统阐述了云原生数据库的发展趋势与现状,从云原生数据库应用场景、技术架构、关键技术以及不同场景下的生产实践,详细介绍了云原生数据库的技术模式,并结合当前应用现状及问题,指明未来云原生数据库的技术方向,力求梳理云原生数据库全流程概念及方法。2、联合生态伙伴发布创新解决方案 让云原生数据库走进千行百业目前华为云已与80多家数据库领域的ISV建立合作关系。华为云与沃趣科技联合打造的QFusion平台在能源、机场等多个行业为客户创造价值。华为云与明源云联合打造的行业ERP解决方案,以数据库为抓手,盘活数据资产,让数据成为血液流动,加速不动产工程数字化。在落地实践中,华为云云原生数据库GaussDB已在2500多家客户规模商用,覆盖金融、政企、游戏、互联网、制造、电商等行业。在游戏行业,华为云为迷你创想成本降低60%,数据库承载量提升3倍,轻松应对1亿多月活;在音视频行业,华为云凭借超高性能和极致弹性能力,提升了多多视频用户的观看体验,为2.6亿用户打开新视界;在互联网行业中,华为云高效支撑华为终端7.3亿月活用户的日常使用,万亿级数据记录,百万级QPS,数据库资源与运维成本整体下降30%。数字化转型是一项复杂的长期工程,不仅需要多方技术力量的配合,更需要大胆创新。华为云践行“一切皆服务”的理念,持续深耕数据库技术和解决方案创新,推动更多企业安心上云、轻松用云,为企业数字化转型提供无限可能。
  • [技术干货] 云原生数据库会是用户们的真命天子么?
    过去五十年里,数据库产品形态经历漫长的变迁与更迭。从大型机集成、封闭的数据库服务,到小型机时代经典的IOE数据库架构,再到互联网带来的MySQL开源数据库浪潮,直至云计算兴起开启了云数据库的时代。究其原因,数据库的发展始终与用户需求变迁紧密相关。如今,云原生数据库又脱颖而出,不仅成为AWS、华为云等一众厂商们力推的数据库发展方向,更有望书写数据库市场的新格局。从云数据库到云原生数据库,其中产生了哪些关键变化?为何数据库厂商们纷纷瞄准云原生数据库?云原生数据库会是用户们的真命天子么?面对种种疑问,华为云数据库服务产品CTO庄乾锋直言:“从用户商业应用需求的变化角度看,云原生数据库会成为用户必然的选择。”01云原生数据库为何备受关注要了解云原生数据库为何备受关注,首先需要知道云原生近年来巨大的影响力。云原生,被认为是以容器、微服务和DevOps等技术为基础而建立的一套云技术产品体系,可以充分发挥云计算弹性、分布式等优势,实现快速部署、按需伸缩和灵活交付。可以说,云原生被认为是云计算最重要的发展方向,也是企业数字化转型和上云的必经之路。如今,云原生技术已从单一容器技术发展到庞大的全栈化云原生技术体系。以CNCF社区(云原生计算基金会)为例,经过六年发展,其已经囊括了数据库、中间件等20多类的技术群。那么,从云数据库到云原生数据库,数据库到底有哪些不同?对此,庄乾锋表示道,“云原生数据库不再是简单的资源供给,而是在架构和技术上能感知应用特征。云原生数据库的一切设计围绕用户应用需求出发,目标是让应用能更智能、更高效地使用数据库。”事实上,云数据库更像是传统数据库按照云模式来提供的数据库服务,存在诸如存储空间浪费、系统性能有限、业务应用受限等缺点,并且这些缺点往往会在当前新的业务场景中得到放大。以保险行业为例,随着互联网保险的兴起,保险公司的业务迅速从线下转向线上,业务场景走向规模化、碎片化和实时化,保险公司业务随时需要经受考验,“水滴筹的一个热点事件,可能就会瞬间给保险公司巨大的业务量。因此,从商业上考虑,用户也在逼着自己走向云原生数据库。”随着企业上云成为大势所趋,各大云服务商们最早意识到云原生数据库的重要性,并且近年来纷纷推出相应的云原生数据库服务。其中,中国各大云服务商在市场中颇为抢眼,其中华为云又尤为表现突出。早在2019年,华为云就推出了云原生数据库GaussDB for MySQL,并且进行多项技术变革,使之成为市场的优秀代表。从2020年开始,华为云结合自身的经验总结与行业实践,又提出了云原生2.0理念,从理念层面、技术层面来推动包括云原生数据库在内的云原生服务在传统行业落地。据悉,针对用户在电商秒杀大促、爆款游戏、政务核心业务、实时供应链扥新业务场景带来的各种诉求,华为云云原生数据库GaussDB再次进行架构升级,以满足各行各业数字化转型的新需求。02架构升级带来什么如今,业务应用的变化一日千里。以大促为例,几年前还是互联网巨头的专属,如今则成为零售、垂直媒体、银行等客户的核心业务,这些业务不可预测性强、极端流量峰值高,相比于互联网巨头丰富的资源与人才配置,很多传统企业并无太多经验,面对时效性、可用性、混合负载、成本等一系列新挑战而“捉襟见肘”。在庄乾锋看来,很多新的业务跟大促类似,真正从需求的角度推动数据库的转变,具体而言就是以资源为中心到应用为中心、从地域为中心到流量为中心,以及从负载为中心到数据为中心,“云原生数据库一能够带来极致弹性,让用户按需使用,二则安全可靠和易可扩展,保障业务规模化的安全运行;三则是降低企业门槛,应用在架构设计、业务处理与切换等方面透明,满足企业多元化需求。”不仅如此,华为云GaussDB在几大关键技术进行了迭代升级,包括NDPQ、ALT、HTAP和多模架构等在业界中具备核心竞争力的技术,全面满足用户各种应用场景的需求。首先是NDPQ(Near-Data Parallel Query)近数据并行查询。云原生数据库的存算分离架构随着业务规模的提升,计算与存储节点通过网络通信,往往会存在网络带宽和延迟的制约。为此,华为云GaussDB NDPQ采用近数据计算下推的设计,避免在分布式系统中移动数据和大量网络流量的产生,并让数据处理在其所存储的地方进行,极大节约了网络带宽资源。“目前NDPQ是华为云数据库所独有的特性,通过近数据计算下推+并行查询,不仅可以将数据查询性能发挥到极致,更可以极大提升数据库的资源利用率。”庄乾锋补充道。其次是ALT(应用无损透明倒换)。在数据库日常进行的主备倒换、小版本升级和规格变更时,可能会造成实际业务中用户会话中断,对于业务连续性造成一定的影响,而ALT则以用户连接为颗粒度,当用户进行主备切换、小版本升级或者规格变更时,系统可以打包用户的会话上下文状态,在达到安全的事务边界后,确保会话上下文状态被完整重放至目标节点并与原会话一一关联保证业务持续性,不受各种操作的影响。第三则是HTAP。众所周知,随着数据驱动型场景的井喷,数据产生方式、规模、速度与过去大不同,数据消费的人群、规模和场景丰富场景迅速增加,数据库OLTP场景和OLAP场景开始加速融合,也推动了数据库HTAP架构的崛起。与SAP HANA这种混合负载的内存数据库不同,新一代的HTAP架构数据库具备显著的特点就是分布式+云原生。以华为云GaussDB的HTAP架构为例,将OLAP和OLTP能力深度融合、统一入口和自动分流,达到数据准实时一致,支持各种混合负载的应用场景。庄乾锋表示:“当前HTAP存在着各种技术路线,华为云则根据当前用户实际需求,打造了HTAP架构,实现统一入口和应用透明,架构在业界云厂商中具有领先性。”最后则是多模态。当前在很多业务场景中,用户除了使用关系型数据库能力之外,还会用到诸如图数据库、时序数据库等能力,如果数据需要转换、导出,不仅容易产生安全问题,多套数据库的维护和开发还将提升成本。因此,多模数据库架构统一数据访问和维护接口,可以大幅简化运维和开发人员的工作,还能确保安全性。以华为云云原生数据库GaussDB的多模架构为例,用户既可以使用MySQL、PostgreSQL等SQL接口访问数据库,还可以使用Redis、MongoDB等NoSQL接口访问,支持KV模型、时序模型和文档存储模型等,用户可以自由地在不同的云数据库之间迁移,满足业务的多样性需求和数据的自由流动。“华为云希望通过GaussDB架构的升级,第一、Serverless化,真正让用户实现以应用为中心,按需使用,TCO更低;第二、Regionless化,通过Global Database、全域分层式索引、全域一致性集群等技术,帮助数据自动流动,满足用户因为业务地域性发展的需求,业务流量在哪里,GaussDB就能部署在哪里,迅速响应客户的业务需求;第三、Modeless化,简化业务的复杂度,通过一个入口,实现应用的透明,以及数据自由流动。”庄乾锋总结道。03全栈技术创新华为云数据库后劲十足放眼全球,在开源和云的驱动下,云原生数据库正在迅速颠覆传统的数据库市场。在中国市场,数据库云化的趋势正在加速。IDC最新数据显示,2021全年中国关系型数据库市场规模达到27.7亿美元,同比增长36%;其中,公有云关系型数据库规模达15.4亿美元,同比增长49%,公有云模式占比提升至55.6%。面向未来,云原生数据库将成为市场竞争的持续焦点。Gartner 预测,到2025 年,基于云原生平台的数字化业务比例将达到95%,将带来云原生数据库市场的快速增长。面对潜力如此巨大的市场,除了华为云等云服务商之外,亦有传统老牌数据库巨头、各种初创数据库公司加入竞争之中。那么,华为云如何看待未来的市场机会,自身的竞争优势在哪里?对此,庄乾锋认为,云原生数据库将成为云上数据库使用的标准模式,华为云在从用户需求、全栈技术创新和开放生态三个角度发力,持续构筑自身的核心竞争力,引领云原生数据库市场的发展。华为云首先会持续聚焦数据库的主流生态,以用户业务需求为导向进行产品/服务的创新。“无论环境或者业务如何发展,全球用户一定会走向云原生的时代。华为云核心思路就是打造符合市场发展规律和需求的具有竞争力的云原生数据库。”另外,华为云会聚焦数据库全栈技术的创新。事实上,数据库作为三大根技术之一,与其他技术紧密联系。比如ARM服务器的兴起、处理器走向多核化、SCM新介质的兴起、AI技术的融入等,进一步要求厂商能够具备全栈技术的创新能力,打造出更加优秀的云原生数据库产品。不同于其他厂商,华为云正是业界少有的具备全栈技术能力的厂商。例如,基于内存池的HTAP是一个重要的创新方向,它需要将内存池技术和HTAP进行结合,充分发挥软硬件协同的能力,彻底解决内存池化的各种数据挑战,而华为云云原生数据库GaussDB已经在该领域走在业界的前列;又如,利用AI技术来实现数据库的自动驾驶也是业界重要的方向,华为云GaussDB融入AI技术,数据库管理智能高效,具备自动检测、自诊断、自调优和自运维等功能。第三则是开源开放,华为云携手合作伙伴实现共赢。华为云将GaussDB单机主备核心能力开源,打造openGauss开放生态,积极同时对主流开源数据库提供广泛的支持,与合作伙伴一起为客户提供创新数据库解决方案,满足用户不同场景的数据库应用需求。信通院调研数据显示,80%以上的企业认为云原生数据库是未来的发展方向。可以说,云原生数据库已经成为燎原之势,受到多个行业用户的关注和使用。面向未来,随着各行各业用户数字化转型的深入,新场景、新应用所迸发出来的新需求,将会推动云原生数据库市场持续壮大,也会驱动云原生数据库成为数据库市场的创新高地,而像华为云这种具备全栈创新能力、聚焦主流生态和用户需求导向的厂商,有望迎来更大的舞台。
总条数:356 到第
上滑加载中