速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

评论

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

​Kubernetes的演变:从etcd到分布式SQL的过渡

互联网工科生

Kubernetes etcd 部署

带你读论文丨S&P21 Survivalism: Living-Off-The-Land 经典离地攻击

华为云开发者联盟

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

Capture One Pro 22 for Mac(RAW图像处理软件) v15.4.2.12中文版

mac

Raw图像处理软件 苹果mac Windows软件下载 Capture One Pro 22

和鲸 ModelWhale 与中科可控多款服务器完成适配认证,赋能中国云生态

ModelWhale

云原生 服务器 信创

raw图片处理 DxO PhotoLab 6中文直装版

mac大玩家j

图像编辑 Mac软件 编辑图像 raw图像

亚信科技AntDB数据库连年入选《中国DBMS市场指南》代表厂商

亚信AntDB数据库

数据库 AntDB AntDB数据库 企业号 8 月 PK 榜

CAD设计软件autocad 2024下载 autocad 2024安装方法

mac

AutoCAD 2024 苹果mac Windows软件 CAD设计软件

让企业内部开发游刃有余,平台工程到底是什么?

树上有只程序猿

DevOps 软件开发 平台工程

介绍一下我们的开源“充电之旅” - 两位新晋 Apache Flink Committer 专访

字节跳动云原生计算

flink 开源 字节跳动 流式计算

拯救开源:《网络韧性法案》即将带来的悲剧

开源雨林

开源 LICENSE

低代码系列——初步认识低代码

互联网工科生

软件开发 低代码 JNPF

REST 内容协商详解:理论解读与实际应用指南

Liam

程序员 前端 后端 web开发 RESTful API

生成式AI:人工智能新范式,引领生产力革命

百度开发者中心

#人工智能 文心一言

Spring高手之路12——BeanDefinitionRegistry与BeanDefinition合并解析

砖业洋__

spring BeanDefinition BeanDefinitionRegistry BeanDefinition合并

画质提升+带宽优化,小红书音视频团队端云结合超分落地实践

小红书技术REDtech

音视频 小红书

小米交卷大模型,全新小爱同学实测来了

Openlab_cosmoplat

小米 大模型 小爱同学

开放网关架构演进

阿里技术

网关 开放网关

九科信息成功签约中交财资管理(香港)有限公司-境外银行账户可视化管控流程自动化系统项目

九科Ninetech

RocketMQ 5.0 架构解析:如何基于云原生架构支撑多元化场景

阿里巴巴云原生

阿里云 RocketMQ 云原生

备份或同步数据?跨国大文件传输的不同需求与解决方案

镭速

大文件传输 跨国文件传输

MySQL的Json类型字段IN查询分组和优化方法

北桥苏

MySQL SQL优化 虚拟字段

华秋硬创联合安创加速器,加速和创新赋能技术驱动型创业者

华秋电子

创业

中路对线发现正在攻防演练中投毒的红队大佬

墨菲安全

网络安全 npm 投毒 投毒分析

手把手带你玩转HetuEngine:资源规划与数据源对接

华为云开发者联盟

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

生成式AI技术:引领未来内容创作

百度开发者中心

物联网, 云计算, 文心一言 人工智能、

关于云原生开源开发者沙龙「微服务X消息队列专场」的延期通知

阿里巴巴云原生

阿里云 微服务 云原生 消息队列

报名开启 | HarmonyOS第一课“营”在暑期系列直播

HarmonyOS开发者

HarmonyOS

解决跨时区跨语言的国外大文件传输问题

镭速

跨国传输大文件 传输大文件 国外大文件传输

揭秘!CIPU最新秘密武器–弹性RDMA的技术解析与实践

阿里云弹性计算

NineData成功通过AWS FTR认证,一款值得信赖的数据管理工具!

NineData

数据库 AWS 数据管理 NineData FTR 认证

开发者不需要成为 K8s 专家!!!

北京好雨科技有限公司

Kubernetes 开发者 PaaS #云原生

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