首页 体育 教育 财经 社会 娱乐 军事 国内 科技 互联网 房产 国际 女人 汽车 游戏

借助 SPI 解决复杂业务扩展问题

2020-05-22

public static T ExtensionLoader T getExtensionLoader {

....各种校验

} else {

//缓存中获取扩展加载器,为空则进行新建

ExtensionLoader T loader = EXTENSION_LOADERS.get;

if {

EXTENSION_LOADERS.putIfAbsent);

loader = EXTENSION_LOADERS.get;

}

return loader;

}

}

public static T ExtensionLoader T getExtensionLoader {

....各种校验

} else {

//缓存中获取扩展加载器,为空则进行新建

ExtensionLoader T loader = EXTENSION_LOADERS.get;

if {

EXTENSION_LOADERS.putIfAbsent);

loader = EXTENSION_LOADERS.get;

}

return loader;

}

}

public T getExtension {

。。。参数校验

Holder Object holder = cachedInstances.get; //从缓存中获取持有者

if { //假如为空,创立一个持有者

cachedInstances.putIfAbsent;

}

Object instance = holder.get; //从持有者获取完成类

if { //假如为空

synchronized {

instance = holder.get;

//两层判空查看

if {

//选用懒加载形式加载完成类

instance = createExtension;

holder.set;

}

}

}

return instance;

}

public T getExtension {

。。。参数校验

Holder Object holder = cachedInstances.get; //从缓存中获取持有者

if { //假如为空,创立一个持有者

cachedInstances.putIfAbsent;

}

Object instance = holder.get; //从持有者获取完成类

if { //假如为空

synchronized {

instance = holder.get;

//两层判空查看

if {

//选用懒加载形式加载完成类

instance = createExtension;

holder.set;

}

}

}

return instance;

}

架构衍生

假如某些事务场景需求双向依靠,能够考虑运用SPI形式, 由渠道方界说接口标准,第三方来完成内部逻辑,经过HTTP协议来调用。能够了解成 SPI是传统API的反向调用

图引自程序架道

当然,不同公司的技能实力良莠不齐,体系稳定性、接口响应速度都不相同,渠道体系的容错才能、超时机制要深化建造,防止部分慢恳求,引发雪崩效应。

小结:

热门文章

随机推荐

推荐文章