欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
JFox Cluster
小 (→正确认识集群) |
|||
(未显示2个用户的17个中间版本) | |||
第1行: | 第1行: | ||
− | JFox Cluster 为 [[JFox]] | + | JFox Cluster 为 [[JFox]] 的高可靠性和可扩展性提供了强大的技术基础. |
− | ==JFox Cluster | + | 目前 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 实现内容== | ||
提供的基础功能 | 提供的基础功能 | ||
第17行: | 第79行: | ||
*Clusterable Web Container | *Clusterable Web Container | ||
*Clusterable EJB Container | *Clusterable EJB Container | ||
− | + | --Stateless SessionBean 不需要Session Replication | |
*Clusterable Message Container | *Clusterable Message Container | ||
第31行: | 第93行: | ||
==JFox Remote Invoking Model== | ==JFox Remote Invoking Model== | ||
− | |||
* ConnectorInvoker + ConnectorRemote + HandlerManager + Handler + Container | * ConnectorInvoker + ConnectorRemote + HandlerManager + Handler + Container | ||
* Port Reuse | * Port Reuse | ||
第37行: | 第98行: | ||
* 分布式计算分为两个过程,分布和计算,考虑 Local 协议 | * 分布式计算分为两个过程,分布和计算,考虑 Local 协议 | ||
− | + | <gallery> | |
− | + | Image:JFox-Remote-Invoking-Model.png|JFox Remote Invoking Model | |
− | + | </gallery> | |
− | + | ||
==JFox EJB Cluster Model== | ==JFox EJB Cluster Model== | ||
− | + | 增加ClusterServer,ClusterContainer | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | <gallery> | ||
+ | Image:JFox-EJB-Cluster-Model.png|JFox EJB Cluster Model | ||
+ | </gallery> | ||
==JFox EJB Smart Stub== | ==JFox EJB Smart Stub== | ||
− | + | Client 从集群中的节点创建的Stub含有多个Remote,并且能够在默认Remote 不工作的情况切换到能工作的Node | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | <gallery> | ||
+ | Image:JFox-EJB-Smart-Stub.png|JFox EJB Smart Stub | ||
+ | </gallery> | ||
==JFox Web Cluster Model== | ==JFox Web Cluster Model== | ||
− | + | Replace Web Server HttpSession Container with ClusterableHttpSessionContaine | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | <gallery> | ||
+ | Image:JFox-Web-Cluster-Model.png|JFox Web Cluster Model | ||
+ | </gallery> | ||
==JFox Cluster 优势== | ==JFox Cluster 优势== | ||
第82行: | 第131行: | ||
*集群能力与协议无关(支持任何调用协议) | *集群能力与协议无关(支持任何调用协议) | ||
− | == | + | ==正确认识集群== |
− | * | + | * 集群不是一项简单的技术 |
+ | * 集群也没有想象的那么复杂 | ||
+ | * 从应用角度来讲,尽可能把集群看得简单些 | ||
+ | * 实现集群的基本功能比较简单,但要实现精确的可靠的集群非常复杂 | ||
+ | |||
+ | [[category:cluster]] | ||
+ | [[category:huihoo]] | ||
+ | [[category:JFox]] |
2015年12月14日 (一) 06:26的最后版本
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可分离
- 集群能力与协议无关(支持任何调用协议)
[编辑] 正确认识集群
- 集群不是一项简单的技术
- 集群也没有想象的那么复杂
- 从应用角度来讲,尽可能把集群看得简单些
- 实现集群的基本功能比较简单,但要实现精确的可靠的集群非常复杂