首页 文章 精选 留言 我的

精选列表

搜索[前端统一],共10005篇文章
优秀的个人博客,低调大师

Dactor —— 轻量级同步异步统一编程框架

DActor Introduction DActor框架可同时支持同步和异步代码,简化在线异步代码的开发,用同步代码的思维来开发异步代码,兼顾异步代码的高并发、无阻塞和同步代码的易读性,可维护性。 基于协程思想设计 最大程度的降低阻塞,提高单个线程的处理能力,并可有效的降低线程数。 Overview 目前开发过程中的几个常见模型 同步编程 所有步骤都在一个主线程中完成,调用一个方法,等待其响应返回。一个请求占用一个线程,在有数据库操作、TCP和Http通讯时因为有阻塞情况,会导致占用线程占用而无法及时释放 ,因此在同步交易中引入了线程池概念,提高系统的吞吐量 异步编程 所有步骤都可在不同线程中完成,调用一个方法,不等待响应既返回,典型交易如NodeJs。 目前市面上的异步框架都比较复杂,市面的通用解决方案是CallBack和Promise/Deferred模式模式。 设计思路 为了保留异步的高性能,简化异步的开发模式,同时使得程序更容易被程序员理解,在性能和代码可阅读性中间取得平衡,设计了此框架。 处理步骤:将请求封装为消息,丢入消息队列,寻找合适步骤处理消息,上述过程不断循环,直到所有可用步骤都执行完毕。 因为是对消息队列进行处理,对于同步交易,处理完毕即可丢入消息队列。对于异步交易,等待回调完毕再丢入消息队列。 两种情况对于框架来说是无差别的。同时因为通过异步交易避免了阻塞情况的发生,所以可在不大幅度提高线程数的情况下,提高吞吐量, 同时也可在一定程度避免流量突增的情况发生。 消息队列采用Disruptor的的高性能队列RingBuffer。 以Actor协程并发模型为基础设计框架。 Features 1、集成Netty 2、集成HttpClient 3、集成HttpServlet 4、支持多层父子结构 5、支持责任链模式 6、J2EE支持json,csv,pdf,xml,html格式输出 7、J2EE支持数据流输出,动态文件下载、动态图片输出、跳转和可根据配置动态输出 环境要求 JDK 1.8 Spring FrameWork 4.3.22.RELEASE + Servlet 3.0+(因为需要使用Servlet的异步功能) 注意事项 请求的完整逻辑是分散在不同的线程中执行的,所以尽量避免使用ThreadLocal Getting Started example是J2EE程序,下载后,可直接运行,其中集成了若干例子默认使用.do提交相关交易,但如果是.json将会返回json数据 启动后,在浏览器中输入http://localhost:8080/example/randomTxt2.json输出的是json格式的字符串randomTxt2:只有一级父子关系randomTxt1:有二级父子关系 chaintest1:只使用责任链chaintest2:同时使用责任链和一级父子关系exceptionTest:子交易抛出错误,框架对错误的处理httptest演示的是通过httpclient异步方式访问百度网站访问URL:http://localhost:8080/example/httptest.do启动后,可在控制台看到内部调用结果 Maven dependency <dependency> <groupId>cn.ymotel</groupId> <artifactId>dactor</artifactId> <version>1.0.6</version> </dependency> Gradle dependency compilegroup:'cn.ymotel',name:'dactor',version:'1.0.6' 代码简单讲解 执行过程为chain->grandfather->parent->Selft。 依次调用执行责任链中逻辑,grandfather中的逻辑,parent的逻辑和自身逻辑。 chain,grandfather,parent都可为空,不设置 在grandfather和parent中的Steps中至少有一个为placeholderActor交易,以调用子逻辑 整个过程中,需要先设置全局占位符<actor:global id="actorglobal"><actor:param name="beginBeanId" value="beginActor"/><actor:param name="endBeanId" value="endActor"/></actor:global>交易中如果未填写beginBeanId或者endBeanId时,系统默认使用全局中配置的beginBeanId或者endBeanId <actorid="randomTxt"parent="actorhttpcore"beginBeanId="randomTxtActor"> <steps> <stepfromBeanId="randomTxtActor"toBeanId="placeholderActor"conditon=""/> <stepfromBeanId="placeholderActor"toBeanId="endActor"conditon=""/> </steps> </actor> condtion可为空,空字符串,或者是ognl表达式placeholderActor的作用是在暂存当前环境,并调用子交易,待子交易执行完毕后,再恢复当前环境继续执行如果在Step中未找到toBeanIdActor,会直接调用endBeanId方法,认为自身交易已执行结束。交易的请求和流转信息都保存在Message中如果指定handleException=false或者使用默认设置,直接返回父中执行,如果父中也未捕获,则继续返回上一级执行,一般来说至少有要有一个actor中指定handleException=true 启动框架接收和执行请求

优秀的个人博客,低调大师

开源SQL-on-Hadoop系统一览

引言 查询分析是大数据要解决的核心问题之一,而SQL作为查询分析中使用最简单、最广泛的的语言之一,必然而然的催生了许多支持在Hadoop上使用SQL的系统,这就是所谓的SQL-on-Hadoop系统,其中大众熟知的Hive就是最早的SQL-on-Hadoop系统。 经过若干年的发展,SQL-on-Hadoop系统已经百花齐放,按照架构划分这些系统大致可以分为以下几类: MapReduce架构系统:如Hive,这类系统是在MapReduce计算框架上封装了一个SQL语义层,在运行过程中把SQL转换为MapReduce程序来执行 MPP架构系统:如Impala、Presto、Drill等,这类系统采用MPP(Massively Parallel Processing)架构,而非MapReduce 预计算系统:如Druid、Kylin等,这类系统

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册