开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

Lagom:一个新的微服务框架

  • 2016-03-16
  • 本文字数:2031 字

    阅读完需:约 7 分钟

Lightbend (最近由 Typesafe 改名而来),是 Akka 背后的公司,最近发布了一款开源的微服务框架, Lagom (在瑞典语中,“刚刚好的”意思),它构建在 Reactive 平台之上。尤其是使用了 Play 框架和 Akka 家族产品,并添加了 ConductR 用于部署。默认情况下,Lagom 是消息驱动和异步的,使用分布式 CQRS 持久化模式,并将事件溯源(event sourcing)作为主要实现。

按照 Jonas Bonér (他是 Lightbend 的 CTO 和 Akka 的创建者)的说法,将其命名为 Lagom 的原因在于移除微服务对于“微”(也就是规模)的强调,它的关注点在于正确规模的服务,而不仅仅是小型的服务。

在与 InfoQ 的一次交流中,Bonér 分享了他对这个新框架的观点。

InfoQ:你认为 Lagom 的主要特性是什么呢?

Bonér:我认为 Lagom 与其他微服务框架相比,与众不同的特性包括:

  • 目前,大多数已有的微服务框架关注于简化单个微服务的构建——这是比较容易的一部分内容。Lagom 将其扩展到了 _ 微服务所构成的系统 _,这是大型的系统——也是较为困难的一部分内容,因为在这里我们会面临到分布式系统的复杂性。
  • 通信默认是异步的——基于消息和流——但是,如果需要的话,也考虑到了使用其他的方案,如同步的 REST。
  • 持久化默认是基于事件的——使用事件溯源和 CQRS——但是,如果需要的话,也支持 JPA 和 NoSQL 这些技术。
  • 完整的集成开发环境,通过这个环境,用一条命令就能管理上百的微服务。在整个服务中,支持自动化地代码热重载,并且能够与 IDE 以及其他工具进行集成。开发环境是基于生产环境(通过使用 ConductR)的,因此支持直接在生产环境下部署和扩展。

InfoQ:你是否将 Lagom 描述为带有一定倾向性的框架?

Bonér:是的,它具有一定的倾向性。我们在构建 Akka 和 Play 框架的过程中学到了很多知识,并且看到很多客户使用我们的平台来构建微服务——他们采取这种做法已经有很多年了,甚至比微服务这个词出现地还要早。

Lagom 是基于 Reactive 理念的(这种理念定义在 Reactive 宣言之中)。它有很多特定的含义并且指导了 Lagom 的设计,其目标在于使直接做“正确的事情”变得更加容易,并为此提供了保护措施,也就是好的默认实现。但是,如果你有合理的理由并且明白自己在做什么的话,也是允许对其进行更改的。

InfoQ:更具体来讲,Lagom 鼓励的做法是什么?

Bonér:我在上面进行了简单地介绍,接下来详细阐述一下。Lagom 倡导一些核心的原则,并使它们更易于实现,这些原则如下所示:

  • 通过非共享的设计,实现真正的隔离:这意味着 Lagom 中的服务都是自我管理、松耦合以及位置可变的(对位置透明)——对于可恢复性和弹性来讲,这都是必要的需求。在 Lagom 中,微服务是基于如下技术构建的:
    • Akka Actors:基于 Actor 模型实现了非共享架构(share nothing architecture),从而提供了隔离性。
    • Akka Cluster:微服务系统是由一组独立且互相隔离的服务所组成的,Akka Cluster 为这些服务提供了可恢复性、分区、复制、可扩展性以及负载均衡。
    • ConductR:从最底层提供了隔离性,为微服务实例实现运行时管理。
  • 职责单一:在 Unix 哲学中,有一条古老的原则:“所编写程序要只做一件事,并将其做好”,这条原则帮助很多开发人员编写的程序符合如下的特点:只有一项目标、很小但是具备定义良好的责任并且能够很容易地与其他小程序进行组合。这是很明智的,在这个更加关注微服务的时代,它会比以往更加重要。这其实与规模大小没有什么关系。微服务这个词其实很糟糕,因为它会让我们关注规模大小和代码行数。通过移除大多数的样板式代码,Lagom 会试图简化设计,能够让我们关注于服务的本质,同时创建明晰的协议也会变得很容易,不管这些协议是通过异步消息、请求 / 响应还是通过持续的流来进行组合的。
  • 服务持有其数据::每个服务不仅要有行为,还要持有它的数据,服务会一直延伸到持久层。在 Lagom 中,默认的持久化模型使用的是事件溯源和 CQRS——使用 Akka Persistence 和 Cassandra——它具有很强的可扩展性、易于复制和保持完全的弹性。另外,它的审计和调试也很棒,能够在任意时间点及时地重放和探查事件日志。它还避免了传统的对象 - 关系阻抗不匹配,过去我们都是使用像 JPA 和 Hibernate 这样的 ORM 技术来摆脱它所带来的困扰。也就是说,使用微服务的一个好处就是服务可以根据所要解决的问题自由选择最合适的持久化模型,也就是所谓的 Polyglot Persistence。
  • 始终保持异步:在 Lagom 中,通信和 IO 默认都是异步和无阻塞的,这也是 Reactive 系统设计的基石。它的好处在于:通过更高效地使用资源,这种方式更加划算;它有助于最小化系统中对共享资源的竞争(拥挤)——在实现可扩展性、低延迟以及高吞吐量方面,这通常是最大的负担所在;它有助于创建更加松耦合的系统,从而实现动态性、可用性和弹性。基于微服务的系统要拥抱这样的现实,那就是要能够应对如今现实世界的挑战。

