阿里妹导读:工欲善其事,必先利其器。从人工到自动化,从重复到创新,信息技术不断演进,开发者工具也在发展。开发效率低下往往是忽略了工具的使用,正确地使用开发者工具,可以让开发效率获得倍速提升。
阿里巴巴将自身在业务场景下的技术沉淀,通过开源、云上实现或工具等形式对外开放,今天阿里妹就对阿里巴巴内部沉淀下来的开发者工具和资源做了一轮盘点,希望能帮助开发者们提高开发效率、更优雅地写代码。
一、镜像站
稳定高速种类全
镜像站对开中国开发者来说可谓必备利器,受国际网络出口带宽的影响,大多数开源软件官网的速度慢,稳定性不足。作为国内最富盛名的镜像站之一,阿里巴巴镜像站利用其在云服务上的优势,提供快速、稳定的镜像分发服务。目前主要包括OPSX,NPM(NodeJS),composer(PHP)和goproxy。
镜像内容方面,以OPSX为例,目前已覆盖了主流操作系统 CentOS,Ubuntu,Fedora,Gentoo,Debian,FreeBSD和对做 docker 镜像帮助很大的Alpine。
编程语言覆盖了Python,Ruby,Perl,R。
软件方面除了 Apache 下的所有知名软件 Hadoop,Hive,Cassdra,Spark 都有覆盖,还包括 docker,zabbix,ceph,mongodb,mariadb 也都有,基本上主流软件更新都可以在这个镜像站搞定。如果你对镜像有需求,阿里妹墙裂推荐哦。
二、开源工具
助力开发,全面实用
★ Alibaba Dragonwell
Alibaba Dragonwell 是阿里巴巴内部 OpenJDK定制版 AJDK 的开源版本, AJDK 为在线电商,金融,物流做了结合业务场景的优化,运行在超大规模的,100,000+ 服务器的阿里巴巴数据中心。Alibaba Dragonwell 与 Java SE标准兼容,目前提供JDK8和11两个长期支持(LTS)版。
2019年6月我们发布了Dragonwell8的正式版,您可以通过简单的两步安装Dragonwell8产品:在阿里云开发者社区工具平台-开源工具找到Alibaba Dragonwell的链接,点击进入github地址后选择下载。
你也可以通过阿里云yum源或者Dragonwell8 Docker镜像来使用,详情请参考:Dragonwell8Wiki:https://github.com/alibaba/dragonwell8/wiki
Alibaba Dragonwell8 提供了两个在阿里巴巴的生产环境中进行过广泛验证的特性:JWarmUp 和 JavaFlight Recorder。
JWarmUp 的原理如下图所示:
一个典型的应用场景是当应用需要发布新版本的时候:
- 首先 JWarmUp 在 Beta 环境(或者有着和生产环境类似流量的其他场景)的单台机器上短时间执行 Java 应用,并记录、收集这段时间里面 JIT 编译器所做动作的一些元数据。
- 然后,会把这些元数据复制到生产环境的每一台包含了新版本代码的机器/容器里面。
- 最后,在生产环境机器中通过 JWarmUp 参数加载 beta 环境生成的元数据,来指导生产环境的机器在启动应用的过程中就完成 JIT 预热。
这样当用户请求进入的时候,应用就会处于性能最高的峰值状态。
JFR(Java Flight Recorder)是JVM 内置的基于事件的性能分析特性,这是 Oracle JDK7u4 版本开始提供的商业特性,2018 年的时候在 JDK11 上开源了这个特性,但是一直没有针对 JDK8 版本的支持。
阿里巴巴和 RedHat、Azul、Amazon 等公司一起合作尝试把这个特性移植回 JDK8上,不过该 patch 暂时还没有合并回 OpenJDK8u仓库,我们在 Alibaba Dragonwell 8 中提供了 Alibaba 移植的 JFR 版本,用于帮助用户提前获取这方面的支持。
JFR 的用法很简单,用户使用命令行参数或者 jcmd 命令控制 HotSpot 输出性能数据到文件中,然后就能使用开源的 jmc 工具在图形界面中打开、分析生成的数据文件了。
2019年12月,阿里巴巴开源了Dragonwell 11项目并发布了11.0.5.1-preview版本,基于最新的LTS版OpenJDK11,提供了JFR Object Profiling特性并默认支持了ZGC策略,希望可以帮助用户享受最新的Java技术红利。
★ Arthas
阿里巴巴2018年9月开源的Java线上诊断工具,它采用命令行交互模式,提供了丰富的功能,是排查jvm相关问题的利器。具体包括:
- 提供性能看板,包括线程、cpu、内存等信息,并且会定时的刷新。
- 根据各种条件查看线程快照。比如找出cpu占用率最高的n个线程等。
- 输出jvm的各种信息,如gc算法、jdk版本、ClassPath等。
- 查看/设置sysprop和sysenv。
- 查看某个类的静态属性,也可以通过ognl语法执行一些语句。
- 查看已加载的类的详细信息,比如这个类从哪个jar包加载的。也可以查看类的方法的信息。
- dump某个类的字节码到指定目录。
- 直接反编译指定的类。
- 查看类加载器的一些信息。
- 可以让jvm重新加载某个类。
- 监控方法的执行,同时可以获取到执行的入参、出参以及抛出的异常。
- 追踪方法执行的调用栈,以及各个方法的调用时间。
- 在线编译,热更新代码
- 生成热点代码火焰图
原理图及支持的命令列表:
★ ChaoBlade
ChaosBlade 是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具,帮助企业提升分布式系统的容错能力,并且在企业上云或往云原生系统迁移过程中业务连续性保障。ChaosBlade 不仅使用简单,而且支持丰富的实验场景,场景包含:
基础资源:比如 CPU、内存、网络、磁盘、进程等实验场景。
Java 应用:比如数据库、缓存、消息、JVM 本身、微服务等,还可以指定任意类方法注入各种复杂的实验场景。
C++ 应用:比如指定任意方法或某行代码注入延迟、变量和返回值篡改等实验场景。
Docker 容器:比如杀容器、容器内 CPU、内存、网络、磁盘、进程等实验场景。
云原生平台:比如 Kubernetes 平台节点上 CPU、内存、网络、磁盘、进程实验场景,Pod 网络和 Pod 本身实验场景如杀 Pod,容器的实验场景如上述的 Docker 容器实验场景。
相关生态图如下:
★ P3C:
P3C可以帮助Java开发者检测代码中村在的不规范的位置并给与提示。规约插件采用Kotlin语言进行开发。
★ Funcraft:
Serverless 应用开发调试部署工具。
三、阿里云开放平台
丰富的API和SDK向开发者提供阿里云开放能力。
★ API
- API文档:可以找到阿里云已经开放API的产品及相应的文档地址。
- API Endpoint:查询各产品OpenAPI的访问Endpoint,可以直接访问该Endpoint或用于配置SDK。
- API 在线调试:支持快速检索、可视化调试 API、在线命令行工具、同步动态生成可执行 SDK Example 代码。
- API 错误中心:在这里可以搜索接收到的错误码,并获取简单的解决提示。
★ SDK
提供多语言的 SDK 为用户封装 API 签名计算,组织请求结构,构建连接池提升请求效率和性能,解析返回结果等。让开发者不用复杂代码即可访问云服务器、云数据库RDS、云监控等多个阿里云服务。阿里云SDK包含:Java SDK、PythonSDK、GO SDK、PHP SDK、.NET SDK、Node.js SDK等。
四、阿里云代码示例库
经典代码一键复制
阿里云CodeSample以场景为维度,支持以云产品和语言为条件选取目标代码。告别CTRL+C,CTRL+V,点击图标一键复制,好用到没朋友。
五、云产品工具
优质且免费的阿里云产品工具。
云产品通用
★ Cloud Toolkit
Cloud Toolkit 是免费的本地 IDE 插件,支持IntelliJ IDEA、Eclipse、PyCharm、Maven、VSCode以及其他版本,帮助开发者更高效地开发、测试、诊断并部署应用。通过插件,可以将本地应用一键部署到任意服务器,甚至云端(ECS、EDAS、Kubernetes、ACR 和 小程序云 等);并且还内置了 Arthas 诊断、Dubbo工具、Terminal 终端、文件上传、函数计算 和 MySQL 执行器等工具。(产品官网:https://www.aliyun.com/product/cloudtoolkit)
通过该插件,你可以:
- 一键部署本地 IDE 内项目到任意远程服务器
- 一键部署本地 IDE 内项目到阿里云 EDAS、SAE 和Kubernetes
- 本地 Docker Image 打包和仓库推送工具
- 远程服务器实时日志查看
- 阿里云小程序开发工具
- 阿里云函数计算开发工具
- 阿里云 RDS 内置 SQL 执行器
- 内置 Terminal 终端
- 文件上传
- Apache Dubbo 框架项目模板&代码生成
- Java 程序诊断工具
- RPC 服务端云联调
★ Cloud Shell
网页版命令行工具,允许用户通过命令行管理阿里云资源。
★ CLI
在Alibaba Cloud SDK for GO 之上构建的开源工具。借助此工具,您可以通过调用阿里云开放 API 来管理阿里云产品。该命令行工具与阿里云开放 API 一一对应,灵活性高且易于扩展。您可基于该命令行工具对阿里云原生 API 进行封装,扩展出您想要的功能。
数据库
★ 数据库备份DBS
为数据库提供连续数据保护、低成本的备份服务。它可以为多种环境的数据提供强有力的保护,包括企业数据中心、其他云厂商、混合云及公共云。
★ 数据传输服务DTS
DTS支持关系型数据库、NoSQL、大数据(OLAP)等数据源间的数据传输。它是一种集数据迁移、数据订阅及数据实时同步于一体的数据传输服务。数据传输致力于在公共云、混合云场景下,解决远距离、毫秒级异步数据传输难题。它底层的数据流基础设施为阿里双11异地多活基础架构, 为数千下游应用提供实时数据流,已在线上稳定运行5年之久。
★ 数据库和应用迁移 ADAM
ADAM是一款把数据库和应用迁移到阿里云(公共云或专有云)的产品,显著地降低了上云的技术难度和成本,尤其是Oracle数据库应用。ADAM全面评估上云可行性、成本和云存储选型,内置实施协助,数据、应用迁移等工具,确保可靠、快速上云。
基础仓库
开放云原生应用中心 ——Cloud Native App Hub,一个面向开发者的云原生应用市场。
★ 容器镜像服务(ContainerRegistry)
ACR提供安全的镜像托管能力,稳定的国内外镜像构建服务,便捷的镜像授权功能,方便用户进行镜像全生命周期管理。容器镜像服务简化了Registry的搭建运维工作,支持多地域的镜像托管,并联合容器服务等云产品,为用户打造云上使用Docker的一体化体验。
迁移工具
★ 迁云工具
帮助你完成服务器迁移到阿里云的P2V和V2V。
★ 闪电立方
为用户提供安全、高效、便捷的数据传输服务。支持将对象存储、文件存储从不同设备、不同云服务商迁移和同步到阿里云。它提供在线迁移和离线迁移(闪电立方)两种迁移方式,致力于解决大规模数据传输效率、安全问题等难题。
Serverless
★ FC WebIDE
一款开发Serverless的云端开发工具。
★ FC VSCode Extension
图形化开发调试及操作函数计算资源工具。
六、小程序云开发平台
一云多端
小程序云
小程序云(Mini Program Cloud)是阿里云面向小程序场景提供的一站式云服务,帮助开发者实现一云多端的业务战略,提供了有服务器和无服务器两种模式。云应用是有服务器模式,提供了包括资源编排、应用托管等服务。小程序Serverless是无服务模式,提供了开发、运营、业务增值等服务。跨端开发工具链为开发者提供了一次开发全网小程序运行的能力,并在一朵云内实现统一的资源管理、统一的数据运营和统一的业务设计。
Serverless
阿里云小程序Serverless提供包括云函数、数据存储、文件存储等一整套后端服务。开发者通过API方式即可获取云函数、数据存储、文件存储、音视频、图像处理等服务,不需要关心服务器或底层运维设施,可以更专注于代码和业务本身。
跨端IDE
uni-app跨平台开发扩展支持在阿里云小程序开发者工具中将uni-app工程编译为微信小程序,并同时打开微信开发者工具。跨端IDE内置跨端框架,支持一次开发多端运营,兼容支付宝、微信等主流小程序框架。
本地插件
支持通过IntelliJ IDEA、Eclipse、Pycharm等直接发布到云应用服务。
点击此处即可使用上文提到的所有开发者工具,建议将链接收藏后在PC端打开哦。