“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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:002464

评论

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

Java操作Excel竟如此简单

生命在于折腾

Java EasyExcel

Git 基础知识学习

LeoBing

效率思维模式与Zombie Scrum

Worktile

敏捷开发

从拼多多突破阿里和京东两大巨头绞杀,市值破千亿美金来看职业价值链

非著名程序员

程序员 程序人生 职业规划 职业成长

策略模式解析

Seven七哥

设计模式 策略模式

Kafka面试题:基础27问,必须都会的呀!

Java小咖秀

大数据 kafka 分布式 队列 延时消息

在项目中随手把haseMap改成了currenHaseMap差点被公司给开除了

java金融

Java 后端 BigDecimal金额 Arrays.asList

依赖倒置-好莱坞原则

yupi

由一次管理后台定时推送功能引发的对 RabbitMQ 延迟队列的思考 (二)

LSJ

Java RabbitMQ 延迟队列 优先级队列

啥是CPU缓存?又如何提高缓存命中率呢?

八两

实现一个redis命令--nonzerodecr

老胡爱分享

redis 源码分析 源码阅读

golang-pprof实战笔记

卓丁

pprof 性能分析 Go 语言

架构师训练营 - 第2周学习总结

红了哟

SpringIOC 是依赖倒置吗?

yupi

Java世界的“烂”包管理

申扬科技

maven Git Submodule

ArrayList哪种循环效率更好你真的清楚吗

java金融

Java 后端 ArrayList 循环效率 方式

优化工程师逻辑视角下的微信“拍一拍”功能

Earth_Polarbear

人工智能 微信 系统工程 优化逻辑

区块链系列教程之:比特币的钱包与交易

程序那些事

比特币 区块链 智能合约 钱包 交易

如何做好职场印象管理?

石云升

职场 印象管理 职场形象

终于有人把 java代理 讲清楚了,万字详解!

java金融

Java jdk 后端 动态代理 cglib

软件设计原则

yupi

能走出来的,都不叫困境

zkback

[安利] 可能会让你爱上书写的工具组合!

猴哥一一 cium

Typora markdown markdown编辑器 玩转写作平台

【Golang runtime学习笔记-启动过程分析】

卓丁

初始化 runtime 汇编 Go 语言

游戏夜读 | RPG的美式和日式

game1night

[架构师训练营] 2 依赖倒置

悬浮

三流程序员大晚上不睡觉,竟然在做这件事

Janenesome

写作平台 碎碎念

把主机放在家里

D

centos Homework

大话设计模式 | 3. SOLID原则

Puran

设计模式

一款跨平台免费的开源 SQL 编辑器和数据库管理器!

JackTian

数据库 sql GitHub 开源 实用工具

架构师训练营第三周学习总结

张明森

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