电商平台实战项目整体基础构建、设计&分析
什么是核心链路?
核心链路就是类似主流程,比如上淘宝、京东进行购物,那么整体从用户下单到结束,会经历很多个微服务的调用,这个过程中所必须有的且最关键的步骤,称之为核心链路。比如我们用户订单业务,那么大家最简单能想到的就是 下单、支付、以及物流等等,这几个关键词也就是我们业务服务里的核心实现,也就是核心链路!
核心链路如何实现?
核心链路既然是我们在实现的过程中最最关键的点,那么其业务逻辑必然非常的复杂和抽象!那么这种核心链路的代码应该如何实现呢?
一般来讲对于复杂的业务种类,就是考验java领域模型、以及应用JAVA设计模式的高难度挑战了!
传统的完全解耦模式,也就是根据不同的业务进行不同的实现,完全不要代码间的任何耦合!
完全解耦模式是在业务开发过程中独立每一种业务需求的实现,各个实现中只有少部分基础支撑通用,例如,京东下单后,物流配送模式就有多种选择,每一种解决方案都是完整独立线,确实达到了解耦合的目的,但是随着业务增长,时间、空间成本将是几何式增长(每独立一条就要有开发人员、生产空间);
模板模式,这种方式也是目前主流的方式,可以根据基类,采取高度抽象然后子类继承集成的方式!
模板模式是将同种类的业务逻辑进行抽象,生成一个基础父类,然后通过子类继承的方式具体实现业务方法,模板模式提升了开发效率,但是耦合度太高,如果出现一个新的业务逻辑,打破了目前模板抽象规则,那么具体的实现就会非常困难;
业务举例:
1 举例物流配送业务,比如在京东上下订单,然后进行物流配送,会发现配送的模式也有很多种,比如普通快送、京准达、当天达、隔天达、极速送达等等。
2 举例滴滴打车业务,在使用滴滴打车的时候,肯定会有不同的业务车种为你进行服务,比如滴滴快车、滴滴专车、滴滴优享、豪华车等等。
3 举例美团外卖服务,比如下单之后的配送业务,那么就分为很多种配送方式,比如配送如全城送达、美团专送、光速达、快速达、及时达、当天送、集中送等等。
业务总结:
针对于上面的这些业务逻辑,其实就是京东、滴滴、美团互联网大厂的核心业务逻辑,也可以称之为核心链路的一部分!
由于核心链路的复杂、业务耦合性很强、并且很多业务性质基本一致,只是一小部分实现不同!那么无论采用传统的完全解耦模式还是主流的模板模式,都会有这样那样的缺点;
第三种复杂业务系统核心链路设计模式(dynamic template动态模板):
这种设计模式相当于最开始学习java时了解到的接口模式(这种方式最好的地方就是接口下面可以有不同的实现,但是所有的实现都是必须重新去实现! )的升级版本,也就是针对于整个核心链路,服务调用(包含外部和内部)层面上的一个抽象,但是要实现的是核心代码架构不变,然后实现可插拔的、可降级的、可扩展的设计模式!
这种模式就是有限状态机方式,也就是Spring State Machine,在应用Spring State Machine之前,先以互联网的创建订单的业务逻辑与需求,进行核心链路的整体流程梳理!