【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

GOTO Berlin: 使用微服务分拆巨型系统

  • 2013-10-21
  • 本文字数:1032 字

    阅读完需:约 3 分钟

我们是否在构建过于庞大的系统,比实际需要更大的系统,ThoughtWorks 的首席顾问 James Lewis GOTO Berlin 大会上谈论“微服务——自适应的架构和组织”时以此开始了他的演讲。有示例表明所有制总体成本超过 90% 发生在一个系统启动之后。还有很多项目示例显示作为一个产业我们把大量的金钱花在了构建非常大的、复杂的并且根本没有用的系统上。

James 在大型组织中的经验表明,传统的构建系统的方式是将所有的功能放到一个大的应用程序中,使用一个大的数据库,但是这样做产生的问题引导着他进入了另一种构建系统的方式,新的方法将整个业务分离成更小的部分,正如微服务那样,每一个部分有它们自己的数据库。

对于他而言,之所以能够采用这种方式首先是源于六边形(Hexagonal)业务能力,参考了 Alistair Cockburn 的 Hexagonal 架构。一个单独的业务能力或者功能以及它自己的数据形成了一个六边形,一个使用 DDD 条款的有边界的上下文。然后所有的这些六边形会一起被放到一个更大的六边形里面,最终形成了一个系统。

其次,他关注为所有的服务构建一个统一的接口。在构建隔离系统时一种常见的集成技术是直接集成数据库访问。这种方式的问题是,它与系统的不同部分紧耦合,逻辑和数据很容易分散到系统的各个部分,让它变得难以预测变化的影响。James 喜欢使用在Web 上应用地很成功的集成技术,它们基于HTTP、Html 和超媒体,并使用 REST 进行通信。除了 REST 之外,James 还发现了两种非常有用的标准应用程序协议,它们是 Atom AtomPub

James 相信所有的这些小服务都应该遵循单一职责原则(Single Responsibility Principle),同时该原则应该应用到抽象的每一个层次,从对象到子系统业务能力,到形成系统的各个方面。

最后,James 谈到了可伸缩性。构建一个单独的支持所有功能的大系统使得它难以或者说不可能扩展系统的不同部分。即使系统中某些部分负载很高,而其他部分负载非常低,它们也必须以同样的容量运行。如果使用的是微服务,那么它们能够被部署到不同的服务器上,使用不同数量的服务器。另一种好处是不同的服务可以基于不同的平台实现。使用很多小服务的另一个至关重要的因素是自动地监控和部署,例如使用可编程的基础设施。过去这几年虚拟化、基础设施即服务(Infrastructure as a Service,IAAS)的进展让这些成为了可能。

2013 年的 GOTO Berlin 大会是 GOTO 大会首次在 Berlin 举行,本次大会有超过 400 位参会者和大约 80 位讲师。

查看英文原文 GOTO Berlin: Microservices as an Alternative to Monoliths

2013-10-21 06:201412
用户头像

发布了 321 篇内容, 共 115.9 次阅读, 收获喜欢 18 次。

关注

评论

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

NFT碎片化股权分割众筹dapp系统开发合约定制

开发微hkkf5566

从银行数字化转型来聊一聊,火山引擎VeDI旗下ByteHouse的应用场景

字节跳动数据平台

大数据 Clickhouse 数据平台 企业号 2 月 PK 榜

有哪些前端面试题是必须要掌握的

hellocoder2029

JavaScript 前端

高级前端面试题汇总

hellocoder2029

JavaScript 前端

javascript尾递归优化

hellocoder2029

JavaScript 前端

flutter系列之:Navigator的高级用法

程序那些事

flutter 架构 大前端 程序那些事

图文实录|澜舟科技合伙人李京梅:基于预训练模型的 AIGC 技术与应用实践

澜舟孟子开源社区

AI NLP 大模型 AIGC

Nodejs+Redis实现简易消息队列

coder2028

JavaScript 前端

大中华区联合企业捷成集团在 AWS 上使用 F5 防御恶意 Web 攻击

F5 Inc

多级分流

胖子笑西风

Java 架构 高并发 流量

BPMN2.0是什么?它能解决企业流程管理中哪些问题?

优秀

BPMN

前端一面常见面试题及答案

coder2028

JavaScript 前端

ChatGPT热度“狂飙”,OceanBase也去找它唠了唠

OceanBase 数据库

数据库 oceanbase

喜讯!华秋电子荣获第六届“蓝点奖”十佳分销商奖

华秋电子

国外的SRE都是干啥的?薪资如何?

龙渊秦五

SRE

使用 PGO 优化 Databend 二进制构建

Databend

20道前端高频面试题(附答案)

Geek_02d948

JavaScript 前端

IoT 存量设备 零改造,泛化SDK实现整体业务迁移上云——实践类

阿里云AIoT

前端开发 物联网 开发工具 传感器 测试技术

软件测试/测试开发 | 黑盒测试方法论-判定表

测试人

软件测试 测试开发 测试用例 黑盒测试

“ChatGPT之父”Sam Altman的成功之路!

这我可不懂

低代码

软件测试/测试开发 | 白盒测试方法论

测试人

软件测试 测试开发 白盒测试

webpack模块化的原理

Geek_02d948

JavaScript 前端

这些数据可视化工具必备

2D3D前端可视化开发

数据可视化 数据可视化工具 可视化大屏 可视化图表 sovitchart

助力硬件创新,华秋电子荣获科技创新示范奖

华秋电子

Nodejs相关ORM框架分析

coder2028

JavaScript 前端

javascript 高级编程 之 Array 用法总结

hellocoder2029

JavaScript 前端

一文详解ATK Loss论文复现与代码实战

华为云开发者联盟

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

全民开发者时代到来!华为云开发者日深圳站成功举办

华为云开发者联盟

云计算 华为云 ChatGPT 企业号 2 月 PK 榜 华为云开发者联盟

低代码开发平台 助力教育行业信息化建设

力软低代码开发平台

字节前端必会面试题(持续更新中)

Geek_02d948

JavaScript 前端

webpack实战,手写loader和plugin

Geek_02d948

JavaScript 前端

GOTO Berlin:使用微服务分拆巨型系统_SOA_Jan Stenberg_InfoQ精选文章