架构抽象化设计

栏目: Java · 发布时间: 6年前

业务研发,到了一定阶段需要对设计进行抽象化进行,抽象化两种方式一种是程序库,通过调用库形式实现代码重用,例如dll、so、jar包,另一种形式是通过服务形式,比如web服务soa以及当下微服务形式对业务模块进行抽象化设计。

架构抽象化设计

对于线上业务抽象化去实现,具体到实现方式上,在 java 语言上存在两种方式,一种jar包形式,一种是服务方式。两种方式各有优劣,两种方式结合着用,用两种方式优势,能够将架构实现更合理获得更多形式上重用。

jar包形式,将逻辑进行抽象实现,能够引入在业务服务中使用,使用jar包时要注意基于Spring jar,如果多线程使用时,要注意类引用方式,再多线程中单独加载,然后在使用。

throwable异常机制,整个异常指责链,异常继承体系要明确。避免异常捕获不到情况,导致程序异常。异常框架以及异常体系结构:

架构抽象化设计

thread local机制,thread local本身是绑定在每个线程上的对象,使用时需要thread local本身是静态的,这样才能保证变量是全局的且唯一。使用样例类似如下:

static ThreadLocal<XgBoostCompute> threadLocal = new ThreadLocal<XgBoostCompute>();

public void run() {

    xgBoostCompute = threadLocal .get();

    if ( xgBoostCompute == null ){

        xgBoostCompute = new XgBoostCompute();

        boolean bool = xgBoostCompute .load(Constants. MODEL_PATH );

        if (bool) {

            threadLocal .set( xgBoostCompute );

}

}

}

架构设计最终落到实现上,需要对使用到语言层面比如线程池、 synchronized 、countdownlatch 理解要深入,对于库层面 Spring 也是, 类似整体加载机制要明确,不然整个实现会遇到各种问题,会因为点的卡壳而花费大量时间。

对于synchronized在作用于块的时候,要锁定唯一对象,对象唯一性很重要不然可能导致锁不住,锁住后的整个流程单线程模式,所以锁住模块要尽量小,尽量小之后才能获得更高性能。

在有就是版本,spring版本是4就要注意spring-conifg.xml中头部head版本,版本不一致可能会导致整个个别功能起作用,部分功能不起作用,最近遇到4.0 spring配置文件3.0然后基于注解方式定时器不起作用。

架构设计本质上还是降低复杂度,实现业务需要,架构本身需要不断演进,不能期望一步到位,并且扩展性也是在一定范围内,而不是无限制可扩展性。架构取决于设计者对于业务理解深度,以及对于各种基础知识掌握以及熟练运用程度。

文章零散说了很多方面,其实说的就是一件事,架构设计到实现又一个巨大鸿沟以及一个漫长实现过程,需要对各个知识点以及库体系有相当了解,才能很好去实现,不然会导致事倍功半。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机视觉

计算机视觉

Richard Szeliski / 艾海舟、兴军亮 / 清华大学出版社 / 2012-1 / 109.00元

《计算机视觉——算法与应用》探索了用于分析和解释图像的各种常用技术,描述了具有一定挑战性的视觉应用方面的成功实例,兼顾专业的医学成像和图像编辑与交织之类有趣的大众应用,以便学生能够将其应用于自己的照片和视频,从中获得成就感和乐趣。本书从科学的角度介绍基本的视觉问题,将成像过程的物理模型公式化,然后在此基础上生成对场景的逼真描述。作者还运用统计模型来分析和运用严格的工程方法来解决这些问题。 本......一起来看看 《计算机视觉》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具