本文分享自华为云社区《下一代云原生开发工具技术揭秘》,原文作者:灰灰哒。

在华为开发者大会(Cloud)上,华为云发布了基于华为云CloudIDE的智能化编码工具和云原生应用调测工具。华为云开发工具和效率首席专家、华为开发工具技术专委会主任王亚伟在主题演讲中介绍了如何基于智能化代码补全技术(SmartAssist)和微服务集群调测技术(CloudDebugger)重塑编码和微服务调测生产力。

智能AI代码补全—SmartAssist

绝大多数的开发者还是用IDE写代码,那么就一定用到代码补全功能,它是IDE最核心的技术之一。代码补全技术经历了很长时间的发展,从最开始的IDE的基础补全,其是基于IDE对编程语言语法和语义理解来实现的。随着AI的发展,很多人在探索如何借助AI技术来提升代码补全的效果这类方案大多是基于公开的代码语料库训练一个模型,当开发者进行编码的时候,这个模型主要做的事是对补全位置的代码上下文的特征进行相似度匹配,然后给出一个补全结果列表。这类方案的主要共性问题有:多符号补全的准确性不高;很多时候补全结果需要人工干预和二次加工;有时对于补全结果并不自信,体现在给开发者过多的推荐结果让其选择。

然后,王亚伟介绍了SmartAssist,它结合了深度代码分析和深度学习模型,即对开发者的本地代码进行深度分析,构成一个本地的代码模型。与此同时结合线下训练的多场景的深度学习模型,两者搭配,最后帮助开发者进行代码补全。SmartAssist理解对于当前补全位置的上下文中所有符合语法规则的结果,同时对这些结果进到我们的多场景模型进行决策和排序。因此,SmartAssist对于补全结果的可解释性和可调节性是非常好的。

SmartAssist三大核心技术

SmartAssist有三大核心技术:

  • 第一:基于内存压缩的高性能代码的索引。
  • 第二:语法树搜索算法。
  • 第三:多场景的深度学习模型。

当开发者在使用SmartAssist进行编码辅助的时候,首先补全位置的代码上下文会进行一个词相量化,然后语法树搜索算法会基于本地代码索引穷举所有可能的补全结果,然后对这些结果进行排序,过滤和填参处理,最后的候选项会结合上下文词向量进入到深度学习模型进行决策。

ColudDebugger是如何重塑微服务的调测生产力?

聊完重塑编码生产力之后,接下来王亚伟介绍了CloudDebugger如何重塑微服务集群的调测生产力。

单体架构的软件调测非常方便源自于其简单的进程模型,开发者只需要通过IDE将调试器连接到对应进程,即可进行调试。在企业应用现代化改造这样一个大背景下,单体架构的软件非常不受待见,因为应用现代化改造的第一步就是单体架构的微服务改造。试想一下,原来一个只有3个接口的单体架构软件,当解耦成10个微服务之后,就有30个接口。所以微服务调测第一大挑战,就是这些海量的接口测试用例的开发工作量巨大。第二个挑战,这些微服务之间必然有非常复杂的调用关系,而这些调用关系,需要依赖Mock,这样会带来调测的不完备。第三,多微服务之间进程并发调测,传统调试手段不可行。

接下来王亚伟用一个典型的多人多版本微服务调测的场景跟大家分享了CloudDebugger到底能给开发者带来什么价值?

在这样一个场景下,三个用户,用户1、用户2和用户3。用户1通过CloudDebugger发起了调试会话,他的调用链条是微服务A的1.0、B的1.0和D的1.0版本,用户2的调试会话的调用链是微服务A的2.0、B的2.0和D的2.0版本。用户3是在进行微服务3.0的开发,他不关心其他微服务,所以调用链是微服务A、C和微服务D的3.0版本。在这样一个复杂的场景之下,CloudDebugger能给开发者带来什么?第一,这三个用户之间的调试会话互相独立,互不干扰;言下之意,用户1的请求不会触发其他人的断点。第二所有设置断点、单步跟踪、变量查看、调用堆栈等单体软件调试的便利性CloudDebugger都支持。

除此之外,用户在调测过程中需要不断修改代码。CloudDebugger支持代码热替换功能,每次修改的增量代码,CloudDebugger可以动态的、无宕机的一键式更新到远端微服务实例。

CloudDebugger三大核心技术

CloudDebugger有三大核心技术,

第一:独立的调试适配服务,用CloudDebugger调试一个远端微服务的同时,本地的Debugger可以调试一个其它的程序,比如客户端GUI程序。

第二:智能调试消息路由可以确保多用户的多IDE实例和多个微服务实例之间调试消息的可靠和一致性传输。

第三:独创的基于命名管道的批量消息传输的机制,可以确保在租户端的Agent可以跟微服务实例之间高性能、高吞吐的消息传输。

正因为这三点,CloudDebugger可以重塑微服务的调测生产力

华为持续投入基础软件技术研究,华为云CloudIDE服务旨在“做最好用的云端IDE服务”,为云原生开发者重塑开发生产力,帮助企业数字化转型和落地华为云云原生2.0,真正实现生于云、长于云、立而不破!

戳我体验CloudIDE

