https://mp.weixin.qq.com/s/3kYarzQcXY1-4t57DGn9Eg
贝壳找房小程序至今为止已经拥有了近2亿的用户,团队正在在朝着贝壳人的宗旨迈进,给这个行业创造更多的价值,努力成为一个能够服务2亿家庭的品质居住平台。
经过两年多的发展,为了更好的适应业务发展,贝壳小程序后端从最初的快速搭建到后来由php到golang的转型与优化,到现在微服务的落地和业务网关能力的提升,贝壳小程序平台一直走在蜕变的路上。而贝壳找房小程序和app的上线,也意味着一直在房产行业里深耕的链家,从直营模式到贝壳找房平台化模式的正式转变。
小程序平台同样传承了公司平台化的转变理念和模式,把平台化思路坚决贯彻下去,在完成平台需求的同时,沉淀平台核心能力,赋能各个业务,甚至赋能给整个行业。
1 小程序平台1.0
贝壳找房小程序起始于2018年,1.0时代小程序团队主要是在追赶功能,团队在半年时间内完成了1年应该完成的业务。半年期间小程序产研团队快速扩增,此期间大量的进行API层开发,封装各业务接口,以快速完成第一版的小程序为目标。
1.1 极速上线小程序后台服务
极速上线公司级小程序平台要面对的问题是什么呢?因为贝壳小程序平台的特殊属性,各个业务例如新房、二手、租赁、装修都是分属在各团队维护的,所以需要有平台业务方来整体对小程序的性能做分析和监控。
首先是每日性能监控,团队做了第一版的性能分析日报,把小程序内所有域名的请求量、平均响应时间、499以及5XX状态码的数量占比、并发峰值、qps高峰时间、稳定性百分比等等,以稳定性日报的形式输出给团队所有成员,并且详细的列出了所有接口的情况,做到小程序内所有的服务,平台都能“心中有数”。二是小程序平台自身接口的实时预警,接入了公司Fast监控平台,实时监控各接口的性能指标情况,包括域名错误、SQL异常、第三方请求超时、业务日志ERROR、服务请求异常等等,保证极速上线的小程序能健康的运行。
1.2 如何抗住100倍流量的九宫格?
全部小程序的统一带来的风险就是流量的瞬间上涨,不仅仅是各小程序流量的整合,微信九宫格的流量也会瞬间涌入小程序平台,于是项目组开始了接口的优化和拆分,首先对预估流量进行了一次压测,发现性能瓶颈在redis集群上,内存使用率达到了90%以上,但实际瓶颈并不在于redis本身,在于当前redis集群的内存管控上,这里我提一下为什么DBA需要对redis集群进行内存管控呢?首先是贝壳业务线较多,每个微服务都可以申请独立的redis集群,运维成本是比较大的,另外如果内存超过20G,高可用的切换后,恢复的时长就可能会超过5分钟,一定程度增加了故障发生的概率,所以这个内存的管控上还是有必要的。
那该如何优化呢?第一反应是特定业务场景的扩容,虽然说有20G内存的限制,但是如果业务场景特殊性,这个扩容也是可以支持的,不过如果在应用层面就能优化,何乐而不为?我们通过监控指标发现redis集群的cpu占用和I/O使用都是在正常的范围,唯独内存占用严重超标,经过分析发现是房源详情大json和小程序首页占用了较大的内存,一方面我们选择了合适的压缩算法,对redis大value进行压缩,减少了redis的将近一半以上的内存占用,另一方面,我们对小程序首页的redis使用了pconnet长连接,避免频繁建立短连接的性能损耗。
简单的优化,也给给团队带来了一些思考,以后在对面redis的优化,在平台侧要保持一定的容量buffer可扩容,避免出现容量危机,另一方面,可以利用压缩、切分等来提高性能。
1.3 沉淀核心服务
业务上,团队完成了核心的新房二手业主等业务的功能模块开发,在和app对齐的同时又丰富了微信体系内的消息订阅、推送等场景,此后又开启了小程序体系特有的业务场景开发,微信体系内的分享、渗透、拉新,以及码上有客项目的启动,开始通过小程序为贝壳几十万经纪人提供自我营销能力。
技术上,也沉淀了一些核心能力,例如第一版小程序的分享能力的建设,经纪人通过小程序进行分享后,可以记录核心的分享链条,包括经纪人用户关系、阅读场景、停留时长等等。