SmartIDE v0.1.18 (cli build 3538) 已经发布,在过去的Sprint 18中,我们集中精力推进对 k8s 远程工作区 的支持,同时继续扩展SmartIDE对不同技术栈的支持,我们适配了针对分布式应用运行时Dapr以及数据科学计算分析工具Juypter的环境支持。在这个过程中,我们探索了VM-Like-Container的能力,为提供开发者优化的容器环境又迈进了一步。最后,我SmartIDE插件市场也迎来了它的第一个开源社区支持者,阿里蚂蚁开源的国产IDE OpenSumi已经将 SmartIDE作为自己的默认插件源。
2022.05.19

阿里蚂蚁OpenSumi采用SmartIDE插件市场提速10倍

在 Sprint 16中,我们开始支持阿里蚂蚁开源的国产IDE开发框架 OpenSumi,并且在 Sprint 17 发布了 基于 Eclipse OpenVSX Registry 的 SmartIDE插件市场。OpenSumi的开发团队在测试了 SmartIDE插件市场之后发现速度提升可以达到10倍以上,并将其设置为OpenSumi内默认的插件市场来源。

下图来自:https://github.com/opensumi/core/pull/1045 ,是 OpenSumi 团队的测试结果。

SmartIDE插件市场 是我们针对国内使用类 VSCode IDE 的开发者提供的开源插件市场镜像服务,我们将 open-vsx.org 的国外站点通过 Github Action 自动同步到了部署在国内的站点中,经我们自己测试速度提升2-5倍。此次经阿里蚂蚁OpenSumi团队的测试结果提升10倍的原因可能是因为他们采用了批量插件安装的方式。这个结果对于国内使用类 VSCode IDE 的团队来说是一个好消息,说明我们提供的 SmartIDE插件市场 开始发挥它应有的作用了。

在 Sprint 18 中,我们还对插件同步机制进行了改进,增加了按周期自动同步和历史版本同步机制,这样就可以确保国内的小伙伴及时获取到最新的VSCode插件。

相关修改可以参考 https://github.com/SmartIDE/eclipse-openvsx/issues/2

以上PR已经在2022年5月18日合并进入OpenSumi的主分支,安装 OpenSumi 的最新版就已经可以体验插件极速安装的快感了。

Dapr 微服务开发环境支持 VM-Like-Container验证通过

Dapr 是微软主导的云原生开源项目,2019年10月首次发布,到正式发布 V1.0 版本的不到一年的时间内,github star 数达到了 1.2万(现在已经超过1.7万星),超过同期的 kubernetes、istio、knative 等,发展势头迅猛,业界关注度非常高。

Dapr 这个词是是 「Distributed Application runtime」的首字母缩写,非常精炼的解释了 dapr 是什么:dapr 是一个为应用提供分布式能力的运行时。

Dapr官网 https://dapr.io

SmartIDE 团队 Sprint14 开源了包括 .net6 环境在内的开发者镜像相关代码,在那个时间点对于 .net6 技术栈的支持已经完整。这个迭代中,我们针对 .net6 的开发者镜像进行了改进,增加了 VM-Like-Container 的能力,以便可以完美支持 dapr 环境的搭建和调试。

所谓 VM-Like-Container,其实就是将容器当成虚拟机来使用。大家可能会觉得有点奇怪,既然我们都容器化了,为什么还要开倒车,回到VM呢?这个其实和开发者的需求有关,一般的容器都是为了运维环境优化,并没有考虑开发者的诉求,或者说这两者的诉求的相互冲突的,运维要的是稳定,因此极尽所能剥夺一切容器内不必要组件,而开发者需要灵活,需要能够在容器内按需构建自己的所需要的各种组件。比较典型的场景就是在容器中运行docker,也即是大家所说的 DIND (Docker in Docker) 的场景。对于开发者来说,确保应用可以用容器发布的最好方式就是在自己的开发环境中可以直接执行 docker build 和 docker run,这样才能确保自己所交付的代码是经过容器化环境测试的,不至于等到流水线打包并部署完成以后才发现自己的代码其实在容器中无法正确运行。

对于开发环境而言,提供内置的Docker环境意味这开发者有更加灵活的能力构建自己专属的定制化环境,比如运行各种类型的中间件、同时运行和调试应用的多个版本,临时组网进行测试等等。对于Dapr而言,dapr的开发工具需要使用docker环境来模拟微服务边车 (sidecar) 的很多能力,比如最常见的服务发现和消息队列,都需要dapr运行一些中间件来提供相关的服务。以下就是在 SmartIDE 的 .net6(vscode) 开发环境中,运行一个机遇dapr的示例应用的截图:

