面向未来:DoorDash 从单体迁移到微服务架构

SpringBoot+Vue+MySQL 高校学科竞赛平台 完整可运行版(源码+文档) 本项目基于SpringBoot+Vue+MySQL构建高校学科竞赛管理平台,覆盖学生、教师、领队教师、管理员四大角色,实现竞赛发布、报名、刷题、评分、公示等全流程闭环管理。系统架构清晰,技术主流,配套完整源码、数据库脚本、万字论文、开题报告、答辩PPT及部署文档,支持一键运行,适用于毕业设计、课程设计及院系二次开发,真正实现“开箱即用”。 阅读详情

在传统的 Web 应用程序开发中,工程师编写代码、编译、测试, 然后作为一个单元部署并提供功能服务。但是,如果一个网站有数以百万计的终端用户在持续使用,并且有成百上千的工程师在持续开发,这种方法就面临着很大的挑战了。

DoorDash 的平台就面临着类似的情况。起初,该平台是在单个大型代码库中开发的,2019 年,随着公司业务的增长,这种开发模型的缺点暴露了出来,开发人员的适应期越来越长,测试等待时间增加,开发人员的挫败感越来越强,应用程序的脆弱性越来越大。经过一番讨论,公司开始计划从单体迁移到 微服务架构 。

其实,工程团队已经在许多场景中使用了微服务,如流量高、业务重要、需要具备扩展性的 Web 服务。从根本上说,就是单体代码库的功能被分解成单独的、具有容错性的服务。最终,工程师管理的是一些相对较小的对象的生命周期,变更更容易理解了,也就更不容易出错。在部署频率和策略方面,这种架构很灵活。

2019 年底,在 DoorDash 做个变更需要全体总动员,甚至要暂停所有新特性的开发,以便公司可以专注于构建一个面向未来的可靠平台。虽然从单体中提取业务逻辑的工作仍在进行,但我们的微服务架构已经上线运行,为数以百万计的客户、商家和 Dasher(我们对送货司机的称呼)提供服务,他们每天都通过我们的平台下单、备货和配送。

业务增长

2013 年,DoorDash 涉足食品配送领域。那时,从工程师的角度来看,我们的任务是快速构建一个原型,通过电话和电子邮件这种基本的通信方式收集外卖订单并分发给一些企业。这个应用程序应该可以从客户那里接收订单,并将它们传达给餐馆,同时还要吸引 Dasher 接单并把食品送给客户。

起初,团队决定使用 Django (这以前是、现在仍然是一个一流的 Web 框架)构建 DoorDash Web 应用。事实证明,Django 很适合一个小型开发团队在短时间内构建最小可行产品。Django 还支持新特性的快速迭代,在早期,这非常有价值,因为业务逻辑一直在变。随着 DoorDash 的工程师越来越多,网站的复杂性越来越高,技术栈开始围绕 Django 强化。以敏捷性为首要目标,DoorDash 工程团队不断在这个单体系统上迭代,同时还要构建业务基础,扩展应用程序的功能。

在头几年,采用单体架构构建 Web 应用程序体现出了多方面的优势。主要的好处是,在单体上开发缩短了新特性上市时间。Django 为工程团队提供了一个前后端统一的框架,一个代码库,一种编程语言,一套共享的基础设施组件。在开始的时候,这种方法让 DoorDash 的 Web 应用程序走了很远,因为它让开发人员可以快速行动,把新特性提供给客户。由于整个代码库都在一个存储库中,所以可以通过重用组合模式将新增逻辑对接到已有的框架和基础设施上,加速开发。

不管是工程层面,还是操作层面,部署单个服务的成本都包含在里面了。我们只需要维护一个测试和部署管道,以及数量有限的云组件。例如,一个公共数据库支撑着后台大部分功能。

图 1:DoorDash 的原始架构,前端和后端都在一个 Django 应用程序中,数据访问基于单个 PostgreSQL 实例。

除了操作简单外,单体方法的另外一个好处是,当一个组件调用其他组件时不会产生服务间网络延迟成本。在单体部署时,不需要考虑组件间 API 向后兼容性、慢速网络调用、重试模式、断路器、负载分片策略以及其他常见的故障隔离做法。最后,由于所有数据都在一个数据库中,对于需要从多个领域聚合信息的请求,只需一次网络请求就可以从数据源查询到。

DoorDash驱动程序:Doordash驱动程序脚本 立即下载

相关推荐

Camera tuning flow相机调试流程

