架构实战案例解析
王庆友
前1号店首席架构师
立即订阅
2745 人已学习
课程目录
已完结 23 讲
0/4登录后,你可以任选4讲全文学习。
概述篇 (2讲)
开篇词 | 想吃透架构?你得看看真实、接地气的架构案例
免费
01 | 架构的本质:如何打造一个有序的系统?
业务架构篇 (9讲)
02 | 业务架构:作为开发,你真的了解业务吗?
03 | 可扩展架构:如何打造一个善变的柔性系统?
04 | 可扩展架构案例(一):电商平台架构是如何演变的?
05 | 可扩展架构案例(二):App服务端架构是如何升级的?
06 | 可扩展架构案例(三):你真的需要一个中台吗?
07 | 可复用架构:如何实现高层次的复用?
08 | 可复用架构案例(一):如何设计一个基础服务?
09 | 可复用架构案例(二):如何对现有系统做微服务改造?
10 | 可复用架构案例(三):中台是如何炼成的?
技术架构篇 (9讲)
11 | 技术架构:作为开发,你真的了解系统吗?
12 | 高可用架构:如何让你的系统不掉链子?
13 | 高可用架构案例(一):如何实现O2O平台日订单500万?
14 | 高可用架构案例(二):如何第一时间知道系统哪里有问题?
15 | 高可用架构案例(三):如何打造一体化的监控系统?
16 | 高性能和可伸缩架构:业务增长,能不能加台机器就搞定?
17 | 高性能架构案例:如何设计一个秒杀系统?
18 | 可伸缩架构案例:数据太多,如何无限扩展你的数据库?
19 | 综合案例:电商平台技术架构是如何演变的?
总结篇 (2讲)
20 | 从务实的角度,给你架构设计的重点知识和学习路径
结束语 | 和你聊聊我的架构心路历程
结课测试 (1讲)
结课测试 | “架构实战案例解析”100分试卷等你来挑战!
架构实战案例解析
15
15
1.0x
00:00/00:00
登录|注册

19 | 综合案例:电商平台技术架构是如何演变的?

王庆友 2020-04-03
你好,我是王庆友。
在前面的几讲中,我分别和你介绍了技术架构的高可用、高性能、可伸缩等目标,并通过实际的案例说明了如何实现这些目标。今天呢,我会通过一个综合案例,来说明电商平台的技术架构是如何演变的,让你可以全面地理解如何实现这些目标。
一个实际的电商系统很复杂,在案例介绍中,为了简化,我用比较有代表性的交易系统账户系统来代表整体的电商系统,并具体分析这两个系统在电商平台发展过程中,它们都碰到了什么瓶颈,以及我们在技术架构上是如何解决的。
这一讲会包含很多架构图,每一张图都代表了不同时期的架构设计,为了方便你更好地理解它们,在每张架构图中,我都用红色方框圈出了当前架构存在的问题,用绿色实体部分代表了上一个架构所存在问题的解决办法,希望你听完今天的讲解,能够结合这些架构图,加深对技术架构的理解。

单体系统

