JFox Cluster

来自开放百科 - 灰狐
2015年12月14日 (一) 06:26Allen (讨论 | 贡献)的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到: 导航, 搜索

JFox Cluster 为 JFox 的高可靠性和可扩展性提供了强大的技术基础.

目前 JFox Cluster 还不稳定, 仍在开发和测试中, 还不可交付使用, 请持续关注.

有关 JFox Cluster 的讨论, 请到 JFox 论坛 - http://forum.huihoo.com/forumdisplay.php?fid=4

目录

认识集群

  • 分布式计算的延伸
* 传统的分布式计算,强调服务器端对客户端的透明
* 集群强调服务器端可由多台服务器提供服务,同时仍然对客户端透明
* 分布式计算是对传统计算模式的分布,集群计算是对分布式计算Server端的再分布
  • 提供HA(High-Availability), not equals H-P(High-Performance).
* HA,保证在不可预测情况下(访问量猛增、不可预测的宕机),系统的可用性
* HP,提供最小的请求响应时间
* 由于出于不同的考虑因素,HA不一定就等于HP,甚至矛盾.
  • 最重要的功能
* Load Balance (负载均衡)
         o Chose right Node
         o Session Stick
         o Request Re-Dispatch when node failed
         o Software/Hardware’s capability. (Apache/Pen/LVS/Cisco)
* Fail-over (故障恢复)
         o Session Replication & Session Relocation
         o App. Server’s capability.
  • 一些误区
* 集群节点越多越好
         o 集群本身有开销(CPU、Memory、 IO、 Network)
         o 加一台286?
* 集群结构越复杂越好
         o 越复杂配置越麻烦,本身的稳定性也越难保证
         o 什么都用最好的?
* 集群性能一定比单机性能好
         o 在单机能满足效率的情况的下,集群可能带来性能损失
* 采用了集群,软件的性能和稳定性就高枕无忧了
         o 仅提供有限的性能和可靠性保证,在软件质量以及硬件环境没有保障的情况,集群也无能为力

集群的设计

  • Cache 方案
 * Distributed cache (In Memory, JGroup,JavaSpace)
 * Centralize gloable cache (In Memory, In Database) Backup Storage/HADB
  • Transport方案
 * 协议:UDP / TCP / JMS / JDBC
 * 粒度:Delta / Whole Session/ Full Session Pool
 * 同步:Sync/Async
 * 频率:Per Method / Per Interval
  • 负载均衡算法
 * 随机 - Random
 * 轮循 - Round-Robin/Weighted Round-Robin
 * 性能优先 - Performance Precedence
 * 最少连接 - Least-Connection
  • Full Scope Cluster
  • Partition Cluster
  • Primary-Slave-Backup

JGroups介绍

  • Reliable
 * NAKACK
  • Transport Protocol
 * UDP Multicast/Unicast
 * TCP Unicast
  • GMS (Group Membership Service)
 * merge
  • FD (Failure Detection) – 心跳检查

JFox Cluster 实现内容

提供的基础功能

  • Load Balance

--WEB - Http Request Redispatcher (Apache+Mod_JK/Pen)

--EJB - EJB Smart Stub

  • Fail-over

--WEB - HttpSession Replication Manager

--EJB - Bean Replication Manager

需要实现集群的容器

  • Clusterable JNDI Container
  • Clusterable Web Container
  • Clusterable EJB Container

--Stateless SessionBean 不需要Session Replication

  • Clusterable Message Container

JFox Microkernel

JFox IoC Kernel

  • IoC based, Modular Ready.
  • POJO Remote Invocation
  • Multi-Protocol transport
  • Cluster Ready

--内核级集群支持,已经定义好了集群框架及API,开发容器的时候,只要实现ClusterableContainer 接口,即具备集群功能

--Support Smart Dynamic Proxy Stub

JFox Remote Invoking Model

  • ConnectorInvoker + ConnectorRemote + HandlerManager + Handler + Container
  • Port Reuse
  • 可以根据需要增加协议,增加其它类型容器
  • 分布式计算分为两个过程,分布和计算,考虑 Local 协议

JFox EJB Cluster Model

增加ClusterServer,ClusterContainer

JFox EJB Smart Stub

Client 从集群中的节点创建的Stub含有多个Remote,并且能够在默认Remote 不工作的情况切换到能工作的Node

JFox Web Cluster Model

Replace Web Server HttpSession Container with ClusterableHttpSessionContaine

JFox Cluster 优势

  • 统一Handler+Container架构,扩展性强
  • 基于方法调用实现集群,比完全基于内容集群更灵活

基于数据,会有定时、对象检查等问题

  • 配置简单(做到集群系统和单机系统编码无关性)
  • Web Container 和 EJB Container可分离
  • 集群能力与协议无关(支持任何调用协议)

正确认识集群

  • 集群不是一项简单的技术
  • 集群也没有想象的那么复杂
  • 从应用角度来讲,尽可能把集群看得简单些
  • 实现集群的基本功能比较简单,但要实现精确的可靠的集群非常复杂
分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