架构抽象化设计

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

业务研发,到了一定阶段需要对设计进行抽象化进行,抽象化两种方式一种是程序库,通过调用库形式实现代码重用,例如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然后基于注解方式定时器不起作用。

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

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


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

查看所有标签

猜你喜欢:

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

零边际成本社会

零边际成本社会

[美]杰里米·里夫金 / 赛迪研究院专家组 / 中信出版社 / 2014-11-1 / 49.00

在这本书中,《第三次工业革命》作者杰里米•里夫金开创性地探讨了极致生产力、协同共享、产消者、生物圈生活方式等全新的概念,详细地描述了数以百万计的人生产和生活模式的转变。他认为,“产消者”正在以近乎零成本的方式制作并分享自己的信息、娱乐、绿色能源和3D打印产品。他们也通过社交媒体、租赁商、合作组织以极低或零成本的模式分享汽车、住房、服装和其他物品;学生更多地参与到基于零成本模式的开放式网络课程…… ......一起来看看 《零边际成本社会》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

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

各进制数互转换器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试