php发展

首页 » 常识 » 预防 » 专访蘑菇街七公25倍增长远非极限,优化需
TUhjnbcbe - 2021/1/24 6:14:00
济南白癜风医院 http://pf.39.net/bdfyy/bdfyc/190326/6997150.html
“从每秒单交易量到每秒1万单,25倍的增长背后,是怎样的优化与实践?这其中的障碍,蘑菇街技术团队如何跨越应对?

每秒能支撑的峰值订单数是衡量电商系统高并发可扩展能力的重要体现,在电商内提升每秒支撑订单数存在无数的方法,每一个方法都存在各自的优化角度和对应的障碍挑战,如何在一开始根据自身企业的特点选择最合适的优化路径,并其后在这路径上高效贯彻和执行,对于团队尤其是初创团队而言都不是简单的事情。

受访嘉宾简介

七公,原名白辉,年以前在阿里巴巴B2B主要负责Alixprss资金中心、评价、任务中心等系统。14年8月离开阿里出国游历,15年回国后加入蘑菇街,目前在蘑菇街、美丽说、淘世界大集团共享的电商基础平台负责购物车下单小组及交易平台架构工作。

七公不仅在日前结束的ArchSummit深圳全球架构师峰会上做了精彩分享,他也在InfoQ大咖说上做了一期视频分享直播。感兴趣的同学请戳标题观看:

从阿里到蘑菇街,我是如何探索电商平台服务架构的丨InfoQ大咖说

InfoQ:在年以前您在阿里巴巴B2B负责Alixprss资金中心等项目,能否谈谈在阿里的这段经历给您之后出国游历、回国加入蘑菇街带来了哪些动因和影响?

七公:我是年3月加入阿里巴巴的,彼时阿里整个的业务、技术体系都处在一个飞速发展的时期,我个人也获得了飞快的成长。受去看世界的梦想推动,年8月我和女朋友一起从阿里辞职,出国游历了半年。

回来之后,阿里当时内部各方面整体已经趋向稳定,我希望找到另一家飞速发展的公司,北京上海找了一圈不满意,最终还是回到了杭州,加入了蘑菇街。在蘑菇街一年的时间里,我们业务和技术都获得了火箭般的飞跃式前进,我一年里的进步和收获比在其他公司呆两年得到的还要多,实现了和公司的共进步、同成长。

InfoQ:您加入蘑菇街电商团队后带领团队同学仅用一年便完成服务架构的各阶段升级,能否谈谈你们是如何规划优化路径并高效实现的?在高效率工作上你们有什么经验或技巧可以分享?

七公:第一个阶段,是我们做PHP全面转型Java体系、初步建成电商基础服务中心的战略规划,在面临不停歇的业务需求和巨大的系统改造压力下,我们采用瀑布流工程方法,通过规划、分析、设计实现、测试、服务产品文档交付的过程,高质量地把第一阶段的服务化建设根基像打桩一样打牢,然后通过进一步的迭代开发不断完善。

第二阶段和第三阶段,实际上是业务迅猛发展、流量不断上涨、日常和大促稳定性保障的强烈需求推动我们自身服务架构的升级。我们通过引入Scrum的敏捷开发模式,项目中的每个人都是猪(敏捷开发中,猪为项目负责人,鸡只是普通参与者,寓意来自猪要牺牲才能提供食物而鸡只要下个蛋就行了),每个人都要为服务框架升级和项目进展负责。

我们先后有十人以上共同推进了服务框架负载均衡、降级限流、连接切换优化等基础框架演进,以及监控、服务端超时控制、多版本、分组隔离、动态路由等服务治理体系完善。

总结一下:高效推进上,我们的经验是首先要采用项目的方式进行管理,再一个是时机不同、阶段不同,选择的项目工程方法也不一样:

新架构探索:建议采用传统的瀑布式和迭代式开发;

架构的持续迭代:可以尝试一些新的开发方法。

InfoQ:能否介绍蘑菇街系统架构的中间件系统?蘑菇街的一系列中间件是如何实现Wb应用层和基础设施层对接的,各中间件如何确保在全站稳定落地?

七公:蘑菇街购买链路服务架构示意图:

从蘑菇街购买链路服务架构1.0到1.5,我们完成了服务化框架Tsla、分库分表TSharding、分布式缓存MoguCach、CorgiMQ、配置中心Mtabas、调用链跟踪Lurkr等一系列重要中间件的自研、完善和在全站落地。这一系列中间件的研发,是随着业务系统和服务框架的不断发展(最早我们只有Tsla一个中间件)而逐步衍生出来的。

年初,蘑菇街全网还在PHP体系,Tsla框架诞生后,我们先构建了用户、商品、交易、促销等一系列的电商基础服务中心:

Tsla框架支撑了PHPWb应用到服务中心的PRC调用场景;

服务中心内部有数据容量提升需求,所以先后有了TSharding和Raptor分库分表中间件;

服务内部有异步化处理需求,有了CorgiMQ;

服务中心内部有分布式缓存需求,所以有了MoguCach等;

所以服务框架是支撑和推动整个网站架构发展的核心和源动力。年底我们启动了PHPWb单体应用拆分为一个个JavaWb业务应用和前后端分离项目,很快购买链路完成了PHP体系到Java生态的彻底升级。

Tsla走向真正的服务框架(而不仅仅是一个RPC框架)是随着业务的不断发展和业务系统的强烈要求开始的。最早业务系统面临服务发布时不平滑(客户端几秒甚至数10秒后才拉到更新的IP列表)等问题,以及业务服务蓬勃发展时期强烈的服务治理需求,Tsla不断进行服务框架的改造升级:

通过新的配置中心Mtabas的诞生和客户端拉取配置优化、客户端响应服务端连接关闭事件解决连接优化问题;

通过对监控预警、动态限流、服务端超时、服务分组等的支持完善了服务治理体系。

实际上业界的众多服务框架也是这么一步步发展起来的,没有捷径。

中间件在全站的有效落地,是靠中间件团队和业务系统支撑团队密切配合完成的。新的中间件刚刚开发出来,肯定会有各种问题出现,但是中间件也是业务系统的实际需求推动才产生的,所以双方的目标、利益点是相同的。我们会采用项目的方式,每个项目成员都对中间件的使用推广和自身完善负责,共同推动中间件在全站的稳定落地。

InfoQ:在中间件研发过程中,开源技术起到怎样的作用?

七公:蘑菇街是拥抱开源技术的。在我们的技术体系中,很大一部分基础技术组件依赖于开源产品。我们的Tsla服务框架是基于Ntty开发的,最早我们用的MQ是RabbitMQ,后来我们才转向自研;我们的Sntry监控平台是基于Grafana;目前我们仍然在广泛使用Kafka来收集全站日志,使用Zookpr协调分布式系统,使用Hadoop生态来支撑数据平台计算任务等等。

而自研Tsla、CorgiMQ等等中间件的原因是因为这些是支撑我们网站发展的核心产品,我们必须要能够完全掌控、有能力做到深度定制,以便快速支持业务发展,而不是成为业务发展的瓶颈和阻碍;而这些中间件的诞生、持续发展和在全站落地之后,变成了我们技术团队乃至整个蘑菇街的核心竞争力之一。

针对纯技术的中间件/产品,我们会选择性的开源。TSharding是我们最早的分库分表中间件,之前因为有小米、有赞等不少技术同仁都有咨询,所以我们开放在了Github上,见:

1
查看完整版本: 专访蘑菇街七公25倍增长远非极限,优化需