写点什么

QCon 伦敦演讲:Gilt 转向微服务架构的挑战

  • 2015-03-29
  • 本文字数:1240 字

    阅读完需:约 4 分钟

在 Gilt 公司尝试使用微服务技术三年以来,我们可以看到一些明显的优点,体现在团队自主权、由API 定义边界、将复杂的问题分解为较小的问题等方面。不过,在工具的支持、集成环境和监控方面,还存在着诸多挑战。 Yoni Goldberg QCon 伦敦大会上的一场演讲中,为听众介绍了他们在转向微服务架构时所遇到的各种挑战。

Gilt 是一家做限时抢购业务的公司,Goldberg 是该公司的首席软件工程师,他为我们介绍道:Gilt 是一家于2007 年成立的典型的创业公司,刚开始时使用的技术是 Ruby on Rails 。仅两年之后,他们就需要在系统中运行几千个 ruby 进程,并且数据库也开始显得不胜负荷。

从那时起,他们转为使用 JVM 技术,并且开始了一个 Goldberg 称之为宏观 / 微观服务的时代,他的观点是,宏观服务更多地是针对某个特定的领域,例如销售或支付。而微服务是指将宏观服务分解为较小的服务。他们也为这些服务引入了专用的数据存储系统。他们首先为核心业务创建了 10 个宏观服务,这些服务目前还在应用中,同时也是其它所有服务所依赖的核心。使用这些核心宏观服务的是一系列的支持性服务,例如用户偏好服务,这些服务不是必不可少的,也不会由于这些支持性服务的故障使你的整个业务停顿下来。在这些服务之上,还有另一套服务,负责为所有用户创建视图。这套新的架构解决了 99% 的可伸缩性方面的问题,但也带来了一些其它问题。开发者在使用新服务的过程感到系统缺乏整体性,而且在代码方面缺乏清晰的自主权。其它的问题还包括部署、以及过长的整合周期。

为了克服这些问题,他们增加了微服务的数量,并且为团队授予了更大的权力,让他们不仅负责开发服务,同时也负责测试、部署和监控。这也同时澄清了自主权,基本上一个团队会负责一个服务。对于 Goldberg 来说,这套方案的最大优势在于每个微服务的范围减小了,因此变得更易于理解与探究。同时,他们通过将网页分解为较小的片段,生成了许多小型的 web 应用程序。(LOSA)

这些微服务之间产生了大量的内部依赖。在 Goldberg 看来,开发者所面对的最大挑战就是,对于每个变更,都需要确保不会因此造成其它服务的故障。如果某个变更是破坏性的,那就需要在多个小步骤中完成整个过程,在变更完成后,所有的客户端必须转为使用新的终结点,之后才可以删除旧的终结点。他们所经历过的一个问题是,许多 web 应用程序都在进行相同的方法调用,例如创建某个用户档案。为了克服这一点,他们创建了一种 Goldberg 称之为中间微服务的东西,这个服务知道要创建用户档案需要进行什么样的方法调用,web 应用可以根据这一信息进行正确的调用。

Goldberg 所提到的最后一项挑战是数据的归属。由于他们转向了每个微服务一个数据库的方式,因此生产了大量的小型数据库。他们需要找到某种方式,以管理每个数据库的 schema。他们选择了在某个关系型数据库中进行管理,并且使用了版本系统以跟踪它们的变更。

可以在这里下载到Goldberg 的演讲幻灯片,演讲的视频将在今后几个月之内发布到 InfoQ 网站上。

查看英文原文 A Modern Microservices Architecture

2015-03-29 08:462820
用户头像

发布了 428 篇内容, 共 199.2 次阅读, 收获喜欢 39 次。

关注

评论

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

Chrome操作指南——入门篇(十三)element小技巧

Augus

Chrome开发者工具 9月月更

【Jvm】Jvm类加载机制

石臻臻的杂货铺

JVM 9月月更

企业选择局域网即时通讯软件的必要性是什么?

BeeWorks

使用 NVIDIA CloudXR 从 Google Cloud 流式传输 VR 和 AR 内容

3DCAT实时渲染

Chrome操作指南——入门篇(十二)color picker(颜色选择器)

Augus

Chrome开发者工具 9月月更

Chrome操作指南——入门篇(十一)network

Augus

Chrome开发者工具 9月月更

每日算法刷题Day16-和为S的两个数字、数字排列、二进制中1的个数

timerring

算法题 9月月更

2021年中国自然语言处理软件及服务市场规模超200亿,市场保持高速增长,竞争格局远未稳定

易观分析

自然语言处理 市场

开发者有话说|在内卷中不断成长

timerring

9月月更 开发者有话说

我也不想学之PHP系列(1)

吉师职业混子

9月月更

[Javaweb]JSON

十八岁讨厌编程

json 后端开发 9月月更

[Spring Framework]AOP经典案例、AOP总结

十八岁讨厌编程

Java 后端开发 9月月更

速刷html一周目(下)

吉师职业混子

9月月更

牛客网趋势最热Java八股文,速度赶紧马上打包带走!

Java-fenn

Java 编程 程序员 java面试 Java面试题

金九银十必备!这份java面经让你轻松拿下45kOffer

Java-fenn

Java 程序员 面试 java面试 Java面试题

《软件开发的201个原则》思考:6. 低可靠性比低效率更糟糕

非晓为骁

个人成长 软件工程能力 高质量

优化帮助中心需要做到以下几点

Baklib

产品 帮助中心 在线设计

Baklib|怎样编写内嵌式的帮助文档?

Baklib

产品 产品经理 企业 帮助文档 在线设计

跟着卷卷龙一起学Camera--LTM

卷卷龙

ISP 9月月更

峰会倒计时1天!九位行业大咖邀您共启极速统一的数据分析新范式

StarRocks

Web3.0 杂谈 -#003(49/100)

hackstoic

Web3.0

2022-09-23:整数数组 stations 表示 水平数轴 上各个加油站的位置。给你一个整数 k 。 请你在数轴上增设 k 个加油站, 新增加油站可以位于 水平数轴 上的任意位置,而不必放在整数

福大大架构师每日一题

算法 rust 福大大

Github最新Java面试1658核心讲,助力百人入大厂!

Java-fenn

Java 编程 程序员 java面试 Java面试题

WorkPlus移动办公系统:打造安全专属、统一业务与运营的企业门户

BeeWorks

疫情时代下,线上协同办公成时下热点

Baklib

远程办公 企业 协同办公 在线设计

FAQ需要有哪些功能?哪些注意事项

Baklib

产品 产品经理 客户服务 FAQ

关于 Angular 应用 tsconfig.json 中的 target 属性

汪子熙

typescript 前端开发 angular web开发 9月月更

AI走向何方?我们在GTC 2022看到了这些趋势

脑极体

培养技能、增强信心、 获得亚马逊云科技认证

亚马逊云科技 (Amazon Web Services)

培训与认证

[Spring Framework]AOP初识

十八岁讨厌编程

aop 后端开发 9月月更

速刷html一周目(上)

吉师职业混子

9月月更

QCon伦敦演讲:Gilt转向微服务架构的挑战_架构_Jan Stenberg_InfoQ精选文章