示例代码库地址:https://github.com/SmartIDE/sample-dapr-traffic-control

在这个示例中,我们使用了 dapr init 来初始化 dapr 开发环境,运行 dapr 的基础服务,然后启动 Mosquitto 作为 MQTT brokerRabbitMQ 作为消息队列以及其他的基础服务。应用本身需要至少4个微服务组件才能正常工作:

  • TrafficControlService 是交通控制服务,也是主服务,其业务逻辑是根据公路上的2个固定位置摄像头反馈的数据,计算车辆通过摄像头的车速,以便判断是否存在超速行为。
  • FineCollectionService 是罚单处理服务,根据 TrafficControlService 发送过来的车牌数据,查询车辆注册数据库(VehicleRegistrationService)获取联系人信息,并发送邮件
  • VehicleRegistrationService 是车辆注册数据库,提供车辆信息查询,可以通过车牌号码获取车主信息,比如邮件地址。
  • Simulation/VisualSimuation 是一个模拟器应用,用于模拟车辆行为,以便可以测试以上服务的工作情况,在上图中展示的是 VisualSimulation 的画面。

下面这个视频完整演示了如何使用 SmartIDE开发调试 经典的Dapr示例 dapr-traffice-control,相关的启动命令如下

Copy

smartide start https://github.com/SmartIDE/sample-dapr-traffic-control
 
 

Jupyter Notebook 环境支持

远程工作区 的一个重要优势就是可以帮助开发者更好的利用远程主机的强大算力和数据处理能力,在这个领域中 Jupyter Notebook 无疑是非常典型的应用类型。我们在 Sprint 18 中增加了对 Jupyter Notebook 的远程工作区支持,现在开发者可以使用一个简单的指令就可以启动预装 Jupyter Notebook 的远程工作区,并且通过 --host 参数将这个 工作区漫游 到任意主机或者k8s环境中。相关指令如下:

Copy

## 启动使用 Jupyter Notebook 的数据科学处理开发者容器
smartide new anaconda -t jupyter
## 在远程主机上启动
### 首先将自己的主机添加到 SmartIDE工具中,并获取hostId
smartide host add <Ip-Address> --username <user> --password <pwd>
### 使用 --host 参数再次启动
smartide new --host <hostId> anaconda -t jupyter

使用以上方式启动的 Jupyter Notebook 环境还会内置一个 VSCode WebIDE,这样可以利用内置的Git管理工具将制作好的 Notebook 提交到Git代码仓库中进行版本管理。 其他开发者就可以使用 smartide start <代码库地址> 指令一键将同样的环境漫游到自己的本地开发机,主机或者k8s上。

为了让大家更容易体验,我们为大家提供了一个预置了示例 Notebook 的代码库,这个示例中内置了一个新冠疫情数据分析Notebook。

示例地址 https://github.com/SmartIDE/sample-anaconda-jupyter

使用这个 Notebook 对上海和北京最近的疫情数据的分析结果如下:

备注:以上数据分析仅为展示SmartIDE的产品特性,数据处理的非常粗糙。欢迎对 Juypter Notebook 开发有兴趣的小伙伴提交PR改进我们的分析算法。

大家可以使用以下指令一键启动上面这个示例

Copy

## 在本地开发机上启动
smartide start https://github.com/SmartIDE/sample-anaconda-jupyter.git
## 在远程主机上启动
smartide start --host <hostId> https://github.com/SmartIDE/sample-anaconda-jupyter.git

启动以后的效果如下,图中:

  1. SmartIDE简化指令方式 se = smartide
  2. 内置在远程工作区中的 VSCode WebIDE,这个远程工作区中还预置了 Python 环境,开发者可以直接在VSCode中使用Python语言进行编程。
  3. 内置在工作区中的 Jupyter Notebook,加载了 “新冠疫情分析” 示例数据,这个 Notebook 通过读取微信疫情小程序的API接口获取实时数据,并利用图表展示了上海过去60天疫情变化趋势

