$walker
Lagom · 微服务 · Scala

Lagom核心概念(一)

Lagom 响应式微服务框架 overview:设计理念、开发环境、持久化、API 概览与组件技术。

发表于 2020-01-09约 7 分钟Lagom微服务Scala

Lagom:响应式微服务框架

Lagom 在瑞典语中意为“恰到好处、刚刚好”。微服务的核心,是创建“大小合适”的服务——既具备恰当的功能边界与隔离级别,又能支撑起可伸缩、有韧性的系统。

Lagom 致力于让应用充分发挥“响应式宣言(Reactive Manifesto)“的潜力,同时提供高生产率的开发体验,以及无缝的生产部署能力。

Lagom 概念概览

Lagom 框架提供了一整套从开发到部署的库与开发环境:

部署:你可以选择任意平台,例如:

设计高可伸缩、并且在意外故障下仍能保持韧性的微服务系统,是一件极其困难的事。没有 Lagom 这样的框架,你就得自己处理高度分布式系统里那些棘手的线程与并发问题。遵循 Lagom 的设计初衷,你可以规避大量此类陷阱,同时提升生产率。而且 Lagom 不要求你推倒重来——它允许你在现有约束内渐进式地采纳响应式架构。例如,你可以用它来:

Lagom 的设计理念

先看看 Jonas Bonér 在《Reactive Microservices Architecture:分布式系统的设计原则》中提出的响应式微服务的几项基本要求:

以下 Lagom 特性正是为了践行这些最佳实践:

在多语言系统中使用 Lagom

Lagom 并不要求你系统里的每个服务都是 Lagom 微服务。毕竟,采用微服务的一大优势,正是可以为每个服务务实选择最合适的语言与技术。Lagom 对标准通信协议的“地道”用法,加上它与“设计驱动 API”思路的天然契合,使它能很好地融入这种多语言系统。

开发环境概览

借助「Lagom 入门」中介绍的 sbt 模板或 Maven 原型(archetype),几分钟即可搭好 Lagom 开发环境。这些模板无需任何编码、脚本或配置,就能建立以下内容:

用模板创建项目后,执行 runAll 命令即可启动所有运行时组件,立刻开始测试。

Lagom 的构建理念

如果做得对,采纳响应式微服务架构能显著提升研发组织的生产率与交付速度。Lagom 提供了一套灵活的构建方法,既支持个人开发,也支持团队协作,并能随业务增长而演进。你可以把所有微服务放在单个 sbt/Maven 构建(项目)中,也可以每个服务独立构建,或者把逻辑相关的服务组放进多个构建。

如何取舍?可参考以下利弊:

起步阶段,把所有服务放在同一构建里通常最合理:小团队用一个构建就够,也避免了拆多构建带来的滞后与依赖问题。随着系统与组织的发展,调整策略才有意义——比如随功能增长,把服务拆到不同的内部版本。团队同理。重要的是,不要害怕重构你的构建以满足组织需求。

组件技术

作为一个完整的微服务平台,Lagom 汇聚了一系列技术,并在其之上增加了价值。Lagom 使用并支持的库、工具与服务器,一部分由 Lightbend 开发,其余来自第三方与开源社区。使用 Lagom 开发时,你还能借助以下技术:

API 概览

Lagom 同时提供 Java 与 Scala API。Java API 以 Java 8 为目标,假定你熟悉 lambda、默认方法与 Optional。Lagom 主体用 Scala 实现,但即便你用 Java API 开发,这也是无需关心的实现细节。

Lagom 富有表现力的服务接口声明,让开发者能快速定义接口并立即着手实现。开发时你会用到的重要 API 包括: