Redian新闻
>
如果面试官让你设计美团外卖的分库分表架构,就该这么说!

如果面试官让你设计美团外卖的分库分表架构,就该这么说!

公众号新闻

点击上方“芋道源码”,选择“设为星标

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 
来源:juejin.cn/post/
7128726681954549768

概述

分库分表后设计到的第一个问题就是,如何选择路由key,应该如何对key进行路由。路由key应该在每个表中都存在而且唯一。路由策略应尽量保证数据能均匀进行分布。

如果是对大数据量进行归档类的业务可以选择时间作为路由key。比如按数据的创建时间作为路由key,每个月或者每个季度创建一个表。按时间作为分库分表后的路由策略可以做到数据归档,历史数据访问流量较小,流量都会打到最新的数据库表中。

也可以设计其与业务相关的路由key。这样可以保证每个数据库的资源都能很好的承担流量。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

支持场景

外卖订单平台分库分表后需要支持的场景,用户的角度,需要实时查看所点外卖订单的状态,跟踪订单信息。商家需要查询订单信息,通过订单分析菜品的质量,进行商业决策。

用户Consumer = C端 商家Business = B端

用户下单后订单可能会落到不同的表中,查询的时候可能需要查询多张表。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://gitee.com/zhijiantianya/yudao-cloud
  • 视频教程:https://doc.iocoder.cn/video/

路由策略

如果创建订单时随机插入到某一张表中,或者不知道插入到那张表中,查询订单的时候都需要查询所有的表才能确保查询的准确信。

如果在插入订单的时候有一定的规则,根据这个规则插入到数据库中,查询的时候也执行相应的规则到对应的表中进行查询。这样就能减少数据操作的复杂性。可以通过设计路由策略来实现,用户和商家查询数据的时候都遵循相同的路由策略。

用户端路由key

根据上一小节的路由策略分析,现在需要选定一个路由key。用户端让同一个用户id 的数据保存到某固定的表中,所以可以选用用户id最为路由key。

在单库的情况下,用户下单,生成一个订单,把用户id作为路由key,对user_id取hash值然后对表的数量进行取模,得到对应需要路由的表,然后写入数据。

多库多表的情况下需要先找到对应的库然后再找到对应的表。多库多表的路由策略:用户下达->生成订单->路由策略:根据用户id的hash值对数据库的数量进行取模找到对应的数据库->根据用户id的hash值除以对表的数量,然后在对表的数量进行取模即可找到对应的表。

路由策略设计的要点是根据具体的业务业务场景设计,跟用户信息关联度比较大的作为路由key进行hash值取模

商家路由key

单独为商家B端设计了一套表(C端和B端是独立的)。

用户的角度以user_id作为路由key,商户的角度以商家id作为路由key。商家是如何通过路由key路由数据的呢。游湖在下单的时候把队友的订单号发送到MQ里,商家可以去消费这个MQ,然后根据订单号获取订单信息,然后再把订单信息插入到商户的数据库表当中。商户的路由策略 和用户的路由策略 是一样的。

用户端和商户端的完整数据流程图:



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
美团外卖或进香港;椰树回应直播争议;靖捷担任李锦记CEO;宜家直播卖美食;雅斯首进武汉;韩束母公司再冲IPO|联商周报设计糟糕的分库分表是如何把系统搞挂的?​PLAY | 万圣节就在明天,就该这样 “鬼混” 才刺激今日聚焦:抗战纪念地,成国庆大热门!中国,就该这样!大摩面试官让我当场写CIM,还必须用LBO模型!我慌了…KKR面试官让我当场估值建模,还必须用LBO模型!我慌了…一半古典一半时尚,她手作的设计美到惊艳!随手记录,就该这么简单绝了!反向面试经历 | 拿捏面试官全教程 附赠彩蛋餐厅的布局形式和尺度设计,就该这样做!【装修干货】刘畊宏将开启淘宝双11首播;PUMAx帕梅拉上新;美团外卖x罗永浩卖手机... | 刀法品牌热讯长新冠(Long Covid)的症状与改善万能通用网关系统!就该这么设计,稳的一批!专访|70岁上海阿姨「知识分子风」穿搭走红,退休生活​就该这么过!​如何在面试中巧妙展现架构能力?附200道面试真题+100例经典架构案例拆解 | 极客时间打工时长不再受限后,加拿大留学生开始疯狂工作!中国妹子却这么说!秋裤杯套,美团外卖好像在玩一种很新的东西。。。Mock回顾 | Roblox面试官在线解析面试考点!陈傻子:好消息,司马夹头账号相继被封,对巧舌如簧收割韭菜的人就该这样!【立秋】多事之夏过后,还会有多事之秋吗?想明白了,对语文最有帮助的能力,其实就该这样培养...美团外卖在香港,还能“送啥都快”吗?BB鸭 | iPhone 5c正式淘汰;腾讯申请狗头图形商标;本轮油价不做调整;美团外卖或进入中国香港市场脱发人士有救了!Science:重磅治疗新方法,毛囊类器官让你长出自己的真头发!宁德时代曾毓群身家3年暴涨2800亿;美团外卖或将进入香港;蔚来在欧洲四国开启租赁模式;椰树集团回应直播争议..分享一道我之前遇到的面试题,面试官说答不出来正常刀法周报 | 美团外卖x新裤子推出“秋裤奶茶”;PICO将上线《仙剑奇侠传》VR游戏;日清食品全面控股公仔面珠海生产商...好消息,司马夹头账号相继被封,对巧舌如簧收割韭菜的人就该这样!一个优秀的团队,就该这样定目标!教育随笔(104)高考文言文备考之五细颈瓶前妻评价细颈瓶面试时注意这些细节问题,面试官对你好感度暴增!瑞幸xJOJO上新;蒙牛要约收购妙可蓝多5%股份;美团外卖或进入香港市场... | 刀法品牌热讯摘南瓜,采苹果,西雅图的秋天就该这么过美国军机侵入海口毛泽东下令打
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。