阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

Terracotta 实战示例——集群 RIFE

  • 2007-06-20
  • 本文字数:822 字

    阅读完需:约 3 分钟

Terracotta 的 Jonas Bonér最近详述了他和Geert Bevin(最近被Terracotta 招至旗下)如何群集RIFE Web 应用框架。这篇文章提供了RIFE Continuations 实现的颇有价值的深入见解和集群RIFE 这样一个不凡应用框架遇到的挑战。

Bonér 从介绍 RIFE 如何实现 Continuations 开始:

RIFE 的 Continuations 的目标是以通用库的形式,用纯 Java 形式支持 continuations[…] 它使用字节码方法(基于 ASM)来生成代码重定义 Class,以最高效的方式支持 Continuations 的实现。它不依赖于 Java 的序列化(Serialization)机制,而是把对象分拆成原始类型并把数据存储于执行栈中(类似 Terracotta 的方法)[…]Continuations 以树的结构连接在一起,可以任意访问不同的执行步骤。这意味着你可以任意回退或前进,很灵巧的解决了浏览器回退按钮的问题——如果在 Web 应用环境下使用的话。 在内部,RIFE 将 Continuations 存储于普通的java.util.HashMap中。

群集 RIFE 的第一个障碍是线程安全地访问这个 HashMap。RIFE 初始的实现,基于性能的考虑,只设计使用一条线程来访问 Map。在群集环境下,会由多个 JVM 并发访问。

第二个挑战是关于 Class Loader 的,就如应用服务器和 Web 框架的常见情形,RIFE 实现了自己的 Class Loader 来实现一系列特征,就像 Java 的系统 Class Loader 一样,这些 Class Loader 对于 Terracotta 不是现成可见的:

Terracotta 需要可以唯一的定义一个 Class Loader 的原因是它需要一个方法,在任意时刻任意节点,获得已载入了特定 Class 的 Class Loader 实体,以在群集范围内维护对象标识。

Bonér 和 Bevin 面对的最大挑战是如何群集 RIFE 模板引擎的动态。RIFE 可能在运行时动态的按需生成类。在节点崩溃时,在节点上生成的类就需要复制到接手处理请求的节点上。解决方案是构造一个 HashMap,实现群集范围的字节码仓库,RIFE 的 TemplateClassloader 被修改为指向这个仓库。

查看英文原文: A Real World Example of Using Terracotta: Clustering RIFE

2007-06-20 02:002493

评论

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

服务频繁出现100毫秒的延迟,原因是什么?

BUG侦探

运维 开发

提高项目管理效率,技术管理者该怎么做?

万事ONES

项目管理 技术管理 ONES

Spring Cloud Alibaba 优势在哪?未来会如何演进?

Java架构师迁哥

JavaScript 学习(十二)--- String对象中的模式匹配方法

空城机

JavaScript 大前端 6月日更

AQS知多少

卢卡多多

AQS 6月日更 锁分析

推荐5个免费YouTube视频下载方法

资源君

分享 工具软件 教程 youtube视频下载 下载youtube视频

跳槽要不要找猎头

SwiftDD

面试

云算力矿机挖矿系统搭建,Bzz节点挖矿APP源码

区块链服务网络全球首发 将极大降低政务、金融、能源等领域区块链应用成本

CECBC

币安智能链DAPP系统开发

Geek_23f0c3

DAPP系统开发 #区块链# 币安智能链

字节跳动移动架构师学习笔记,一文说清!

欢喜学安卓

android 程序员 面试 移动开发

浪潮云荣获“2021中国智能运维领导厂商”奖项

浪潮云

数据治理

奔向架构师

大数据 数据架构 数据治理

攻击方式学习之- 拒绝服务(DOS/DDOS/DRDOS)

网络安全学海

网络安全 信息安全 渗透测试

Java后端,想找一份20k以上的工作需要掌握哪些知识?

Java架构师迁哥

字节跳动8年老Android面试官经验谈,看完跪了

欢喜学安卓

android 程序员 面试 移动开发

架构实战营 - 模块 7- 作业

请弄脏我的身体

架构实战营

极狐GitLab14.0正式面世!

极狐GitLab

常用 Git 命令总结

编程三昧

git 大前端 工具

同样是初级测试,凭什么他比我薪资高5000块?

程序员阿沐

软件测试 自动化测试

数字化的三大本质

CECBC

vivo商城促销系统架构设计与实践-概览篇

vivo互联网技术

架构 服务器 商城项目

5分钟速读之Rust权威指南(三十一)线程通信

wzx

rust

从设计模式看如何提升程序员的工程素养

学无止境的阿奔

Linux 后端 设计模式 C/C++ 服务器

电池战争:“新石油”与中欧分野

脑极体

带老弟做个实时排行榜

程序员鱼皮

Java c++ 大前端 后端 项目实战

干货!!学习CSRF跨站请求伪造,看这一篇就够了

网络安全学海

网络安全 安全 CSRF 渗透测试 漏洞修复

2021年最危险的七大攻击技术,我不信你不知道

网络安全学海

程序员 网络安全 信息安全 漏洞扫描 攻击技术

深度学习在推荐系统中的应用(二十一)

数据与智能

深度学习 算法 推荐系统

持续交付时代,Scrum中还有必要进行 Sprint Review 么?

万事ONES

项目管理 敏捷开发 持续交付 ONES

阿里巴巴6月新作:“Java辟邪剑谱”,看完必让你直呼好家伙!

Java架构师迁哥

Terracotta实战示例——集群RIFE_Java_Scott Delap_InfoQ精选文章