相机调试流程分为三大模块:ProcessRaw处理原始数据(黑电平校正、阴影校正),3A实现自动控制(曝光/对焦/白平衡),ISP进行图像精加工(伽马校正、锐化降噪、色彩处理)。三个阶段环环相扣,前阶段为后阶段提供基础,最终输出画质优良且风格化的图像。

weixin_64706696的博客 1230

数字IC面试核心:从MUX基础到Glitch-Free时钟切换电路深度剖析

本文深入剖析数字IC设计中的MUX基础原理及其在Glitch-Free时钟切换电路中的应用。从二选一MUX的门级实现到时钟切换中的毛刺问题,详细讲解了同步切换机制和工程优化技巧,帮助工程师掌握高速时钟电路设计的核心要点。

weixin_42629815的博客 328

Python程序—定子故障三相永磁同步电动机振动与电流数据集

1.0 kW 电机匝间短路故障数据: 正常匝间短路振动数据: 匝间短路故障,严重度为2.26%: 匝间短路故障,严重度为2.70%: 匝间短路故障,严重度为3.35%: 匝间短路故障,严重度为4.41%: 匝间短路故障,严重度为6.48%: 匝间短路故障,严重度为12.17%: 匝间短路故障,严重度为21.69%1.5 kW 电机匝间短路故障数据: 正常匝间短路振动数据: 匝间短路故障,严重度为1.57%: 匝间短路故障,严重度为1.88%: 匝间短路故障,严重度为2.34%

m0_66465741的博客 1322

CATIA CAA开发环境搭建避坑指南:从授权服务到VS配置全流程

本文提供了一份详尽的CATIA CAA开发环境搭建避坑指南,涵盖从授权服务(DSLS)安装、Visual Studio版本匹配与集成配置,到编译调试全流程。重点解析了授权服务无法连接、模块加载失败等典型问题的解决方案,强调版本严格对应与纯英文环境是成功搭建的关键。

redis7keeper的博客 575

高效静音黑科技 —— 单相直流无刷电机驱动器

然而,传统的BLDC电机驱动通常依赖于三相架构,电路复杂,成本高昂,且在低功率应用中显得有些“大材小用”。单相直流无刷电机驱动器作为一项高效、静音、经济的技术,正逐渐改变着各个领域的电机驱动方式。其精巧的控制策略、显著的优势以及广阔的应用前景,都预示着这项技术将在未来扮演越来越重要的角色。它相较于传统的三相驱动,显著简化了电路结构,降低了成本,尤其适用于低功率、对静音要求极高的应用场景。通过这些模块的协同工作,单相直流无刷电机驱动器能够实现对电机速度、扭矩的精确控制,并最大程度地降低噪声和振动。

wen8789的博客 1767

ResNet改进(51):基于轴向注意力机制的改进ResNet模型

本文介绍了一种结合轴向注意力机制的改进ResNet模型。 通过在传统CNN中引入轴向注意力,我们能够在保持计算效率的同时,增强模型对图像全局上下文的理解能力。这种混合架构结合了CNN的局部特征提取优势和注意力机制的全局建模能力,在图像识别任务中表现出色。 轴向注意力机制的应用不仅限于ResNet,也可以灵活地集成到其他CNN架构中。 未来可以探索更多注意力变体,或将其应用于特定领域任务,如医学图像分析、自动驾驶等需要精确空间理解的场景。 希望本文能帮助你理解如何将注意力机制与传统CNN结合,为你的计

2401_82355416的博客 361

Python爬虫实战:高德地图POI信息爬取(餐馆/加油站等),附选址分析技巧

高德API配置AMAP_KEY = "你的高德API Key" # 替换成自己的Key# 爬取参数CITY = "成都" # 城市DISTRICTS = ["锦江区"] # 区域,可添加多个(比如["锦江区", "武侯区"])KEYWORDS_LIST = ["川菜馆", "加油站"] # 要爬取的POI类型TYPES = {"川菜馆": "050101", # 餐饮服务→中餐→川菜馆(高德POI分类编码)"加油站": "110100" # 交通设施→加油站。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2473

NTN(三) Timing

这篇看下k_offset和k_mac,如38.300所述,k_offset是配置的调度偏移量,需要大于或等于service link RTT和Common TA之和;k_mac 是配置的偏移量,需要大于或等于 RP 和 gNB 之间的 RTT。 相关参数会通过RRC层NTN-config配置,其中的cellSpecificKoffset-r17和kmac-r17主要用于各种Timing场景的偏移。 kmac:如果DL和UL frame timing 在 gNB端未对齐,网络端

asd199086的博客 4828

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: G1源码之fullGC算法详解
下一篇: 日调用量超三十万亿,腾讯开源百万级服务发现和治理中心北极星
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值