2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

【QCon 北京 2016】美丽说&蘑菇街专场重点回顾

  • 2016-04-27
  • 本文字数:1625 字

    阅读完需:约 5 分钟

QCon 北京 2016 全球软件开发大会的美丽说 & 蘑菇街专场顺利结束了,本专场以『复杂环境下美丽说&蘑菇街电商的升级之道』为主题,分享了社会化电商的技术架构和最佳实践。

美丽说大促平台的架构演化与挑战

对于社会化电商来说,各种促销活动是活动推广的重要手段。同时因为事件营销的不可预测性,对电商平台的弹性和稳定性提出重大考验。美丽说大促平台就是为了应 对此类活动而专设的平台。在本次专场上,大促团队的技术负责人陈晓冲为参会者分享了大促平台从无到有的架构设计与思考,同时以跑男和双十一为例,介绍了大 促平台的最佳实践。

促销活动因为其特性,在技术上面临如下挑战:任务多时间紧、功能复杂、协 同繁杂、性能要求高。在最开始,美丽说的需求都是单独开发,有许多重复开发的部分,同时初期架构较为简单,在应对复杂需求和快速迭代时也力不从心,在这种 情况下,美丽说成立了大促团队,进行了架构改造,开始了平台化之路。

在平台化的从无到有的过程中,美丽说大促团队经历了组件化和服务拆分,然后将之前各业务的数据打通,在前端方面实现了模块化和异步加载,最终形成的架构如下图:

该架构在跑男和双十一促销活动中经受了考验,实现了快速迭代和应对峰值请求的 99.9% 服务平稳运行。

蘑菇街电商算法演化:从爆款模型到个性化模型

蘑菇街从 2015 年从一个导购平台转型为社会化电商,这两种模式的巨大差异也体现在电商算法上,也经历了从爆款模型到个性化模型的转变。数据搜索技术团队负责人灵素(陈春丽)向参会者分享了随着蘑菇街电商场景变迁中的算法变化,以及模型变迁中的问题。

蘑菇街电商模型包括初排层、业务层和个性化层。初排层的排序模型经历了三代的变迁,在 2014 年以前是根据规则,到 2015 年是根据爆款模型,2015 年之 后是加入个性化因素的线性预估模型。业务层在 2016 年之后开始根据业务特征加入模型。个性化层在 2016 年之前是单一场景个性化,之后开始根据标签个性 化偏好。

加入个性化后的架构如图:

但是,算法模型的切换并不是一帆风顺,蘑菇街在切换过程中也遇到不少问题。在演讲后半部分主要分享了蘑菇街在实施过程中遇到的问题和决策。

蘑菇街混合云架构实践

混 合云在今年成为云计算中非常火热的话题,蘑菇街实施混合云的背景主要是在类似双十一这种场景中,会发生瞬时的峰值请求,混合云就是将应对峰值请求的资源采 用公有云,而平时的业务放在私有云里。蘑菇街平台技术运维架构师无锋(敖斌)向大家分享了蘑菇街实施混合云架构过程中的问题和经验。

电商平台常规化的大促面临的主要挑战包括:快速扩容和缩容、提升资源利用率以及成本问题。蘑菇街通过将私有云的资源虚拟化,加上通过设置流量调度、二级 CDN 和专线的公有云来应对。

混合云要做到的目标是要实现整个服务的发布、管理、云资源调度。无锋分享了蘑菇街的混合云无缝接入策略、流量调度和二级 CDN 的实践,成功支持了蘑菇街在大促中的表现。

移动端全链路跟踪保障体系

最后一场演讲由蘑菇街无线基础和 IM 技术团队负责人七米(杨剑锋)带来,他给大家分享的是蘑菇街在服务链路跟踪和保障方面的探索和实践。

