Lagom學習(一)

Lagom是JAVA系下響應式 微服務框架,其特性包括:web

  • 目前,大多數已有的微服務框架關注於簡化單個微服務的構建,Lagom將其擴展到了微服務所構成的系統,分佈式系統的複雜性。
  • 同步通訊使用HTTP,stream和異步消息使用websocket。消息序列化,默認使用JSON
  • 通訊默認是異步的,基於消息(akka actor)和流(akka stream)——可是,若是須要的話,也能夠考慮同步的REST。
  • 持久化默認是基於事件的——使用事件溯源Event SourcingCQRS——可是,若是須要的話,也支持JPA和NoSQL這些技術.
  • 完整的集成開發環境,經過這個環境,用一條命令就能管理上百的微服務。在整個服務中,支持自動化地代碼熱重載,而且可以與IDE以及其餘工具進行集成。開發環境是基於生產環境(經過使用ConductR)的,所以支持直接在生產環境下部署和擴展。(ConductR is a "batteries included" approach to managing distributed systems. No more cobbling together of service gateways, service locators, consolidated logging, monitoring and so forth)

Lagom是基Reactive理念的(響應式編程(Reactive Programming 或稱反應式編程)是一種流行的編程方法,編寫代碼是基於對變化的反應,響應編程可以簡化編程,它依賴於事件,代碼運行的順序不是代碼行的順序,而是和一個以上的事件有關,這些事件發生是以隨着時間的推移的序列。咱們把這一系列事件稱爲「流」。爲了可以對事件做出反應,咱們必需要監督它,在響應式編程中,監視事件被稱爲偵聽或訂閱該事件,將事件流能夠和一般數組比較。 他們其實很類似。 數組是在空間值的序列,而事件流是隨時間的值的序列。 在響應式編程中,全部函數操做均可以針對一個數組陣列上 - 好比過濾,reduce,mapping,結合,管道 - 也能夠在事件流完成! 咱們能夠過濾的事件流,reduce合併事件流的值,將事件流映射到另外一個另一個,結合組合事件流,將一個流的輸入輸出到另外一個)編程

 

Lagom倡導一些核心的原則:數組

  • 職責單一
  • 服務持有其數據:在Lagom中,默認的持久化模型使用的是事件溯源和CQRS——使用Akka Persistence和Cassandra——它具備很強的可擴展性、易於複製和保持徹底的彈性。另外,它的審計和調試也很棒,可以在任意時間點及時地重放和探查事件日誌。它還避免了傳統的對象-關係阻抗不匹配,過去咱們都是使用像JPA和Hibernate這樣的ORM技術來擺脫它所帶來的困擾。也就是說,使用微服務的一個好處就是服務能夠根據所要解決的問題自由選擇最合適的持久化模型,也就是所謂的Polyglot Persistence。
  • 始終保持異步:在Lagom中,通訊和IO默認都是異步和無阻塞的,這也是Reactive系統設計的基石。它的好處在於:經過更高效地使用資源,這種方式更加划算;它有助於最小化系統中對共享資源的競爭(擁擠)——在實現可擴展性、低延遲以及高吞吐量方面,這一般是最大的負擔所在;它有助於建立更加鬆耦合的系統,從而實現動態性、可用性和彈性。基於微服務的系統要擁抱這樣的現實,那就是要可以應對現在現實世界的挑戰

技術: 安全

  •    Akka:   Akka streams   、 Akka cluster;
  •    Cassandra 默認的持久化;
  •    ConductR;
  •    Guice - 依賴注入;
  •    Play 框架;
  •    Logback  & SLF4j 日誌;
  •    TypeSafe  Config Library: 類型安全配置庫;
  •    Jackson序列化;
相關文章
相關標籤/搜索