第一代的电商系统是一个单体架构,所有的代码都打包在一个应用里,部署的时候会有多个实例,我们通过负载均衡,把用户请求分发到具体的实例中。这个时候,所有的数据表还在一个数据库里。
这里的问题是,单体应用的所有代码都放在一起,代码编译需要很长时间,应用启动也需要很长时间,并且代码相互依赖,开发效率低,并行开发困难。随着单体应用的体量越变越大,这些问题也越来越突出。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《架构实战案例解析》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(11)

  • Jeff.Smile
    这篇特干货,👏。
    尤其是文章开头的使用注册中心代替传统nginx.降低调用耗时的方式,突然间明白了很多。这应该就是为什么分布式架构流行的原因之一了。感谢!
    2020-04-03
    4
  • 芒果
    老师您好,看完文章有2个问题?
    1.请问多机房独立部署的话,数据同步这块是怎么做的呢?
    2.我们公司现在也在采用k8s和docker的方式部署应用,但是类似数据库还是没有容器化。请问目前业界也是这样吗?还是已经实现全部上k8s部署了?

    作者回复: 1. 理想情况下,各个机房业务自成闭环,比如A机房处理用户Id是2倍数的用户交易,B机房处理另外用户。这里的数据库是水平分库,这两部分用户的订单放在不同的库里,A机房的订单会同步给B机房,反之一样。每个机房都会有全量数据。如果机房靠的近,可以采用数据库自带的主从同步方式,隔得远,使用程序同步机制。
    2. 有状态的数据库一般不用docker部署。

    2020-04-03
    2
    2
  • brant
    老师咨询一个关于wms系统平台化的思路。背景是这样的,我们一开始自研发的wms系统只服务于大仓,然后慢慢又了前置仓,有些流程是不一样的。这个时候我们是用一套,然后进行配置化来实现比较好,还是抽象两个烟囱式的模型比较好。另外一个情况就是之前打造wms的时候跟oms系统比较耦合,然后目前出现了其他公司订单要直接对接我们的wms系统,这方面老师有什么建议么

    作者回复: wms和oms应该解耦,前置仓也是物理库存吧,理论上可以把它们当小仓看,也有出入库操作,可以和wms在一起。只是粗略建议,具体要看场景差异。
    有个建议,和专栏关系不是特别密切的问题,大家也可以加我微信深入沟通:brucetwins

    2020-04-10
    1
    1
  • 孙同学
    https://www.processon.com/view/link/5e51378ce4b0c037b5f9d1e3 整理更新
    2020-04-08
    1
  • jian
    请教一下老师,这里说“在实践中,我们还可以提供多套水平分库。比如说,针对交易数据,我们可以同时按照用户维度和商户维度进行水平分库,用户维度的库用于前台用户下单的场景,商户维度的库用于后台商家履单的场景。这里,只有用户维度的分库会支持写,我们通过数据同步机制,把用户维度分库的更新同步到商户维度的分库里。”。这是指存储两份相同的数据,只是维度不一样吗?为什么不用lookup表或者缓存实现?

    作者回复: 对的,是两套表,简单的lookup不能很好地解决问题。比如给定商户ID,在用户维度库里如何找出该商家下的订单呢?只能扫描所有用户维度的分库。

    2020-06-16
  • Robin康F
    公司用的是uc云服务,正在切腾讯云服务,整体已经在朝着最终形态进展,只是内部服务还没有拆分的很细,比如共用了一套web服务,rpc服务进行业务垂直拆分,也算比较合理,毕竟暂时还不需要拆那么细
    2020-05-09
  • 探索无止境
    老师的每篇文章都值得二刷,而且每次提问都得到老师的指点,非常推荐订阅!关于最后提到的双机房模式,还要考虑两个机房的数据同步问题,是不是采用消息中间件异步的方式来实现两个机房的数据库数据同步?

    作者回复: 机房靠的近的话,可以直接用数据库本身的同步功能。机房隔得远,可以选择解析底层的binlog,然后同步。使用偏上层的消息中间件也是一种选择,但这个更合适业务系统间的数据同步。
    多机房部署很复杂,包括数据分布,缓存,消息系统等,大家有这个概念就行,深入下去,要解决的问题比较多。

    2020-04-13
  • 小洛
    这篇是一篇很好的体系化梳理文章 谢谢老师的分享,请教您一个问题
    1、如果是多机房独立部署,假设有北方机房,南方机房,这个距离很远(甚至可以是国内、国外这么远),那么北方的用户来到南方使用我们的系统,我们是路由回北方机房进行服务提供吗?要如何优化这种业务场景呢?

    作者回复: 原则上来说,北方的用户来到南方使用我们的系统,我们是路由回北方机房,这个只是接入层长途路由,服务端内部还是走北方机房,性能问题不大。

    2020-04-05
  • 川杰
    接上一个。
    我可能没有阐述清楚,我们有一张大的结算指令表,表中有一个交易编号的字段,如果结算服务不访问交易,那么只能:
    1.调用结算服务,返回要计算的结算指令上的所有交易编号。
    2.调用交易服务,获取交易数据。
    3.将交易数据传给结算服务的下一个计算接口。
    这样不是太麻烦了?

    作者回复: 你这里交易服务和结算服务有上下游关系,有直接调用关系也正常。
    或者你拆分的更彻底一些,把交易服务分为偏上层的和偏底层的,偏上层的交易服务同时调用底层交易服务和结算服务。

    2020-04-03
    2
  • 川杰
    老师好,请教一个问题。
    我们系统目前是单体应用,正在往服务化做拆分,目前的计划是先拆分一个跟主业务关系不大的模块(结算模块)。
    现在碰到了一个问题,因为我们是金融系统,有交易模块,结算模块等。当做了服务化拆分后,结算模块和交易模块被分离。
    但是,结算的业务处理过程中,有些业务场景需要根据交易编号查找交易(可能100个场景里只有10个场景需要这么做)。
    因为原先是单体应用,结算模块直接查了交易表,现在拆分开了,按道理来说,结算不应该查询交易表了,而是应该由上层(服务编排或者网关那里)把交易数据提供给结算服务。
    可是,由于往往是在结算业务处理过程中才需要查询交易数据,而且是个别场景需要查询且查出来的只是单个交易对象,所以我不可能在上层一次性把所有交易数据全部传给接口。
    这个时候要怎么做才合适?
    2020-04-03
  • hello
    老师,请教您一个问题,您说的多机房独立部署方案,那存储问题是如何解决的?

    作者回复: 可以参考我另一个问题的回复

    2020-04-03
收起评论
11
返回
顶部