在 演讲中,七米将请求链路分为古代、近代和现代三种,同时也体现了三种架构的差异。古代是指简单的 LNMP 架构,发现和定位问题通常只能用外部手段;近代则 在古代的基础上增加了流量调度和负载均衡,以及 log agent、kakfa、Hadoop 等,这种模式能够进行少量试试监控,同时能够定位 crash 上报的地方和原因;现代则指在客户端增加服务监控和用户 行为监控,在服务端增加流处理模块增强日志分析能力。不过在现代的架构下面,我们有时仍然难以定位到问题,用户下单需要经历数十个系统,每个系统都可能发 生问题,因此需要对整个交易链路进行跟踪和监控。

蘑菇街通过一个 MWP 全链路跟踪系统进行链路标记,从而实现了全链路跟踪:

由于篇幅限制,我们不能完整描述讲师分享的精彩之处,欲知更多信息,可下载 QCon 大会美丽说 & 蘑菇街专场 PPT,稍后我们会将演讲的视频发布在 InfoQ 网站上,敬请关注。

2016-04-27 03:412564
用户头像

发布了 164 篇内容, 共 117.2 次阅读, 收获喜欢 392 次。

关注

评论

发布
暂无评论
发现更多内容

【直播回顾】战码先锋第六期:共建测试子系统,赋能开发者提高代码质量

OpenHarmony开发者

OpenHarmony

Java String 文字(Literal)和 对象(Object)初始化

HoneyMoose

DingOS服务提交IPO配置指南

鼎道智联

前端 开发 IPO配置

如何进行高效简洁的电子文档管理

小炮

今天,SysAK 是如何实现业务抖动监控及诊断?&手把手带你体验Anolis OS|第25-26期

OpenAnolis小助手

Linux sig 龙蜥大讲堂 开源贡献 社区运维

面试突击59:一个表中可以有多个自增列吗?

王磊

Java 面试

Gitlab运维篇之——备份及恢复

阿呆

#GitLab 备份恢复

深圳java培训 | Java设计模式之建造者模式

@零度

设计模式 JAVA开发

智能合约dapp系统开发模式定制方案

开发微hkkf5566

Java 字符串引用(String Interning)

HoneyMoose

Java String 性能和优化

HoneyMoose

钟珊珊:被爆锤后的工程师会起飞|OneFlow U

OneFlow

自我介绍 实习

Java自定义Once方法保障单次执行

FunTester

社区文章|MOSN 构建 Subset 优化思路分享

SOFAStack

负载均衡 开源 开发者 算法

PHP开发的网站,如何实现批量打印快递单的功能?

迷彩

编程 记录 开发 php扩展 6月月更

如何使用物联网低代码平台进行报表管理?

AIRIOT

物联网 低代码平台

Linux开发_curl调用网络接口

DS小龙哥

6月月更

IDE 的主题应该用亮色还是暗色?终极答案来了!

胡说云原生

ide vscode IDEA goland ide主题

Eureka的InstanceInfoReplicator类(服务注册辅助工具)

程序员欣宸

Java SpringCloud 6月月更

一文走近ZMQ

No Silver Bullet

6月月更 ZMQ

5道面试题,拿捏String底层原理!

码农参上

string 底层原理 死磕 Java 基础

我对新能源汽车的一些看法(37/100)

hackstoic

新能源汽车 生活杂谈

Java String 构造方法中的内存分配

HoneyMoose

axios框架入门教程

倔强的牛角

axios 6月月更

Fabric.js IText 手动设置斜体 🎋

德育处主任

JavaScript 前端 canvas Fabric.js 6月月更

2022年盲盒软件开发商业模式深度解析

开源直播系统源码

软件开发 盲盒开发 盲盒软件

redis精讲系列介绍七-过期策略

Nick

Redis 核心技术与实战 6月月更 redis精讲 redis 过期策略 redis 底层原理

JAVA SOCKET编程——TCP/UDP

乌龟哥哥

6月月更

缓存穿透利器之「布隆过滤器」

Ayue、

redis 布隆过滤器

Java String 手工引用指针

HoneyMoose

DOM编程

大熊G

JavaScript 前端 6月月更

【QCon北京2016】美丽说&蘑菇街专场重点回顾_服务革新_徐川_InfoQ精选文章