Archive for the ‘ Framework ’ Category

Java Fork/Join框架

原文链接:A Java Fork/Join Framework(PDF) – Doug Lea

译序

Doug Lea 大神关于Java 7引入的他写的Fork/Join框架的论文。

响应式编程Reactive Programming / RP)作为一种范式在整个业界正在逐步受到认可和落地,是对过往系统的业务需求理解梳理之后对系统技术设计/架构模式的提升总结。Java作为一个成熟平台,对于趋势一向有些稳健的接纳和跟进能力,有着令人惊叹的生命活力:

  1. Java 7提供了ForkJoinPool,支持了Java 8提供的StreamReactive StreamRP的一个核心组件)。
  2. 另外Java 8还提供了Lamda(有效地表达和使用RP需要FP的语言构件和理念)。
  3. 有了前面的这些稳健但不失时机的准备,在Java 9中提供了面向RPFlow API,为Java圈子提供了官方的RP API,标志着RP由集市式的自由探索阶段 向 教堂式的统一使用的转变。

通过上面这些说明,可以看到ForkJoinPool的基础重要性。

对了,另外提一下Java 9Flow API@author也是 Doug Lee 哦~

PS:基于Alex/萧欢 翻译、方腾飞 校对的译文稿:Java Fork Join 框架,补译『结论』之后3节,调整了格式和一些用词,整理成完整的译文。译文源码在GitHub的这个仓库中,可以提交Issue/Fork后提交代码来建议/指正。

0. 摘要

这篇论文描述了Fork/Join框架的设计、实现以及性能,这个框架通过(递归的)把问题划分为子任务,然后并行的执行这些子任务,等所有的子任务都结束的时候,再合并最终结果的这种方式来支持并行计算编程。总体的设计参考了为Cilk设计的work-stealing框架。就设计层面来说主要是围绕如何高效的去构建和管理任务队列以及工作线程来展开的。性能测试的数据显示良好的并行计算程序将会提升大部分应用,同时也暗示了一些潜在的可以提升的空间。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java Fork/Join框架



软件架构模式-第二章事件驱动架构(上)

原文地址  译者:克里斯托刘

事件驱动架构模式是一个非常流行的异步分布模式,可生成高可扩展性应用。而且它也具有强适应能力,可被用于小程序或者大型复杂程序。事件驱动架构是由高耦合度、单一目的的事件处理模块构成,这些模块异步接收、处理事件。

事件驱动架构模式有两种主要拓扑结构,“调度员”(mediator)和“经纪人”(broker)拓扑结构。“调度员”拓扑结构通常用在一个事件中由多个步骤组成,而你需要通过中央“调度员”模块去调度这些步骤。然而“经纪人”结构是当需要执行一系列事件链,而不需要中央“调度员”模块。由于这两种结构的特征和执行策略不同,深入理解两者的用法能帮助你在自己的案例中做出正确的判断。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 软件架构模式-第二章事件驱动架构(上)



软件架构模式-第一章分层架构(下)

原文地址  译者:克里斯托刘

模式实例

为更好描述分层架构怎样工作,考虑一个业务从业人员获取特定目标用户信息的需求,如图1-4所示。黑色箭头标志一路下到数据库的获取用户数据的请求流向,而红色箭头显示从下往上直到显示数据的屏幕这一数据反馈流向。在这个例子中,客户信息包含客户数据及订单数据(用户下的订单)。“用户屏幕”负责接收查询请求和显示用户信息,它并不知道数据在哪里、如何获取它、有多少数据库表格需要查询才能满足查询请求。一旦“用户屏幕”接收到查询客户信息的请求,它接着传递请求到“用户代理”模块。这个模块知道业务层中哪个模块可以处理该请求,同时知道如何调用该模块、传递哪些参数给该模块。业务层中的“用户类”负责收集所有业务请求需要的信息。该模块调用持续层的“用户数据访问接口”(Dao data access object)模块获取用户数据;调用“订单数据访问接口”模块获取订单信息。这些模块接着执行SQL语句去获得相关数据,再传递回业务层的“用户类”模块。一旦“用户类”获得数据,它会收集订单和用户信息两块数据同时传递回“用户代理”模块,“用户代理”模块继而传递数据回“用户屏幕”呈现给使用者。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 软件架构模式-第一章分层架构(下)



《KAFKA官方文档》入门指南

1.入门指南

1.1简介

Apache的Kafka™是一个分布式流平台(a distributed streaming platform)。这到底意味着什么?

我们认为,一个流处理平台应该具有三个关键能力:

  1. 它可以让你发布和订阅记录流。在这方面,它类似于一个消息队列或企业消息系统。
  2. 它可以让你持久化收到的记录流,从而具有容错能力。
  3. 它可以让你处理收到的记录流。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《KAFKA官方文档》入门指南



《软件架构模式》-第一章分层架构(上)

