Skip to content

justmine66/MDA

Repository files navigation

MDA(devloping)

Message Driven Architecture

旨在让开发一个低延迟、高并发、高可用、基于消息驱动的分布式响应系统变得无比的简单。

最简单、最本质的开发模式

  • 接收哪些类型的消息
  • 发出哪些类型的消息

这就是你需要做的工作,就是这么简单,其他的事情,不用管,框架帮你搞定了,让你真正享受响应式DDD,仅仅处理领域问题!!!

特性

  1. 低延迟

    运用Event souring技术使整个业务处理部分完全运行在内存中,保障业务状态变更只发生局部数据访问。

  2. 高并发

    借鉴Actor model思想,使用Disruptor分发高并发消息到业务处理器,单线程处理整个业务逻辑,从源头解决并发问题。

  3. 高可用

    首先通过定期和异步地保存业务状态快照到远程持久化存储进行容错,然后再并行复制原始事件源数据到其他业务服务器,实时同步领域状态,当本机业务处理器宕机时,可以实现秒级切换。这不仅比基于最近快照副本重放最新事件源更快,而且也解决了单点故障的问题。

进度

目前正在为MDA开发高性能的消息分发组件Distruptor,它是保障业务处理模块单线程执行,且完全运行于内存中的关键因素。

交流群

QQ: 689418285

架构

Architecture Overview

Message Stream

Overall Structure

FQ

MDA与传统应用有什么区别?

以ASP.NET应用程序为例。

传统

一言以蔽之,接收HTTP请求,根据请求进行数据库变更。应用与数据库是两个分开的实体,所有的操作都是在做应用和数据库的同步一致性。

MDA

在MDA中,应用和数据库不再是分开的两个实体,而是被一个有状态的流处理应用代替,所以在MDA中,不在有应用和数据库的连接,它们被放在一起,基于内存中的变量处理请求,相比传统应用,性能非常卓越,而且也更适合更复杂的微服务场景。

基于数据是流的想法,万物皆消息,比如:命令、事件等,非常自然地将HTTP请求看作是由命令组成的序列,即命令流。将这些命令放入入站消息队列, 然后应用从中消费进行处理,当请求需要一个响应时,应用会将结果输出到出站消息队列,请求发送方消费出站队列获得响应。

About

(devloping)MDA aims to let developing a distributed message based reactive system easyly with low delay 、high availability、high concurrency。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages