最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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:0038325

评论

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

九大核心专题,630页内容,肝了23天吃透,我收割了6个Java岗offer

程序知音

java面试 java架构 Java进阶 后端技术 Java面试八股文

如何让数据安全管理工作化繁为简?uDSP 十问十答

原点安全

数据库 数据安全 动态脱敏 分类分级 uDSP

更高效便捷的开发体验——Cloud Studio 编辑器命令行工具

CODING DevOps

软件工程 研发效能 Cloud Studio 在线编辑

Cloud Studio 内核升级之专注体验

CODING DevOps

软件工程 Cloud Studio 云端IDE

打造河南水务行业数智化标杆!中州水务电子化采购平台正式上线

用友BIP

DPU 厂商大禹智芯加入龙蜥社区,共建领先的 IT 基础设施

OpenAnolis小助手

开源 操作系统 龙蜥社区 DPU 大禹智芯

vue组件通信6种方式总结(常问知识点)

bb_xiaxia1998

Vue 前端

​GPT充当大脑,指挥多个模型协作完成各类任务,通用系统AutoML-GPT来了

工赋开发者社区

2023 届 36under36 发布,涛思数据 92 年联合创始人侯江燚上榜

爱倒腾的程序员

时序数据库 taosdata

vue组件通信方式有哪些?

bb_xiaxia1998

Vue 前端

量化交易系统开发合约策略

薇電13242772558

量化策略

Cloud Studio 内核升级之触手可及

CODING DevOps

软件工程 Cloud Studio 云端IDE

滴滴前端必会vue面试题汇总

bb_xiaxia1998

Vue 前端

Cloud Studio 云端开发保障企业源代码安全

CODING DevOps

软件工程 代码安全 Cloud Studio

工赋开发者社区 | Gartner发布2023年十大数据和分析趋势

工赋开发者社区

机器学习平台PAI支持抢占型实例,模型服务最高降本90%

阿里云大数据AI技术

人工智能 机器学习

创新灵感来源于用户实践,TDengine 首次公开四项专利申请

爱倒腾的程序员

时序数据库 #TDengine taosdata

使用增强版 singleflight 合并事件推送,效果炸裂!

捉虫大师

golang 性能优化

企业数字转型加速器!居然是他!该不会还有人没用上吧?

加入高科技仿生人

低代码 数智转型 智能科技

ipa文件怎么安装到iPhone手机上?

雪奈椰子

Alien Skin Eye Candy 7 for Mac汉化激活(PS眼睛糖果滤镜) v7.2.3.189

真大的脸盆

Mac Mac 软件 PS滤镜插件 特效滤镜插件

AIGC背后的技术分析 | 不止抠图、上色,看人工智能如何影响设计

TiAmo

AIGC AI绘画

阿里巴巴“高并发”核心笔记!《基础+实战+源码+面试+架构》

程序知音

Java 并发编程 高并发 java架构 Java进阶

美团前端vue面试题

bb_xiaxia1998

Vue 前端

技术干货|如何利用 ChunJun 实现数据离线同步?

袋鼠云数栈

开源

免费下载|《建设数字中国 升级数智底座-企业数智化底座白皮书》

用友BIP

2023用友BIP技术大会

Pose泰裤辣! 一键提取姿态生成新图像

华为云开发者联盟

人工智能 AI 华为云 华为云开发者联盟 企业号 5 月 PK 榜

众筹一个标题,救救孩子!被选中的包食宿来参加奇妙敏捷之旅·青岛站!

禅道项目管理

敏捷 敏捷实践

技术改变一切,实现企业数字化演变

智达方通

全面预算管理

这年头怕数据泄露?全密态数据库:无所谓,我会出手

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

北京.NET线下技术沙龙倒计时一天

MASA技术团队

.net MASA

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