原文地址  译者:克里斯托刘

第一章

分层架构

最通常的架构模式就是分层架构模式,即所谓的N层架构。这种模式对大部分JAVAEE应用程序来说是标准模式,因此被大部分架构师、软件设计师、开发者广泛知晓。由于分层架构模式和公司里传统的IT沟通以及组织结构非常类似,使得它成为大多数商务应用开发最自然的选择。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《软件架构模式》-第一章分层架构(上)



《TOGAF 9.1IT企业架构》什么是TOGAF

原文链接  原文作者:Wolfgang W.Keller  译者:克里斯托刘

1.1 什么是TOGAF 9.1

目前TOGAF这个开源架构框架是全世界非常流行的企业IT架构(EITA)。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《TOGAF 9.1IT企业架构》什么是TOGAF



简单了解Disruptor

1.   Disruptor是什么

1.1   技术背景

LMAX是在英国注册并受到FCA监管(监管号码为509778)的外汇黄金交易所, LMAX架构是LMAX内部研发并应用到交易系统的一种技术。它之所以引起人们的关注,是因为它是一个非常高性能系统,这个系统是建立在JVM平台上,核心是一个业务逻辑处理器,官方号称它能够在一个线程里每秒处理6百万订单.

一个仅仅部署在4台服务器上的服务,每秒向Database写入数据超过100万行数据,每分钟产生超过1G的数据。而每台服务器(8核12G)上CPU占用不到100%,load不超过5。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 简单了解Disruptor



小规模的流处理框架.Part 1: thread pools

原文链接 作者:Tomasz Nurkiewicz 译者:simonwang
(译者:强力推荐这篇文章,作者设计了一个用于小流量的流式数据处理框架,并详细给出了每一个需要注意的设计细节,对比了不同设计方案的优缺点,能够让你对流处理过程,某些设计模式和设计原则以及指标度量工具有一个更深刻的认识!)
GeeCON 2016上我为我的公司准备了一个编程竞赛,这次的任务是设计并实现一个能够满足以下要求的系统:
Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 小规模的流处理框架.Part 1: thread pools



带着问题学 Spring MVC 源码: 一、概述

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!

简单就好,生活可以很德国

Q:什么是 Spring MVC ? ※

Spring MVC 是 Spring Web 的一个重要模块。Spring 支持 Web 应用,Spring MVC 是对 MVC 模式的支持。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 带着问题学 Spring MVC 源码: 一、概述



SLF4J 扩展

原文链接: SLF4J extensions   译者:D瓜哥

SLF4J 扩展被打包在 slf4j-ext.jar里,它随着 SLF4J 一起发布。

主要内容包含如下几部分:

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: SLF4J 扩展



Akka简单性能分析

因为最近工作的关系,要把异步任务从应用服务器中拆分到专门的异步处理服务器中。

方案一

是采用MQ的方式将任务消息发出,在服务端进行处理,如下图所示:

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Akka简单性能分析



Spring4.2新特性(一)

1. 简介.

前些天spring4.2出来了, 从GA开始就一直在跟了, 前2天看完了所有官方Release Notes, 觉得记录下我比较感兴趣的特性.

我看的是4.2GA, 4.2RC3, 4.2RC2, 4.2RC1。4.04.1的新特性, 可以看看涛哥的博客。这里主要是讲照官方文档里面列的, changelog里面太多了 -.-!

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Spring4.2新特性(一)



AKKA文档(java版)—容错

原文链接  译者:小鱼

正如角色系统这一章中解释的一样,每一个角色都是它孩子的监管者,并且像这样的角色都会定义错误处理监管策略。这个策略在成为角色系统结构的一个完整部分之后是不能被改变的。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: AKKA文档(java版)—容错



跟着实例学习ZooKeeper的用法: Curator扩展库

还记得Curator提供哪几个组件吗? 我们不妨回顾一下:

  • Recipes
  • Framework
  • Utilities
  • Client
  • Errors
  • Extensions

前面的例子其实前五个组件都涉及到了, 比如Utilities例子的TestServer, Client里的CuratorZookeeperClient, Errors里的ConnectionStateListener等。 还有最后一个组件我们还没有介绍,那就是Curator扩展组件。 Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 跟着实例学习ZooKeeper的用法: Curator扩展库



跟着实例学习ZooKeeper的用法: 队列

使用Curator也可以简化Ephemeral Node (临时节点)的操作。Curator也提供ZK Recipe的分布式队列实现。 利用ZK的 PERSISTENTSEQUENTIAL节点, 可以保证放入到队列中的项目是按照顺序排队的。 如果单一的消费者从队列中取数据, 那么它是先入先出的,这也是队列的特点。 如果你严格要求顺序,你就的使用单一的消费者,可以使用leader选举只让leader作为唯一的消费者。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 跟着实例学习ZooKeeper的用法: 队列



return top