点击关注,第一时间了解华为云新鲜技术~

你的开发好帮手:下一代云原生开发工具技术相关推荐

  1. 调查了 17,000 多位程序员,当前的云原生开发现状究竟如何?

    整理 | 弯月,责编 | 郭芮 头图 | CSDN 下载自东方IC 出品 | CSDN(ID:CSDNnews) 容器的标准化使用改变了软件的开发方式,我们迎来了开发运维的时代,基于云原生的开发能够帮 ...

  2. Dubbo 和 HSF 在阿里的实践:携手走向下一代云原生微服务

    欢迎关注方志朋的博客,回复"666"获面试宝典 作者 |郭浩 审校 |钰莹 Dubbo 和 HSF 都是阿里巴巴目前在使用的微服务 RPC 框架.HSF 在阿里巴巴使用更多,承接了 ...

  3. WebAssembly + Dapr = 下一代云原生运行时?

    作者 | 易立 来源 | 阿里巴巴云原生公众号 云计算已经成为了支撑数字经济发展的关键基础设施.云计算基础设施也在持续进化,从 IaaS,到容器即服务(CaaS),再到 Serverless 容器和函 ...

  4. Dubbo 3.0 - 开启下一代云原生微服务

    作者 | 郭浩(项升)  阿里巴巴经济体 RPC 框架负责人 **导读:**本文整理自作者于 2020 年云原生微服务大会上的分享<Dubbo3.0 - 开启下一代云原生微服务>,主要介绍 ...

  5. Dubbo 和 HSF 在阿里巴巴的实践:携手走向下一代云原生微服务

    简介: HSF 和 Dubbo 的融合是大势所趋.为了能更好的服务内外用户,也为了两个框架更好发展,Dubbo 3.0 和以 Dubbo 3.0 为内核适配集团内基础架构生态的 HSF 3 应运而生. ...

  6. OAM 与 KubeVela:下一代云原生应用交付和管理实践

    本篇文章是我在 "2022云原生超级英雄会" 直播中分享的<OAM 与 KubeVela:下一代云原生应用交付和管理实践>演讲内容整理. 演讲视频 在业务不断扩张的当下 ...

  7. 下一代云原生应用交付会怎样发展?KubeVela帮大忙。

    KubeVela是基于Kubernetes与OAM技术构建的,一个简单易用且高度可扩展的应用管理平台与核心引擎.阿里云高级工程师董天欣在"2022云原生超级英雄会"直播中分享了OA ...

  8. 致力打造下一代云原生分布式消息系统,StreamNative 完成源码资本数百万美元 Pre-A 轮融资,红杉中国种子基金跟投...

    点击上方"开源社"关注我们 | 作者:StreamNative | 转载自:StreamNative | 编辑:贺鑫 | 设计:王福政 | 责编:陈梅梅 Apache 顶级项目 P ...

  9. Nocalhost: 云原生开发新体验

    文章目录 1. 云原生场景下的开发痛点 本地部署 VS 集群部署 2. 目前主流的云原生开发方式 手动打包推送镜像 CI/CD 流水线 流量转发 在容器里进行开发 3. Nocalhost 初体验 4 ...

最新文章

  1. Nginx配置文件nginx.conf详解(转)
  2. [EntLib]微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—上篇...
  3. Android init.rc文件解析过程详解(三)
  4. MySQL- SQL执行计划 统计SQL执行每阶段的耗时
  5. python 享元模式_python 设计模式之享元(Flyweight)模式
  6. Find Minimum in Rotated Sorted Array
  7. 我10年来的学习和生活
  8. Java面试题:高并发环境下,jdk7 HashMap可能出现的致命问题。注意:是在jdk7与及以下版本
  9. [51单片机] 定时器3-计时示例
  10. CUDA C编程权威指南 第八章 多GPU编程
  11. 高效 遍历 算法_一文学会回溯算法解题技巧
  12. 各计算机系统用传输介质互连,计算机网络技术与应用.doc
  13. 绝地求生最新服务器维护,绝地求生更新维护公告最新:3月10日吃鸡停机维护多久 几点开始?...
  14. 很搞笑的一个病毒--还能提问 “死亡问答”(Sola)宅男病毒
  15. 德语区国家的摄影测量与遥感
  16. mysql alter table if exists_MySQL中的alter table命令的基本使用方法及提速优化
  17. eclipse 的preferences下没有server
  18. 16进制颜色代码对照表
  19. 基于python多线程和Scrapy爬取链家网房价成交信息
  20. 为什么用IE浏览器的人越来越少?推荐这一款桌面浏览器

热门文章

  1. 运行Java web时遇到的错误
  2. es6 async函数的异步迭代器
  3. Linux Ubuntu下Jupyter Notebook的安装
  4. 连续系统PID及其离散化 位置式PID以及增量式PID
  5. cleanmymac3.9.6_Android Studio 3.6 特征大揭秘
  6. 注意力机制可视化_最强NLP模型BERT可视化学习
  7. linux下mysql5.7的安装教程_linux下mysql 5.7.18安装教程 邯郸
  8. 时域信号matlab实现
  9. Unity 内嵌网页
  10. 真正的代码宝库:Google Code Search