欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
JFox Cluster
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可分离
- 集群能力与协议无关(支持任何调用协议)
正确认识集群
- 集群不是一项简单的技术
- 集群也没有想象的那么复杂
- 从应用角度来讲,尽可能把集群看得简单些
- 实现集群的基本功能比较简单,但要实现精确的可靠的集群非常复杂