写点什么

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

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

关注

评论

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

阿里副总裁浅雪对话VMware全球副总裁原欣:阿里云携手VMware,助力企业数字化转型

大咖说

云计算 阿里云 数字化转型 阿里巴巴‘

有了这个新特性,一扫实例存储数据丢失风险!

亚马逊云科技 (Amazon Web Services)

存储

低代码音视频开发训练营正在火热报名中!

阿里云CloudImagine

阿里云 低代码 低代码平台 媒体处理 视频云

Linux之chown命令

入门小站

Linux

图形测试分析毫无头绪?HarmonyOS图形栈测试技术帮你解决|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

快来一起玩转LiteOS组件:RHas

华为云开发者联盟

C语言 LiteOS 组件 RHas 哈希函数库

十三部门修订发布《网络安全审查办法》,企业数据安全合规应尽早

行云管家

云计算 互联网 网络安全 数据安全

有道围棋 AI:智能匹配儿童棋力的良师益友

有道技术团队

网易有道 围棋

kafka的优缺点都有那些

编程江湖

kafka

EventBridge 最佳实践场景:流计算 Oceanus 告警消息实时推送

腾讯云大数据

flink 流计算 Oceanus

二哥的小破站终于上线了,颜值贼高!

沉默王二

Java 分布式

网络安全好学吗?手把手教你学利用漏洞渗透 网络安全工程师学习资料汇总

学神来啦

教程直播第6期 | OceanBase 如何进行 Benchmark 测试及调优

OceanBase 数据库

oceanbase OceanBase 开源 OceanBase 社区版

java开发框架Redis之sentinel和集群

@零度

redis JAVA开发

魔电熊户外电源体验|让户外露营实现用电自由!

科技热闻

在线CSS代码压缩美化工具

入门小站

工具

优化服务器存储架构——Amazon EBS io2 Block Express正式推出!

亚马逊云科技 (Amazon Web Services)

存储

SAP HANA Delivery Unit概念简述

汪子熙

数据库 内存数据库 1月月更

前端开发之CSS样式——自定义滚动条

@零度

CSS 前端开发

专家带你吃透 Flink 架构:一个新版 Connector 的实现

腾讯云大数据

flink 流计算 Oceanus

开源堡垒机可以一直免费使用吗?为什么?

行云管家

开源 网络安全 堡垒机

【工具推荐】Github国内访问速度太慢?一招教你轻松搞定

恒生LIGHT云社区

GitHub

TDengine助力京东云IoT数据统计改造

TDengine

数据库 tdengine OpenTSDB

设计是表达的艺术,不是艺术的表达

Yisen玩设计

在Amazon SageMaker中灵活使用多种存储服务

亚马逊云科技 (Amazon Web Services)

存储

大数据开发之Hive表数据同步至HBase

@零度

大数据 hive HBase

Tableau Day2: 可视化入门图形制作

贾献华

1月月更

常用开源监控系统分析推荐(必备知识)|附优质监控书籍资源

云智慧AIOps社区

安全 监控宝 监控工具 开源软件 运维管理

手把手教你使用 Timestream 实现物联网时序数据存储和分析!

亚马逊云科技 (Amazon Web Services)

存储

利用Graviton2和CloudFront为S3对象存储动态生成缩略图

亚马逊云科技 (Amazon Web Services)

存储

iOS开发-数据结构与算法学习之排序篇

iOSer

ios 算法 数据结构与算法 ios开发 iOS 知识体系

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