使用Akka实现Reactive DDD

解道jdon 2021-05-04 14:47:12
使用 DDD 实现 Akka reactive


这是一个Akka实现reactive DDD开源项目,点按标题进入,相比传统架构, DDD模型能够划分复杂的业务领域为可管理的部件,从而考虑到可扩展性和一致性的要求。这意味着,它带来的有界上下文,事务边界和基于事件通信的DDD和CQRS等概念能够极大地推动构建可扩展的软件。

目前大部分系统都是基于关系型数据库和全局事务构建的,具体是指服务(banq注:EJB或Spring编制的服务),这种非常有限的体系结构其实不适合用于构建可扩展的软件。

由全局事务(比如JTA JavaEE服务器提供的)保证的基础数据连续一致性,不应被视为任何企业级系统的标准要求。只是我们都习惯了,但却又不能解决客户的实际需求。

为了从DDD / CQRS架构中充分受益,我们应该改变底层技术。今天我们已经有一个选择。有很多NoSQL数据库,并有一些解决可扩展性作为首要关注的平台。对于JVM ,Akka是最强大的开源平台,用于构建事件驱动的应用程序。最近Akka持久性模块已经发布,能够处理long-running/persistable流程照顾(这与聚合根和Sagas都是有关) 。这是一个伟大的功能,通过Akka就能作为构建企业应用的完整平台。

在这个源码中展示了DDD/CQRS EventSourcing等技术,使用Akka建立事件源的聚合根(AR)。这个想法很简单。聚合根应该被建模为一个接受命令和生产活动状态的Actor演员。因为Actor演员是消息驱动的,我们可以直接发送命令信息到聚合根,避免“命令来调用方法”。

Akka持久模块akka-persistence提供了为实现Actor持久化/状态的必要的构件。关键部件是akka.persistence.Processor特质。Processor是能够在转世时(Actor的启动或重新启动)恢复其状态的一个Actor演员。底层存储的类型是只可插拔的。

[该贴被admin于2014-04-16 09:25修改过]

版权声明
本文为[解道jdon]所创,转载请带上原文链接,感谢
https://www.jdon.com/46296

  1. Two way linked list: I'm no longer one-way driving
  2. Vue event and form processing
  3. Reactive TraderCloud实时外汇开源交易平台
  4. Reactive tradercloud real time foreign exchange open source trading platform
  5. Node.js REST API的10个最佳实践
  6. Ten best practices of node.js rest API
  7. Fiddler advanced usage
  8. Process from Vue template to render
  9. Promise up (asynchronous or synchronous)
  10. Principle and implementation of promise
  11. Vs code plug in sharing - run code
  12. Vue practical notes (1) introduction of Ant Design
  13. Vue actual combat notes (2) introduction of element plus
  14. Introduction to webpack
  15. Webpack construction process
  16. Vue notes
  17. The experience and lessons of moving from ruby megalith architecture to go microservice
  18. Using leancloud to add artitalk module to hexo blog
  19. Implementation of chrome request filtering extension
  20. Detailed introduction of beer import declaration elements and label quarantine [import knowledge]
  21. Gallop workflow engine design series 01 process element design
  22. VUE移动端音乐APP学习【十六】:播放器歌词显示开发
  23. Vue Mobile Music App learning [16]: player lyrics display development
  24. jquery cookie
  25. jquery cookie
  26. 体面编码之JavaScript
  27. JavaScript for decent coding
  28. React17 系统精讲 结合TS打造旅游电商平台
  29. React17 system combined with TS to build tourism e-commerce platform
  30. 2021-05-04 hot news
  31. HttpSession对象与Cooike的关系 以及 Cookie对象构造函数问题
  32. gRPC-Web:替代REST的gRPC的Javascript库包
  33. The relationship between httpsession object and cooike and the construction of cookie object
  34. Grpc Web: a JavaScript library package to replace rest grpc
  35. Building reactive rest API with Java - kalpa Senanayake
  36. PDF转HTML工具——用springboot包装pdf2htmlEX命令行工具
  37. Pdf to HTML tool -- Wrapping pdf2htmlex command line tool with springboot
  38. PDF转HTML工具——用springboot包装pdf2htmlEX命令行工具
  39. Pdf to HTML tool -- Wrapping pdf2htmlex command line tool with springboot
  40. Vue.js比jQuery更容易学习
  41. Node.js的Reactor模式 与异步编程
  42. Vue. JS is easier to learn than jQuery
  43. Reactor mode of node.js and asynchronous programming
  44. 详解JavaScript中的正则表达式
  45. Explain regular expressions in JavaScript
  46. 详解JavaScript中的正则表达式
  47. Explain regular expressions in JavaScript
  48. JS: closure
  49. Write your own promise in promises / A + specification
  50. Analysis of the core mechanism of webpack from loader, plugin to egg
  51. On the import and export of webpack
  52. Interpretation of lodash source code (2)
  53. Hexo series (5) writing articles
  54. 有人用过JMeter或用HttpUnit写过测试吗????
  55. Has anyone ever used JMeter or written tests in httpUnit????
  56. JavaScript异步编程4——Promise错误处理
  57. Leetcode 1846. Reduce and rearrange the largest element of an array
  58. JavaScript asynchronous programming 4 -- promise error handling
  59. SQLite是一种经典的无服务器Serverless
  60. 通过Spring Boot Webflux实现Reactor Kafka