一、项目背景
随着我国经济的快速发展,我国有8000万中小企业,我们企业普遍存在着营运资金紧张、商品库存积压过多、生产能力利用不足、销售不利以及劳动力闲置等问题,30万亿的市场容量,10万亿库存待消化,国内货物交换需求旺盛,正以每年200%迅猛增长。我国货物交换贸易正处于起步阶段,其他平台风控体系不完善,品类无把控,核心技术无法建立,偏向线下区域局部化,无法让你增加长尾收益。
二、项目介绍
企巴特易货网是专注中小微企业易货贸易的专业易货电商平台。以互联网+的核心技术搭建移动APP交换平台,把生意人性化地搬到手机,实现简单易操作的人机合一。打破供求信息点对点的局限,让商品之间无界交换,实现“产品直接当钱花”的商品流通全新模式。
三、产品定位
通过商品互换,激活企业闲置的商品和空闲的服务,为中小微企业发展添加造血功能,力促企业成长。
四、目标用户
个体经营者,公司企业经营者,文化艺术工作者,团体组织(公益组织、商协会)
五、核心技术
后端:springboot、springcloud、dubbo、zookeeper、rocketMQ、redis、fastDFS、POI、ES、freeMark、webservice/nginx、redis-shake
spring、springMVC、mybatis(项目正在进行重构,故现行的有两种架构模式)
前端:H5、node.js等。
六、核心功能
1、订单:freeMark实现了静态化页面的功能、MQ以及redis也对防止重复下单进行了处理;
2、支付:主要有易宝支付、支付宝、微信、银联等几种支付方式,接口技术采用了webservice;
3、物流:POI处理发票信息,运输主要对接了第三方单位来完成的;
4、购物车:设置购物车中商品的过期机制;
5、商品管理、评论、商家管理、客服功能、资讯、单点登录、用户管理、推荐系统等。
服务划分也可参照模块的划分来进行。
七、功能逻辑图
1、整体功能架构图
2、订单生成流程图
3、支付功能流程
4、发货功能流程
5、个人订单管理逻辑
6、商家订单管理逻辑
7、换货退货逻辑
8、购物车功能逻辑
八、重点难点剖析
1、redis不停机进行数据迁移;
采用了阿里的redis-shake来实现的。
基本功能
redis-shake是我们基于redis-port基础上进行改进的一款产品。它支持解析、恢复、备份、同步四个功能。以下主要介绍同步sync。
-
恢复restore:将RDB文件恢复到目的redis数据库。
-
备份dump:将源redis的全量数据通过RDB文件备份起来。
-
解析decode:对RDB文件进行读取,并以json格式解析存储。
-
同步sync:支持源redis和目的redis的数据同步,支持全量和增量数据的迁移,支持从云下到阿里云云上的同步,也支持云下到云下不同环境的同步,支持单节点、主从版、集群版之间的互相同步。需要注意的是,如果源端是集群版,可以启动一个RedisShake,从不同的db结点进行拉取,同时源端不能开启move slot功能;对于目的端,如果是集群版,写入可以是1个或者多个db结点。
-
同步rump:支持源redis和目的redis的数据同步,仅支持全量的迁移。采用scan和restore命令进行迁移,支持不同云厂商不同redis版本的迁移。
基本原理
redis-shake的基本原理就是模拟一个从节点加入源redis集群,首先进行全量拉取并回放,然后进行增量的拉取(通过psync命令)。如下图所示:
如果源端是集群模式,只需要启动一个redis-shake进行拉取,同时不能开启源端的move slot操作。如果目的端是集群模式,可以写入到一个结点,然后再进行slot的迁移,当然也可以多对多写入。
目前,redis-shake到目的端采用单链路实现,对于正常情况下,这不会成为瓶颈,但对于极端情况,qps比较大的时候,此部分性能可能成为瓶颈,后续我们可能会计划对此进行优化。另外,redis-shake到目的端的数据同步采用异步的方式,读写分离在2个线程操作,降低因为网络时延带来的同步性能下降。
高效性
全量同步阶段并发执行,增量同步阶段异步执行,能够达到毫秒级别延迟(取决于网络延迟)。同时,我们还对大key同步进行分批拉取,优化同步性能。
监控
用户可以通过我们提供的restful拉取metric来对redis-shake进行实时监控:curl 127.0.0.1:9320/metric
。
校验
如何校验同步的正确性?(参考下篇内容)
九、其他可能产生的问题
1、保证订单的一致性;
2、支付接口付款不成功的回调;
3、并发的解决方案;
4、ES的优化、高亮以及分词;
5、某一功能按钮失效;
6、如何保证权限安全等。
十、电商需要了解的问题
1、日活量、并发量;
2、服务器多少个;
3、多少个服务/模块;
4、有多少张表等。
公众号:Java面试百分百