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序列化;
相关文章
相关标签/搜索