微前端架构如何改变企业的开发模式与效率提升
1268
2022-10-12
Dactor- 轻量级同步异步统一编程框架(doctor是什么意思)
DActor
Introduction
DActor框架可同时支持同步和异步代码,简化在线异步代码的开发,用同步代码的思维来开发异步代码,兼顾异步代码的高并发、无阻塞和同步代码的易读性,可维护性。基于协程思想设计 最大程度的降低阻塞,提高单个线程的处理能力,并可有效的降低线程数。
Overview
目前开发过程中的几个常见模型
同步编程 所有步骤都在一个主线程中完成,调用一个方法,等待其响应返回。一个请求占用一个线程,在有数据库操作、TCP和Http通讯时因为有阻塞情况,会导致占用线程占用而无法及时释放,因此在同步交易中引入了线程池概念,提高系统的吞吐量异步编程 所有步骤都可在不同线程中完成,调用一个方法,不等待响应既返回,典型交易如Nodejs。 目前市面上的异步框架都比较复杂,市面的通用解决方案是CallBack和Promise/Deferred模式模式。
设计思路
为了保留异步的高性能,简化异步的开发模式,同时使得程序更容易被程序员理解,在性能和代码可阅读性中间取得平衡,设计了此框架。处理步骤:将请求封装为消息,丢入消息队列,寻找合适步骤处理消息,上述过程不断循环,直到所有可用步骤都执行完毕。因为是对消息队列进行处理,对于同步交易,处理完毕即可丢入消息队列。对于异步交易,等待回调完毕再丢入消息队列。两种情况对于框架来说是无差别的。同时因为通过异步交易避免了阻塞情况的发生,所以可在不大幅度提高线程数的情况下,提高吞吐量,同时也可在一定程度避免流量突增的情况发生。消息队列采用Disruptor的的高性能队列RingBuffer。以Actor协程并发模型为基础设计框架。
Features
1、集成Netty2、集成HttpClient3、集成HttpServlet4、支持多层父子结构5、支持责任链模式6、J2EE支持json,csv,pdf,xml,html格式输出7、J2EE支持数据流输出,动态文件-、动态图片输出、跳转和可根据配置动态输出
环境要求JDK 1.8Spring FrameWork 4.3.22.RELEASE +Servlet 3.0+(因为需要使用Servlet的异步功能)
注意事项请求的完整逻辑是分散在不同的线程中执行的,所以尽量避免使用ThreadLocal
Getting Started
Maven dependency
Gradle dependency
compile group: 'cn.ymotel', name: 'dactor', version:'1.0.6'
代码简单讲解
执行过程为chain->grandfather->parent->Selft。依次调用执行责任链中逻辑,grandfather中的逻辑,parent的逻辑和自身逻辑。 chain,grandfather,parent都可为空,不设置在grandfather和parent中的Steps中至少有一个为placeholderActor交易,以调用子逻辑
整个过程中,需要先设置全局占位符交易中如果未填写beginBeanId或者endBeanId时,系统默认使用全局中配置的beginBeanId或者endBeanId
condtion可为空,空字符串,或者是ognl表达式placeholderActor的作用是在暂存当前环境,并调用子交易,待子交易执行完毕后,再恢复当前环境继续执行如果在Step中未找到toBeanIdActor,会直接调用endBeanId方法,认为自身交易已执行结束。交易的请求和流转信息都保存在Message中如果指定handleException=false或者使用默认设置,直接返回父中执行,如果父中也未捕获,则继续返回上一级执行,一般来说至少有要有一个actor中指定handleException=true启动框架接收和执行请求
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~