东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

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

评论

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

Linux的命令基本格式

二哈侠

Kubuntu(Ubuntu) 22.04安装OBS Studio教程。

百度搜索:蓝易云

Linux 运维 OBS studio Kubuntu

Linux之用户管理

百度搜索:蓝易云

云计算 Linux 运维 云服务器 ECS

APP采用原生开发还是混合开发,哪种方式好?

Speedoooo

小程序生态 混合开发 小程序技术 小程序容器技术 混合框架

借助文心大模型4.0轻松搞定统计报表

阿Q说代码

文心大模型 文心4.0 统计报表

Redis ReHash原理

宁静知行者

redis Redis 核心技术与实战

2023平台工程崭露头角,AI 带来新机遇与挑战

SEAL安全

AI 平台工程 企业号10月PK榜

HarmonyOS SDK,赋能开发者实现更具象、个性化开发诉求

HarmonyOS开发者

HarmonyOS

当1024程序员节遇上双十一 联想用专业品质PC产品向程序员致敬

科技之家

不被大厂“卡脖子”,选择WorkPlus拥抱生态伙伴时代

WorkPlus

国产芯片破晓时,信创行业正扬帆

脑极体

芯片

鲨海狂潮,存力崛起

白洞计划

存储

文心一言 VS 讯飞星火 VS chatgpt (120)-- 算法导论10.3 5题

福大大架构师每日一题

福大大架构师每日一题

语雀故障与反思,随便再领半年会员!

王磊

一个基于Vue3搭建的低代码数据可视化开发平台

互联网工科生

低代码 可视化 Vue3

WorkPlus专注私有化部署,为企业安全打造超级沟通协作APP

WorkPlus

五矿期货:悦数图数据库在金融期货行业的应用与实践探索

悦数图数据库

数据库 图数据库

悦数图数据库 x 阿里云计算巢:打造云上超大规模图数据库

悦数图数据库

图数据库

河南工业大学人工智能与大数据学院学子在第三届“火焰杯”软件测试开发选拔赛中 取得佳绩

测试人

软件测试

业务出海、高效传输、动态加速,尽在云栖大会「CDN与边缘计算」专场

阿里云视频云

云计算 云栖大会 边缘云

可重入锁ReentrantLock在性能测试常见用法

FunTester

今年双十一,00后在直播间当“捧哏”,月入8000

自象限

Databend 开源周报第 116 期

Databend

自主可控,WorkPlus助力企业业务与生态的连接

WorkPlus

产品研发团队协作神器!10款提效工具大盘点!

彭宏豪95

产品经理 团队协作 开发工具 产品研发 在线白板

【iOS逆向与安全】原生程序与WebView交互

小陈

逆向 iOS逆向 ios安全 逆向分析 逆向技术

低代码平台:业务开发的银弹

树上有只程序猿

低代码 应用开发

数据下钻分析?图表链接一招搞定!

观测云

数据分析 图表链接

英伟达4090显卡全面下架,有哪些替代方案?

青椒云云电脑

青椒云

显卡又又又涨价了!那就用青椒云吧!

青椒云云电脑

青椒云

用Python发一个优雅的朋友圈,1行代码搞定

程序员晚枫

Python 微信 图片 朋友圈

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