Lagom 第一个针对 Java 的 MVP 版本可以在 GitHub 上获取,Scala 版本将会稍后推出。

查看英文原文: Lagom, a New Microservices Framework

2016-03-16 19:0038674

评论

发布
暂无评论
发现更多内容

Syncovery for mac(文件备份和同步工具)v10.14.9激活版

iMac小白

MATLAB R2023a for Mac(商业数学软件)v9.14.0 (2337262)激活版

iMac小白

拼多多API接口详解:自动化获取商品信息的高效指南

Noah

Deskew Technologies Gig Performer for mac(现场控制乐器和声音机架 ) v5.0.9版

Mac相关知识分享

MacBook Mac软件 音乐软件 音频处理软件 图形图像软件

批量图像水印添加实用程序Watermark Sense for Mac

Mac相关知识分享

图像处理 Mac软件 mac软件下载

前端开源汉字书写笔画库

大师兄

JavaScript GitHub Vue

强大的任务管理工具Tower for Mac v11.1 注册激活版

iMac小白

Tower下载 Tower mac版 Tower破解 Tower for mac

mac电脑数据恢复软件Aiseesoft Data Recovery for Mac v1.8.22激活版

iMac小白

Native Instruments Komplete Kontrol for mac(音源制作软件) v3.2.1版

Mac相关知识分享

MacBook Mac软件 mac软件下载 音乐制作软件

AI并非万能,有效沟通是关键

Bruce Talk

AI 敏捷开发 Product Owner 提示词工程

Arweave的挑战与机遇:解读AO技术与未来生态

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Proxyman Premium for Mac(网络调试和分析工具)v5.5.0激活版

iMac小白

DBeaverUE for Mac(数据库管理软件) v24.1.0 版

Mac相关知识分享

数据库 Mac Mac软件 mac软件下载

IBM SPSS Statistics for Mac(spss数据统计与分析软件)v27.0.1中文激活版

iMac小白

Axure RP 9 for Mac(交互原型设计软件)v9.0.0.3744中文激活版

iMac小白

PDF Reader Pro for mac(全能pdf编辑阅读软件)v4.0.2直装激活版

iMac小白

Video Cut Crop Join for Mac(mac视频剪辑合并软件 ) v3.9版

Mac相关知识分享

Mac软件 mac软件下载 视频编辑软件 视频处理软件

首季目标超额完成,生成式人工智能驱动交易和合作伙伴扩展助力

财见

VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS 集成网卡驱动 Marvell AQC 网卡定制版

sysin

esxi 驱动 网卡 unlocker aqc

Aiseesoft Data Recovery for Mac(专业数据恢复软件)v1.8.22激活版

iMac小白

Video Cut Crop Join for Mac(mac视频剪辑合并软件 )v3.9激活版

iMac小白

Lagom:一个新的微服务框架_语言 & 开发_Jan Stenberg_InfoQ精选文章