高品质的音视频能力是怎样的? | Qcon 全球软件开发大会·上海站邀请函 了解详情
写点什么

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 15:00474

评论

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

ElasticSearch架构剖析

五分钟学大数据

大数据 elasticsearch 5月日更

图说丨一图看懂浪潮云“1231”业务战略

浪潮云

如何让研发新同学快速 Onboarding

GrowingIO技术专栏

研发管理

Rust从0到1-集合-字符串

rust string 集合 字符串 Collections

云小课 | 一个三分钟快速定制OCR应用的神器,要不?

华为云开发者联盟

AI modelarts OCR ModelArts Pro 开发套件

网络攻防学习笔记 Day17

穿过生命散发芬芳

5月日更 网络攻防

打破思维定式(十一)

Changing Lin

被解救的代码 - 代码即服务时代来了!

阿里巴巴云原生

容器 微服务 开发者 云原生 开发工具

由一张精益MVP图所浮想联翩

Man

敏捷开发 研发管理

人工智能基础1 - DAY8

Qien Z.

人工智能 5月日更

2021 iOS 进阶学习视频推荐

程序员 ios开发

Python--TKinter

若尘

Python编程 5月日更

长夜漫漫,聊聊synchronized锁的打怪升级路

码农参上

synchronized 签约计划第二季

做个开发喜欢的产品

MavenTalker

产品经理 产品设计 系统开发

全链路压测二十问干货汇总(上)

TakinTalks稳定性社区

看见技术的价值 | 音视频技术有奖征文来啦~

InfoQ写作社区官方

音视频 声网 热门活动

15年云原生实践,在关键节点我们做对了什么? | 云原生大咖说

阿里巴巴中间件

重磅成果 | 《数据安全治理白皮书3.0》正式对外发布!

DT极客

基于Agora Web SDK自定义直播画面

dajyaretakuya

WebRTC 声网 Agora 数字合成

开发者测试:你必须知道7件事

华为云开发者联盟

软件工程 测试 工程师 代码 开发者测试

浅入浅出 MySQL 索引

SH的全栈笔记

MySQL 索引

Keycloak 13 自定义用户身份认证流程(User Storage SPI)

Zhang

MySQL spi keycloak 13.0.0 user storage spi

进大厂的iOS程序员,原来是这样“跳槽”的!

iOS猿_员

对比解读《2020年CNCF中国云原生调查报告》

阿里巴巴中间件

上手 WebRTC DTLS 遇到很多 BUG?浅谈 DTLS Fragment

阿里云视频云

阿里云 音视频 WebRTC SRS流媒体服务器 视频云

玩转直播系列之RTMP协议和源码解析(2)

vivo互联网技术

RTMP 直播技术

☕️【Java技术之旅】带你看透Lambda表达式的本质

洛神灬殇

Java Lambda java8 Lambda函数 5月日更

有无社保缴纳识别接口

ALone

JavaScript实现:如何写出漂亮的条件表达式

华为云开发者联盟

代码 JavaScrip 条件表达式 多条件语句 多属性对象

Dubbo Stub与Mock

青年IT男

dubbo

SpringCloud微服务架构实战:Feign+Hystrix实现RPC调用保护

小Q

Java 学习 面试 微服务 spring cloud alibaba

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