<mark id="5z1b5"><cite id="5z1b5"></cite></mark>

        <video id="5z1b5"></video>
          <noframes id="5z1b5"><ins id="5z1b5"></ins>

            <em id="5z1b5"></em>

            <dl id="5z1b5"><ins id="5z1b5"></ins></dl>

              開源項目:Jdon Framework

              案例      文檔    Github    JiveJdon

              項目新聞:
              (1)JiveJdon是基于Jdon框架實現的復雜DDD應用案例,在Jdon.com運行近十年。
              (2)增加了基于事件溯源+Saga+消息系統+流程管理器的分布式事務替代實現:賬戶轉賬代碼

              (3)多核并發測試代碼,驗證Jdon框架支持無鎖并發和內存事務,參考:Adaptive如何基于LMAX架構實現服務級別的高性能分布式事務?

              2013-09-29 6.6.8 CQRS Command/Event異步并發輸入輸出

                Jdon Framework是一個DDD+CQRS+EventSourcing實施框架,其特點是無需任何消息中間件如Apache Kafka,直接支持基于領域模型的發布/訂閱(pub-sub)的異步編程模型,可以直接將“命令”以非堵塞方式傳遞給領域模型,也可以監聽領域模型中發生的領域事件。能夠快速地將領域驅動設計(DDD)落地為異步、高并發、高吞吐量的Java應用系統 。

                JdonFramework將DDD和領域事件靈活結合在一起,實現業務邏輯和數據庫等基礎設施分離,幫助你實現一個清晰且流暢的六邊形軟件架構:

               

                由領域模型聚合根實體(Aggregates)在用例場景下接受一個命令(Command)指示,完成業務邏輯任務后觸發了一個領域事件(Domain Event)。

                不同有界上下文之間通過領域事件通訊,發布/訂閱(pub-sub)異步機制符合DDD有界上下文映射的客戶/提供者模式(Customer/Supplier)。

              微服務的分布式事務

                通過記錄導致狀態改變的領域事件,可以實現柔性的微服務架構下的分布式最終一致性事務,JF關鍵是保證了記錄領域事件時實現單寫原則,避免并發爭奪問題,事件日志的追加操作是原子的,也是相互隔離的,借助Apache Kafka的近似正好一次交付(其他消息系統需要手工處理冪等性),以及Saga模式實現全部回滾,可以在微服務分布式環境中實現近似ACID事務。

                事件溯源 + Saga流程管理器 + 消息系統的正好一次交付=新的分布式事務中間件:

                具體實現架構圖如下:流程管理器負責流程向前推動或向后回退回滾,當參與流程或事務會話的任何一個步驟出現問題,流程管理器向已經處理過的聚合根實體發出回退命令,各個聚合根由此完成業務上的冪等性。賬戶轉賬代碼是這一架構的原理實現,具體代碼分析可見JdonFramework的Github首頁

              下圖是結合Apache Kakfa實現的微服務下的事件溯源架構:

              清潔Clean架構和六邊形架構

                這兩個架構的核心點都是將業務邏輯和基礎設施分離,JdonFramework的pub-sub發布訂閱模型將業務領域與基礎設施實現了分離,領域模型通過發送消息事件給基礎設施,驅動其相應功能,包括數據庫表的存儲。JF提供的命令和事件模型可以實現一個六邊形的清晰、干凈、整潔的架構,真正將領域模型成為業務核心,而傳統系統基本都是以關系數據庫Orcalce等為業務核心,讓數據庫技術污染了自己的業務模型,不具有可持續性,見架構整潔之道,實現案例見JiveJdon

                

              歷史

                JF誕生于2004年底,作為中國第一個開源Java框架,創新地運用了當時剛剛出現的新的技術思想Ioc/DI(依賴注入Dependency Injection),JF比當時Spring 1.x率先支持了注入的自動匹配;同時遵循約定優于配置以達到快速開發。

                Jdon Framework(簡稱JF)是國內第一個IOC/AOP開源框架,首個DDD領域驅動設計Java實施框架。

                2009年JF 6.1版本引入了事件驅動(Event Sourcing)和In-memory內存緩存概念,2011年7月Martin Fowler推薦的LMAX架構也采取類似架構,其性能達到每秒處理600萬訂單,每微秒延遲獲得100T的吞吐量。傳統編程是在一個線程內進行順序同步編程,而JF的事件編程是一種無鎖的并行異步編程模型,大大發揮了現代多核CPU潛力。

                JF 6.5版本為推廣適合多核CPU的無堵塞并發編程范式進行了探索,使用了Domain Events和DCI等不同抽象層次對并發編程進行了封裝,從而降低開發者使用并發編程的難度,見 無堵塞的并發編程DDD DCI和領域事件

                JF與其他開發工具相比:JF是一個領域驅動設計DDD框架。JF是快速性 靈活性和可伸縮性綜合平衡的產物,它帶來了多快好省的簡單的解決之道(simplify the best):對于小項目,使用JF可以開發出高質量可擴展的好的系統;對于大項目,使用JF可以更快地開發出系統。

               

              JF關鍵技術特點

              1. DDD(Domain-Driven Development),開發基于領域驅動設計(Domain-Driven Design)應用, 提供基于內存的領域模型(in memory model), 運行時刻領域對象作為“總司令部”通過Domain Events驅動命令技術構架為之服務,探索了一條真正以業務對象為核心的嶄新的DDD落地編程模型。

              2. Reactive Actors模型,類似ERLang或Scala中的信箱, 事件驅動架構Event-driven Architecture(EDA) ,異步領域事件,并發策略, 懶加載賦值(Lazy initialization or evaluation),結合Kafka/RabbitMQ/ZeroMQ/JMS可實現大型分布式可伸縮的架構。

              3. 易于實現事件溯源EventSourcingCQRS架構

              4. 依賴注入DIAOP框架, 類自動配對注射autowiring/Autowired,無需指定,提高重構效率,所有類最大限度松耦合,包括框架本身的類或構件都是可替換的,提供強大可定制能力;靈活簡單的AOP,沒有復雜AOP腳本代碼,可以將任何POJO引入introduce作為攔截器。

              5. 命令查詢分類架構Command Query Responsibility Segregation(CQRS/CQS), 提供模型的增刪改查命令流程整合,不必編寫MVC模式中Controller控制器,防止新手將業務寫入控制器。服務命令模式:可根據url參數直接激活對應的Service方法;提供大量數據批量查詢自動分頁和緩存性能優化功能。

              6. JF可以保證應用系統的良好性能和可擴展性,容易接入各種持久層框架如Hibernate或Key-value存儲或NoSQL數據庫。可使用分布式緩存如Ehcache + terracotta/memcached擴展到大型分布式云系統。

               

              #CQRS架構 #領域事件 #工作流 #Saga事務

              下載      文檔       演示      jdon英文    企業培訓咨詢

              美女漫画大全