在这里看到关于 Mina based SMTP handler 的讨论,里面提到 mina 是
SEDA 的一个实现。
mina and SEDA
It uses non-blocking IO and is an implementation of the staged
event driven architecture (SEDA). SEDA makes it possible to have
thousands of concurrent network connections.
看到之后,忽然想到,half-sync/half-async 模式其实也可以看成是 SEDA 的一个实现。SEDA 是一个更抽象、更全面的描述,而 half-sync/half-async 模式可以看成是 SEDA 的一个具体的,更有针对性的实现。
SEDA 的论文里有以下这样的描述,这个正是典型的 half-sync/half-async 要解决的问题。
First, the use of threads relaxes the constraint that all event-processing code be non-blocking, allowing an event handler to block or be preempted if necessary. In a traditional event-driven system, all blocking operations must explicitly capture the state of the computation and restore it when the operation completes. In SEDA, threads act as implicit continuations, automatically capturing the execution state across blocking operations.
half-sync/half-async 模式中的层就相当于 SEDA 中的 stag。在 half-sync/half-async 模式中,有一个异步层和同步层;而在 SEDA 中,可以有任意多的 stage,每个 stage 可以是同步的,也可以是异步的。所以可以认为 half-sync/half-async 是 SEDA 的一种简化后的实现。
half-sync/half-async 模式也可以从 生产者/消费者 的角度来描述。
在
spserver 中,同步层和异步层轮流扮演这两个角色。
异步层从 socket 读入数据,然后放到同步层的队列中,这个时候异步层是生产者,同步层是消费者。同步层处理完之后,把输出数据放到异步层的队列中,这个时候同步层是生产者,异步层是消费者。
分享到:
相关推荐
### 半同步/半异步模式 (Half Sync/Half Async Pattern) #### 概述 半同步/半异步(Half Sync/Half Async, HS-HA)架构模式是一种用于复杂并发系统的设计模式,它通过将同步任务与异步任务解耦来优化系统的性能...
前端开源库-babel-helper-remap-koa2-async-to-generatorbabel-helper-remap-koa2-async-to-generator,将异步函数转换为ES2015生成器(koav2->koav1)。
vuex-iframe-sync英文| 中文iframe /窗口之间的Vuex状态同步您的明星是对我的最大鼓励。 :sparkles:功能:支持ifra vuex-iframe-sync英文| 中文iframe /窗口之间的Vuex状态同步您的明星是对我的最大鼓励。 :sparkles...
...Changelog See what is new in ...https://github.com/loopj/android-async-http/blob/1.4.9/CHANGELOG.md Javadoc Latest Javadoc for 1.4.9 release are available here (also included in Maven repository): ...
Build Status ...https://github.com/loopj/android-async-http/blob/1.4.9/CHANGELOG.md Javadoc Latest Javadoc for 1.4.9 release are available here (also included in Maven repository): ...
为了降低线程完成的超时发生率,采用Half-Sync/Half-Async线程池架构建立实时控制系统的线程池,利用最小二乘支持向量回归机(LSSVR)对线程执行时间进行预测估计,再基于估计结果对线程池线程的分配调度优先级别...
安装python3-aptdaemon所需要的python文件,然而,自动生成的可能在新版python中运行,需要替换。位置/usr/lib/python3/dist-packages/aptdaemon/client.py
为了解决这个问题,出现了Promise、async/await等解决方案,而“前端开源库-sync”则是另辟蹊径,采用了Fibers技术。 Fibers是Node.js的一个扩展,它允许开发者在单线程环境中创建并控制多个执行上下文,每个上下文...
konserve, 带有 core.async的clojuresque key-value/文档存储协议 konserve 的... 使用 core.async 语义定义的简单文档存储协议,允许在关联 key-value 存储上使用来自Clojure和ClojureScript的Clojuresque Collectio
laravel-5-sockets-and-queue-async, Laravel 5 web socket和带有套接字警报回调的队列异步 Laravel 5,带有 web sockets和队列异步安装干净的Laravel 5composer create-project laravel/laravel --prefer-dist/path...
3. **转换过程**:`babel-plugin-transform-async-to-promises`工作原理是,首先识别出`async function`和`await`关键字,然后将它们替换为基于Promise的操作,如`.then()`和`.catch()`。这样,即使目标环境不支持`...
mongodb-async-driver-2.0.1驱动文件 jar MongoDB Async Java Driver Documentation Welcome to the MongoDB Async Java driver documentation hub. Getting Started The Getting Started guide contains ...
./config no-asm shared no-async --prefix=/usr/local/aarch64-linux-gnu-7.4.1/aarch64-linux-gnu --cross-compile-prefix=aarch64-linux-gnu- hostpad 移植 cp defconfig .config vi .config CONFIG_LIBNL32...
bas为boost_asio_server(baserver)的简称,是采用Half-Sync/Half-Async模式的服务器框架,使用c++实现,能够大大简化tcp server的开发工作。bas目前实现了以下功能: 1、底层基于boost及asio实现,支持ssl,跨越...
总的来说,"mongodb-async-driver-2.0.1.jar"这个包是Java开发者与MongoDB数据库交互的强大工具,它通过异步I/O和事件驱动的编程模型,提高了应用的并发能力和响应速度。通过这个驱动,开发者可以充分利用MongoDB的...
今天再找一个jar包,可是在网上找的都需要...(async-http-client-1.9.40.jar) maven: <groupId>com.ning</groupId> <artifactId>async-http-client</artifactId> <version>1.9.40</version> </dependency>
async-mysql-connector-1.6.jar async-mysql-connector-1.6.jar async-mysql-connector-1.6.jar async-mysql-connector-1.6.jar async-mysql-connector-1.6.jar async-mysql-connector-1.6.jar async-mysql-...
- 生产环境核心业务测试无异常。 #### 三、禁用步骤详解 禁用WLS-WSAT组件的操作分为两大类:非NodeManager模式和NodeManager模式。每种模式下又有两种不同的禁用方法。 ##### 1. 非NodeManager模式 **方法一:...
11:01:33,545 DEBUG ThreadPoolAsynchronousRunner:730 - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@5b28c08e -- Running DeadlockDetector[Exiting. No pending tasks.] 11:01:43,558 ...
前端开源库-babel-plugin-transform-async-to-generator-2babel-plugin-transform-async-to-generator-2是babel-plugin-transform-async到generator的一个分支,与此插件保持异步函数的原始参数名略有不同。