在适配 Jupyter Notebook 的过程中,SmartIDE没有修改一行产品代码,完全利用我们所提供的 IDE配置文件 和 开发者镜像模版库 的能力完成。SmartIDE作为一款面向企业的B端产品,对于可扩展性能力的要求是根植于产品的设计核心。利用这种能力,企业在部署了SmartIDE之后无需进行二次开发就可以自助适配各种开发语言,工具和环境,大幅降低企业采纳远程工作区的技术门槛和实施成本。

下面的视频展示了在 SmartIDE 中使用 Jupyter Notebook 分析上海和北京疫情数据的过程:

https://www.bilibili.com/video/BV1mZ4y1t7fj?spm_id_from=333.999.0.0

CLI k8s 模式支持(特性预览)

SmartIDE CLI中已经增加了k8s相关指令,用户现在可以使用 smartide start --k8s 来完成在k8s集群中启动 远程工作区 的操作,基于 计算器示例应用 的启动命令如下:

Copy

smartide start --k8s SmartIDEAKS --namespace default --repourl https://github.com/idcf-boat-house/boathouse-calculator.git --filepath .ide/k8s.ide.yaml

使用这个指令之前用户需要完成2个准备工作:

  1. 在k8s集群上安装 smartide-file-storageclass,这个配置的目的是为了能够让 SmartIDE 可以支持各种类型的k8s服务。Storage Class (存储类定义)是k8s上适配不同提供商的底层存储driver而提供了一层隔离机制,在远程工作区场景下,我们需要允许工作区中的多个开发容器共享的访问同一份代码/配置/环境变量/工具等资源,因此需要使用具备 ReadWriteMany 能力的存储 driver。
  2. 在本地的 .kube 目录中导入你的k8s集群的 kube-config 文件,这个步骤是为了允许 SmartIDE CLI 可以连接k8s进行操作的权限。

以下是导入 storageclass 的相关指令,当前只提供Azure微软云的配置文件,使用其他云平台或者自建k8s平台的小伙伴可以自行查找适合自己平台的StorageClass配置文件,后续我们也会统一提供。

Copy

kubectl apply -f https://smartidedl.blob.core.chinacloudapi.cn/kubectl/resources/smartide-file-storageclass.yaml

另外,如果使用 azure-cli,可以直接使用以下指令快速创建k8s集群(测试用途)并获取集群的 kube-config 配置

Copy

az login
az account set -s <订阅ID>
az group create --name <资源组名称> --location southeastasia
az aks create -g <资源组名称> -n <集群名称> --location southeastasia --node-vm-size Standard_DS2_v2 --node-count 1 --disable-rbac --generate-ssh-keys
az aks get-credentials -g <资源组名称> -n <集群名称>

CLI k8s 模式现在已经支持一键启动工作区和清除工作区操作,我们正在将这个cli能力集成到server中;在后续的迭代中大家会陆续获得 server k8s 模式的更新。

社区早鸟计划

如果你对云原生开发环境感兴趣,请加入我们的 SmartIDE社区早鸟计划

谢谢您对SmartIDE的关注,让我们一起成为云原生时代的 Smart开发者, 享受 开发从未如此简单 的快乐。

