作者:京东物流赵勇萍前言最近有空会跟同事讨论DDD架构的实践落地的情况,但真实情况是,实际中对于领域驱动设计中的实体,值对象,聚合根,领域事件这些战术类的实践落地,每个人理解依然因人而异,大概率是因为这些概念还是有一些抽象,同时有有别于传统的MVC架构开发。在此,通过小demo的方式跟大家分享一下我
实际开发中订单往往都包含着订单状态,用户每进行一次操作都要切换对应的状态,而每次切换判断当前的状态是必须的,就不可避免的引入一系列判断语句,为了让代码更加清晰直观,我们引入今天的主角——状态模式。一、概念理解假设订单状态有,下单、发货、确认收货,如果用户确认收货,在常规编程中就要判断当前用户的状态,
1、背景介绍目前数仓测试,划分成交易、增长、社区等多个模块,不同的数仓测试域,都会有一名测试人员负责跟进,根据每个版本每个域资源实际投入情况,组内会适当的调整资源,以满足日常迭代需要;单交易域这块,版本迭代需求数,通常都要并行支持多个,且随着公司业务的发展,从承接的需求复杂度,或验证的指标量,都会有
上一篇讲消息中间件的文章:《如果公司线上系统突然宕机了,怎么才能确保MQ消息不丢失?》,初步给大家介绍了一个在生产环境中可能遇到的问题,就是你的消费者服务可能会宕机,一旦宕机,你就需要考虑是否会导致没处理完的消息丢失。这篇文章,给不太熟悉MQ技术的同学,介绍一个生产环境中可能会遇到的问题。目
12306抢票,极限并发带来的思考?每到节假日期间,一二线城市返乡、外出游玩的人们几乎都面临着一个问题:抢火车票!虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。
一、写在前面之前写过一篇文章《RabbitMQ是如何收发消息的?(通俗易懂)》,我们用一个简单易懂的电商场景给大家引入说明了一个消息中间件的使用场景。同时,我们还基于RabbitMQ的HelloWorld级别的代码,给出了订单服务和仓储服务如何基于MQ中间件收发消息的示例。二、业务场景回顾这
这篇文章,给不太熟悉MQ技术的同学,介绍一个生产环境中可能会遇到的问题。目前为止,你的RabbitMQ部署在线上服务器了,对吧?然后订单服务和仓储服务都可以基于RabbitMQ来收发消息,同时仓储服务宕机,不会导致消息丢失。好,我们来看下目前为止的架构图。那如果此时出现一个问题,就是说订单服务投递
大家好,欢迎来到Tlog4J课堂,我是Jensen。记录今天发生的一次生产故障以及故障处理全过程。问题背景需求背景是这样的:产品要求订单过售后期后,资金平台需要对这些订单进行结算,并把虚拟资产入账到下单客户的虚拟账户。因为我们是按业务领域拆分多个微服务的,为了解耦订单与资金平台,我们选择了MQ异步消
在前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。也基于阿里开源的Sentinel实现了服务的限流与容错,并详细介绍了Sentinel的核心技术与配置规则。简单介绍了服务网关,并对SpringCloudGateway的核心架构进行了简要说明,也
作者简介荣华,携程高级研发经理,专注于后端技术项目研发管理。军威,携程软件技术专家,负责分布式缓存系统开发&存储架构迁移项目。金永,携程资深软件工程师,专注于实时计算,数据分析工程。俊强,携程高级后端开发工程师,拥有丰富SQLServer使用经验。前言携程酒店订单系统的存储设计从1999年收
硬编码的问题如果将用户微服务和商品微服务所在的IP地址和端口号硬编码到订单微服务中,会存在非常多的问题,其中,最明显的问题有三个,如下所示。(1)如果用户微服务和商品微服务的IP地址或者端口号发生了变化,则订单微服务将变得不可用,需要对同步修改订单微服务中调用用户微服务和商品微服务的IP地址和端口号
很多年前,读了 子柳 老师的《淘宝技术这十年》。这本书成为了我的架构启蒙书,书中的一句话像种子一样深埋在我的脑海里: “好的架构是进化来的,不是设计来的” 。2015年,我加入神州专车订单研发团队,亲历了专车数据层「架构进化」的过程。这次工作经历对我而言非常有
本文转载自微信公众号「微观技术」,作者微观技术。转载本文请联系微观技术公众号。大家好,我是Tom哥。做为一名程序员,发展方向大致可以分为两个方面:一个是业务架构,一个是技术架构(中间件方向)。业务架构,取其核心关键词,主要是围绕这不同的业务场景、业务规则,完成业务系统的落地建设,为用户提供在线化的信
不管是普通场景的下单,还是秒杀场景的下单,对订单中心来说,都是下单,关键是要能支撑秒杀瞬间大量的下单请求。本文探讨一下通用的订单中心架构,主要从服务划分、下单请求处理流程、核心表分库等方面来介绍,不区分普通下单还是秒杀下单,系统架构设计做好了,有秒杀活动时,无非进行一些扩容、限流、降级等手段即可应对
从领域模型说起回顾一下我们进行领域建模时候的流程:进行需求分析进行用例设计针对用例进行领域建模针对领域模型并行进行数据库设计和程序设计。在经过了前面几步分析后,我们会得到领域模型以及他们之间的关系。在这之后我们要根据领域模型分别进行数据库设计与程序设计。我们会根据领域模型之间的关系将模型之间的关系映
对于支付宝和微信支付这样的国民应用,海量交易带来的系统可用性问题成了关乎国计民生的问题。本文总结了微信支付的核心订单系统的架构实现,以及海量交易所带来的扩容、成本、容灾和灰度等问题及解决方案,最终通过系统架构多次迭代确立基于Mysql单机存储引擎,业务和存储强耦的高可用的分布式订单系统。
12306抢票,极限并发带来的思考虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。“12306服务”承受着这个世界上任何秒杀系统都无法超越的QPS,上百万的并发再
在设计交易系统时,稳定性、可扩展性、可维护性都是我们需要关注的重点。本文将对如何通过状态机在交易系统中的应用解决上述问题做出一些探讨。关于马蜂窝机票订单交易系统交易系统往往存在订单维度多、状态多、交易链路长、流程复杂等特点。以马蜂窝大交通业务中的机票交易为例,用户提交的一个订单除了机票信
京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调用量都非常大,造成了订单数据读多写少的情况。我们把订单数据存储在MySQL中,但显然只通过DB来支撑大量的查询是不可取的。同时对于一些复杂的查询,MySQL支持得不够友好,所以订单中心系统使用了Elastic
毫无疑问,SpringCloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对SpringCloud功能使用的层面,其底层的很多原理,很多人可能并不知晓。因此本文将通过大量的手绘图,给大家谈谈SpringCloud微服务架构的底层原理。实际上,Spr