阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

集群环境中的单例设计模式

174次阅读
没有评论

共计 1081 个字符,预计需要花费 3 分钟才能阅读完成。

何时使用(单例模式):

在创建线程池、缓存等对象时,我们可以使用单例模式来避免资源的浪费。但是如果你想要存储比如产品价格等全局数据的时候,单例模式就成了一种反面模式,要考虑用其他方法替代了。

注意:单例在这里变成了反面模式,我们可以用以下技术来进行避免:

1. 注入依赖;

2. 使用工厂设计模式;

3. 使用 Enum 类等等();

// Enum singleton – the preferred approach
public enum MySingleton {
 INSTANCE;
}

集群环境中的单例设计模式

在一个多元 JVM 环境中,每个 JVM 拥有自己对于该单例对象的拷贝,这将导致很多问题,尤其是在对于资源的访问需要受限和加锁的集群的环境中。

为了实现跨 JVM 集群,可以使用很多技术(JMS、DB、自定义 API、第三方工具),但这些技术都将影响到系统业务逻辑。

应用服务器也提供一定程度的 API 来避免此类问题。

Terracotta、Oracle Coherence 是不错的选择。它们能够提供一个跨 JVM 的内存复制的对象,你可以使用其提供的单例视图,或者使用集群缓存的提供者,比如 Swarm Cache 或者 JBoss TreeCache 的缓存就是内置了单例和集群。

此外,也有一个叫做 JGroups 的产品 – 它使用了  mulch-cast 通信 (TCP/UDP)。它允许一组应用(基于 JVM) 可以相互通信以维持同步。

JBoss 具有单例服务 (基于 MBeans),这意味着它能够解决这个(集群下的单例) 问题。点击 这里 和 这里。

Weblogic 也有 单例服务 的概念 – 集群中只有一个实例,其他的服务器作为客户端对此实例进行访问。

WebSphere 在 WebSphere XD 版本提供了一个跨集群的单例的概念,使用 ObjectGrid 作为 (单例)分隔工具。

推荐阅读

Linux 高可用(HA)集群之 DRBD 详解 http://www.linuxidc.com/Linux/2013-08/89035.htm

DRBD 中文应用指南 PDF http://www.linuxidc.com/Linux/2013-08/89034.htm

CentOS 6.3 下 DRBD 安装配置笔记 http://www.linuxidc.com/Linux/2013-06/85600.htm

基于 DRBD+Corosync 实现高可用 MySQL http://www.linuxidc.com/Linux/2013-05/84471.htm

CentOS 6.4 下 DRBD 安装配置 http://www.linuxidc.com/Linux/2013-09/90536.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计1081字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中