SmartIDE v0.1.18 已经发布 - 助力阿里国产IDE OpenSumi 插件安装提速10倍、Dapr和Jupyter支持、CLI k8s支持的更多相关文章

  1. SmartIDE v0.1.17 已经发布 - 模版库远程模式和插件市场公测

    SmartIDE v0.1.17 已经发布,本次同步更新了CLI (Build 3332) 的稳定版通道和Server (Build 3333) 生产环境(内测中).请参考对应的 安装说明 获取最新版 ...

  2. SmartIDE v0.1.16 已经发布 - 支持阿里&蚂蚁开源的国产 IDE OpenSumi

    SmartIDE v0.1.16 (Build 3137) 已经在2022年4月19日发布到稳定版通道,我们在这个版本中增加了阿里和蚂蚁发布的国产IDE OpenSumi的支持,以及其他一些改进.Sm ...

  3. 【免费公测】阿里云SSD云盘,不仅仅是IO提速10倍

    今天很高兴为大家介绍最新的ECS存储服务:SSD云盘. SSD云盘基于全SSD存储介质.利用阿里云飞天分布式存储技术,提供数据可靠性99.999%的高性能存储:该产品具备以下特点: l  高性能:单个 ...

  4. SmartIDE v0.1.19 - 码云(Gitee)最有价值开源项目奖项、工作区策略、类虚拟机镜像VMLC、Server安装手册

    SmartIDE v0.1.19 (CLI Build 3909, Server Build 3890) 已经发布,本次Sprint主要完成2个重要特性,工作区策略和类虚拟机容器(VM Like Co ...

  5. Docker将镜像文件发布到阿里云

    一.创建新镜像文件 1.创建容器并在容器内创建一个文件夹 在容器内创建一个新文件主要是为了代表这个容器非镜像文件直接创建的容器,而是通过自定义在容器内创建了属于自己的文件 2.提交容器副本使之成为一个 ...

  6. Oracle GoldenGate 18.1发布

    软件下载地址:https://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html 文档下载地址: https:/ ...

  7. 阿里云Centos7使用yum安装MySQL5.6的正确姿势

    阿里云Centos7使用yum安装MySQL5.6 阿里云Centos7使用yum安装MySQL5.6 前言:由于某些不可抗力,我要在自己的阿里云服务器上搭建hadoop+hive+mysql+tom ...

  8. 10倍处理能力 阿里云推云上首个支持12层4K非编NAS产品

    5月23日,阿里云在2017云栖大会·成都峰会上正式推出了云上首个支持广电级非编的文件存储产品------NAS Plus,作为阿里云文件存储NAS的升级款,NAS Plus提供高达200Gbps的吞 ...

  9. 数据库周刊31丨openGauss 正式开源;7月数据库排行榜发布;浙江移动国产数据库AntDB迁移;oracle ADG跨版本搭建;PG解决社保问题;mysqlbinlog解析……

    摘要:墨天轮数据库周刊第31期发布啦,每周1次推送本周数据库相关热门资讯.精选文章.干货文档. 热门资讯 1.openGauss 正式开源,华为公开发布源代码[摘要]6月1日,华为正式宣布开源数据库能 ...

随机推荐

  1. HashMap和ConcurrentHashMap的原理和实现

    一.线程不安全的HashMap 多线程环境下,使用HashMap进行put操作会引起死循环(jdk1.7 Entry链表形成环形数据结构),导致CPU利用率接近100%. 结构:数组 table[]+ ...

  2. 小程序容器技术,App热更新与敏捷开发新方案

    作为追求代码洁癖的软件工程师,我们对"紧耦合"的技术实现可以说是深恶痛绝.要解决当前企业移动端App日益沉重.难以真正迭代.投入产出比低的问题,首先在技术架构上要实现真正的&quo ...

  3. MySQL存储引擎、基础数据类型、约束条件

    MySQL存储引擎 存储引擎 # 存储引擎可以堪称是处理数据的不同方式 # 查看存储引擎的方式 show engines; # 需要掌握的四个存储引擎 MyISAM MySQL5.5之前的默认的存储引 ...

  4. Ant Design Pro V5 与 IdentityServer 实现 Password 模式的登录

    最近处于休息状态,想趁着休息时间,为自己做一个后台. 后端框架选用了 Abp.之前公司使用了一些自研的框架,但由于人力资源有限,后期框架的升级及维护都是比较耗时,这次干脆直接使用Abp,即省心又能快速 ...

  5. Dubbo-admin启动问题

    在Github上down了Dubbo-admin的最新文件,使用cmd命令打包完成后启动出现了问题,输出找不到2181端口的error. 百度只查询到是Dubbo-admin配置中的Zookeeper ...

  6. 小程序 canvas 文字加粗

    在fillText前设置font属性 ctx.font = 'normal bold 18px sans-serif'; 但是有继承问题: 解决方法 - 1: 先绘制字体不加粗部分, 再绘制需要加粗部 ...

  7. Java第十五周作业

    Cola公司的雇员分为以下若干类:(知识点:多态) [必做题]• 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工的生日月份.方法:getSalary(int mont ...

  8. nginx wordpress安装

    BEGIN; 最近在弄wordpress,然后环境是centOS6.3,使用nginx做web服务器. 经过一系列安装,nginx.mysql.php都安装成功了,然后在配置nginx访问wordpr ...

  9. 这3个免费PPT素材网站,一定要收藏

    制作PPT,这三个网站的素材绝对够用! 1.象刀设计 https://www.101dao.com 象刀设计里面有非常多PPT模板,这个网站也是主打PPT素材. 分类很清晰,需要什么风格的素材能快速找 ...

  10. JavaWeb和WebGIS学习笔记(六)——使用ArcGIS for Server发布地图服务

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...