美菜网技术体系发展

春哥叨叨

共 2987字,需浏览 6分钟

 ·

2021-06-16 12:55

美菜网作为一家B2B生鲜电商平台创立于2014年,如今已服务于300万家商户,遍布全国200多个城市。其发展不断深耕供应链、优化服务、完成了获客留存,为支持业务的持续迭代,其技术体系也在不断的发展。


美菜网技术体系从2014年到现在逐渐摸索出一套涵盖商城、供应链、物流三大业务方向,支持了在线toB、toC的自营模式和提供了三方的售卖、线上线下履约、配送的业务能力。


在2019年美菜网引入了中台化策略,目的是消除各业务线重复建设电商基础能力,提供统一的中台服务,包括用户、货主、商品、营销、交易、支付、搜索、推荐等能力,帮助业务快速迭代、优化业务。


在技术支撑层,提供适合电商业务场景的各种基础组件,如快速支持业务和中台的分布式系统、消息传递系统、混合缓存系统、动态扩容系统、资源管控系统、自动化监控和部署系统等。


在2019年,为进一步提供网站的数据和稳定性,实现核心业务链路的双活,通过数据备份提供了数据安全能力。


依托大数据能力不断驱动平台发展,通过埋点接入、日志汇总、主动采集等手段,建立了电商数据仓库。通过在线和离线数据挖掘、机器学习,构建了全链路数字化体系、智能分析、决策辅助体系、智能策略和业务链路赋能。


早期阶段


和传统电商平台不同,美菜业务涉及:用户下单 -> 供应商采购 -> 仓库分拣 -> 司机配送,链路较长,早期的架构还是一体化架构,一套数据库、一套代码,牵一发动全身,稳定性差,扩展能力低,交付周期长。


服务化阶段


之后系统进行了服务化拆分,首先将商城、物流通过MQ解构开,后续将其他系统服务化,所以服务做了分层处理,明确了系统边界。


大促是考察一个系统稳定性的试金石,单体系统时期是不敢做活动的,经过服务化拆分系统稳定性大大提升。


每次大促前,商城、供应链、仓储物流、支付财务全链路所有系统的研发需要自查、压测、梳理可能存在的问题环节。测试进行全链路回归测试,验证正确性。运维人员线上扩容,联系服务商提前准备CDN、宽带资源等。经过多次大促洗礼,美菜技术体系整体上完善和健全了,进入了一个新阶段。


技术基础设施完善


技术基础设施包括了MQ、配置中心、任务调度中心等基础组件。主要看下MQ组件的迭代和发展。


美菜网历史上是多套MQ共存的,大数据团队使用Kafka、线上业务使用NSQ和RocketMQ。


多集群共存的问题:

  1. 维护成本和资源成本高:需要独立部署一套,资源成本高;

  2. 易用性差:需要知道topic在哪套集群上,客户端进行接入;

  3. 可靠性低:NSQ是多通道之间复制,其本身是单副本,存在消息丢失风险;


集群统一迁移方案:


综合考虑希望以RocketMQ统一整体MQ方案,RocketMQ可以支持如消息延迟、顺序消费、事务消息、消息回溯等基本功能,基于多种刷盘和同步机制可以实现消息可靠性,公司主要技术栈为java,一脉相承。


迁移方式:


RocketMQ使用仅需要依赖一个jar,NSQ需要使用http协议。


Producer通过Http连接NSQ,对于生产者需要提供一个http网关,用来接收业务生产的消息,转发到RocketMQ。对于消费者,实现一个transfer工具,将消息透传到NSQ,这样对消费端是无感的,生产完成迁移后,消费者可以逐步往RocketMQ上迁移了。

多语言支持:


消息生产提供http网关接入;消费处理器,不断从RocketMQ拉取消息,通过消费网关的http方式发送到消费端;基于topic做SLA维度的路由、流量调度等工作。

稳定性:


1. 集群隔离:按照SLA隔离出业务集群、日志集群、计算集群。业务集群采用主从同步、同步落盘,计算集群采用主从异步、异步落盘;日志集群采用单主结构;

2. 完善故障预案:节点故障时:可以快速下线,一键扩容;主节点挂掉:从节点提升为主节点,主节点改为只读;


3. 完善监控报警机制:生产延迟告警、TPS告警、TP99告警等多维度指标数据告警;


同城双活:


如果所有数据都在一个机房,一旦这个机房出现问题,数据就有丢失风险,不能实现数据的可靠性;单机房维度,资源容量有限,多机房可以分单流量。


实现双机房容灾可以有两种方案:


  1.  同城冷备:备用服务不对外提供功能,只有当在线服务流量出现问题时才切换流量到备用服务,但当出现问题时一般不敢切流量。

  2. 同城双活:平时就是双机房对外提供功能,在出现问题时切掉故障机房流量,实现真正的容灾目的。


有了双活机房的目标后,有如下几点诉求:

  1. 机房就近,生产者在a机房的话,生成后的数据最好也在a机房的broker里面;消费者在b机房的话,消费者的消息最好也在b机房的broker里面;

  2. 平滑迁移,支持按topic粒度的逐步平滑迁移能力; 

  3. 故障发生时,可以快速切换;


关键设计:


就近识别算法:

  1.  IP段识别方式:不同IP段表示不同机房,这个方案对公司网络要求高,公司网络调整时,也需要修改算法、升级客户端;

  2. 协议层增加机房标识:在生产和消费的client通信的时候都添加所在机房标识,改造成本高;

  3. broker名称增加机房标识:客户端clientID增加机房标识,改造成本低,对MQ核心功能无入侵;


数据复制:

实现主-从-从结构,基于slave异步复制,减轻master节点的压力;


故障预案:

机房或链路出现问题时,需要关闭一层机房的写权限;机房接入层故障,无影响;


后续需要提升的包括,无人值守的运维能力;按SLA进行自动topic路由调整能力等;

数据驱动


新阶段主要推进了中台建设和数据驱动。


基于区块链技术实现了业务全链路数字化,美菜积累了大量餐厅食材需求、生鲜供应链数据、农产供给采购需求数据等,成为了美菜最优价值的数字资产。


在业务全链路数字化基础上,美菜大数据实现了全链路智能分析与决策辅助。比如销售智能助手、智能营销系统、采购智能辅助、区县指挥等辅助系统,大幅提高了业务链路各环节的运营效率,支持了业务快速增长。


同时业务链路各环节策略建模与自动化,开始赋能业务。餐厅商品需求模型、商品销量预测、商品区域价格弹性、市场供需指数、供应商评级画像等基础决策在业务上开始赋能。


总结来说,美菜网经历了3个主要阶段。


  1.  公司初创、业务规模小。这个阶段的主要目标是让业务运行起来,系统相对简单,依托业务现状,开发了一些工具;

  2. 搭建完整技术体系。建立完整业务闭环,包括营销、商品采购、供应链、物流配送等业务及系统能力;

  3. 中台化及数据驱动阶段。为降低个业务线重复建设,提高效率,驱动整个体系中台化,同时做了新技术的引入;


赋能合作伙伴


通过数据驱动,为供应商提供了“天眼”功能。通过天眼可以实时看到供应商每天的销售额、采购数量、销售数量、库存数量、用户复购率等情况,识别整个环节中哪些可能存在问题。


同时可以把履约的客户反馈情况及服务诊断情况进行反馈,每个合作伙伴可以看到客户的满意情况,退货、投诉、缺货等信息,帮助供应商自我改进。


天眼可以与美菜供应链预测协同,让供应商可以提前洞察可能的用户需求,提前指定、调整采购计划,打造智慧供应链。

浏览 32
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报