写点什么

Volta:利用重编译开发分布式应用

  • 2008-10-03
  • 本文字数:1032 字

    阅读完需:约 3 分钟

微软 LiveLabs 实验室的 Dragos Manolescu、Brian Beckman 和 Benjamin Livshits 等三人最近发表了一篇关于Volta 的文章,来探讨这个一年前在战略架构论坛2007 上宣布的新技术 Volta 可以用来对架构进行重构,就像 20 多年以来代码重构工具对代码进行重构一样。作者总结了 Volta 产生的背景,以及如何使用 Volta 等:

当前的编程语言和工具集全是为快速而简便地构建顺序的非分布式应用而设计的。 要编写分布式应用,程序员必须学习和使用针对跨层通信、数据编制、同步和安全等领域的底层类库。这些类库的唯一目的就是分布式执行以前只能被顺序执行的应用逻辑。

[但是] 大多数工具和技术迫使我们在写代码之前先进行分离……。在类如RunAtAsync等说明性标注的指导下,Volta 作为一套工具可以将样板代码插入到逻辑标识的同步分布式应用中,或者将非分布式执行文件转换为这些应用。

在 JIT 编译器产生本地代码前,Volta 在保护函数行为的 CIL 层(.Net Common Intermediate Language,.NET 通用中间语言)应用转换。作者认为这一方法的好处有以下几点:

  • 重编译器是语言独立的;
  • 重编译器和编译器分析与优化无关;
  • 在语言规范改动时 Volta 不需要改动,只在 CIL 规范改动时才需要;
  • Volta 支持许多分布式设计最佳实践,比如“所有网络上的调用都必须是异步的”;
  • Volta 提供了语言(用于写代码)与运行时(用于执行代码)间的多对多映射。

Volta 的推出被业界猜测是微软对 Google 的 GWT 所作出的回应。在文章中,作者也提到了这一点:

基于 Web 的 Ajax 类型应用是分布式应用中最为普遍的形式之一。

然而 GWT 不能进行多对多的映射,因为它仅在代码层级进行操作。Volta 提供的 CIL-to-JavaScript 的转换可以做到:

模仿不被 JavaScript 本地支持的高级的控制流功能,比如线程和协程等。

此外 Volta 还提供了端到端的方法和快照功能,来帮助理解隔离效果:

测量代码(Instrumented code)能收集完整的应用轨迹,帮助我们计算剩余量(Latency)和生产量(Throughput)的状态,执行应用诊断等。

作者最后对 Volta 做了简要总结:

将.NET 编程语言、类库和工具扩展应用到云计算。

在不久的将来,他们将主要关注结构安全,更细粒度的层剥离和层迁移等。

虽然在文章中,作者只是提到了如何将 Volta 应用到基于 Web 的 Ajax 类型应用和层剥离。但是我们可以想象,不久他们就会让 Volta 在面向服务架构(SOA)中创建和实施“服务交互“,以对服务和集成服务进行重构。

查看英文原文: Volta: Developing Distributed Applications by Recompiling

2008-10-03 01:521123

评论

发布
暂无评论
发现更多内容

百度与用友网络签署战略合作

百度开发者中心

智能制造 文心一言

一个有趣的图片加载效果

南城FE

CSS 前端 动画 图片

KubeVela:一场向应用交付标准的“冲锋”

RRLL

阿里云 数据湖 云原生 KubeVela 应用交付

什么是文件传输,介绍文件传输的发展进程

镭速

对数据库中存储的程序进行现代化改造,以使用 Amazon Aurora PostgreSQL 联合查询、pg_cron 和 Amazon Lambda

亚马逊云科技 (Amazon Web Services)

人工智能训练数据集:基础与发展

数据堂

有奖征文丨【玩转Cloud Studio】第二季来啦!

CODING DevOps

Cloud Studio 云端IDE 在线编程 有奖征文 活动推荐

《雄安新区2022年大数据研究报告》发布

百度开发者中心

智慧城市

spdk里是怎么运行nvmf-tgt的

linux大本营

spdk

云BI产品瓴羊Quick BI,为企业数字化转型保驾护航

巷子

数说热点|米哈游新作《崩坏:星穹铁道》今日公测,能否再现原神奇迹?

MobTech袤博科技

来字节跳动实习,有机会发Nature子刊

字节跳动技术范儿

从 Milvus 2.2 到 2.2.6,我们是如何持续稳定升级的

Zilliz

非结构化数据 Milvus 向量数据库

使用tc+iptables对指定的socket进行限速

linux大本营

TCP socket 网络 iptables

用c语言写一个目录遍历程序

linux大本营

C语言 目录遍历

eBPF的发展演进---从石器时代到成为神(三)

统信软件

操作系统 Linux内核

电子签赛道驶向深水区,法大大以数智化引领创新

ToB行业头条

什么是Java 异常?如何处理异常?

Java架构历程

Java 三周年连更

读《分布式商业》有感

后台技术汇

分布式 三周年连更

linux设置虚拟IP

linux大本营

Linux 网络 IP地址

容量成本性能全都要有, Redis 容量版 PegaDB 设计与实践

百度开发者中心

云数据库 百度智能云

如何使用 SCP 和 Rsync 在 Linux 中传输文件

wljslmz

Linux 三周年连更

当生成式AI照进医疗,医患关系将何去何从?

白洞计划

医疗

【Python实战】Python采集度贴吧排行榜

BROKEN

三周年连更

YashanDB V22.2重磅发布!七大亮点带你了解新特性

YashanDB

数据库

c++单例模式的所有面经

linux大本营

设计模式 单例模式 C++

5.10版本linux内核的使用slub的kmem_cache_init函数解析

linux大本营

内存管理 Linux内核 slub slab

c++17使用多线程编程的时候在编译时要怎么处理

linux大本营

多线程 C++

重磅!阿里云云原生合作伙伴计划全新升级:加码核心权益,与伙伴共赢新未来

阿里巴巴云原生

阿里云 云原生 生态合作

第五期(2022-2023)传统行业云原生技术落地调研报告——金融篇

York

容器 DevOps 微服务 云原生 金融

Volta:利用重编译开发分布式应用_.NET_Jean-Jacques Dubray_InfoQ精选文章