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

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:201526
用户头像

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

关注

评论

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

瞧瞧别人的Controller,那叫一个优雅!

快乐非自愿限量之名

Java 前端

百度发布 AI 眼镜:全球首搭中文大模型,支持边走边问;OpenAI 联合创始人宣布回归,主抓重大技术创新丨 RTE 开发者日报

声网

一图看懂云消息队列 RabbitMQ 版对比开源优势

阿里巴巴云原生

阿里云 云原生

澳鹏白皮书:2024年AI全景报告

澳鹏Appen

人工智能 行业报告

【JIT/极态云】技术文档--审批事件

武汉万云网络科技有限公司

淘宝订单信息获取接口,淘宝订单信息获取API

tbapi

淘宝API接口 淘宝店铺订单接口 天猫店铺订单接口 淘宝店铺订单API

2024-11-13:求出所有子序列的能量和。用go语言,给定一个整数数组nums和一个正整数k, 定义一个子序列的能量为子序列中任意两个元素之间的差值绝对值的最小值。 找出nums中长度为k的所有子

福大大架构师每日一题

福大大架构师每日一题

八招解决 Golang 性能问题

俞凡

golang

离散元仿真技术与AI融合,助力广泛行业实现创新突破

Altair RapidMiner

AI 仿真 DEM altair 离散元

MES系统助力中小企业数字化转型

万界星空科技

数字化转型 生产管理系统 mes 万界星空科技 中小企业数字化转型

更经济实惠的SD-WAN组网

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

海外网络加速的技术手段有哪些?

Ogcloud

网络加速 企业组网 海外网络加速 企业网络加速 CDN网络加速

GitLab 出现 500错误怎么解决?

极狐GitLab

gitlab

语音 AI 革命:未来,消费者更可能倾向于与 AI 沟通,而非人工客服

声网

项目管理十大知识领域详解:从理论到实践

爱吃小舅的鱼

项目管理 项目成本管理 项目整合

预算有限但想独立定制体育直播平台?3种开发方式揭秘

软件开发-梦幻运营部

覆盖30个省市自治区万余家医疗机构,原生鸿蒙助力打造智慧医疗便利体验

最新动态

怎么在线画用户旅程图?分享10个用户旅程图模板!

职场工具箱

职场 产品经理 在线白板 绘图工具 用户旅程图

快递鸟物流跟踪API代码参数接入流程

快递鸟

快递物流

应用网关的演进历程和分类

阿里巴巴云原生

阿里云 云原生 网关

比 Copilot 快两倍以上!在我的开源项目 AI Godot 桌宠中用通义灵码解决问题

阿里巴巴云原生

阿里云 云原生

业务、技术、管理,谁才是指标平台的用户?

Aloudata

数据仓库 数据分析 指标管理 指标平台 指标开发

Spring AI 再更新:如何借助全局参数实现智能数据库操作与个性化待办管理

EquatorCoco

人工智能 数据库 spring

七招提升工作效率

俞凡

生产力

比 Copilot 快两倍以上!在我的开源项目 AI Godot 桌宠中用通义灵码解决问题

阿里云云效

阿里云 云原生

优化数据管理,提升监测效率:TDengine与新疆地环院达成合作

TDengine

tdengine 时序数据库 数据库·

用 Zap 轻松搞定 Go 语言中的结构化日志

左诗右码

极狐GitLab如何禁止从 UI 上下载代码?

极狐GitLab

gitlab

云速搭助力用友 BIP 平台快速接入阿里云产品

阿里巴巴云原生

阿里云 云原生 BIP

Python 如何根据给定模型计算权值

不在线第一只蜗牛

Python 深度学习

权限系统:6个权限概念模型设计

不在线第一只蜗牛

数据库 大数据 运维

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