空格App亿元A轮融资背后:云上多场景技术架构实践与经验

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 空格APP上线仅仅60天就获得1亿A轮融资,同时依靠阿里云只用了两个礼拜就实现了APP上线。空格技术合伙人刘博本次分享主要介绍了阿里云在空格内的应用经验包括服务端整体架构的搭建和搜索、推荐和数据平台业务场景下的实践探索。

直播视频:



(点击图片观看)


幻灯片下载地址: https://oss.aliyuncs.com/yqfiles/382bc642fc0b621a9368138a74d8fd36.pdf


3月16日云栖社区在线实时分享顺利结束,本次由空格APP技术合伙人刘博分享了空格利用阿里云服务在搜索、推荐和数据挖掘业务场景下的探索实践。本次视频直播的整理文章、视频整理完毕,如下内容。


阿里云在空格

 


图一 空格服务端整体架构

 

在空格初始创业阶段,人员十分缺乏,但依靠着阿里云,空格两周便实现APP上线。空格服务端整体架构包括在线和离线两大部分。在线服务端的前端包括用户服务端集群、商家服务端集群和IM PUSH集群;在线服务端的后端由搜索/推荐引擎集群组成;架构底层的存储采用传统的MySQL数据库。离线服务端由日志搜集系统、离线计算平台、实时流计算平台、监控系统以及数据BI中心组成。



图二 阿里云产品使用范围

 

空格整体架构上广泛采用了阿里云产品。在网络层采用了阿里云云盾和负载均衡,利用云盾有效拦截了DDoS等网络攻击,采用负载均衡进行流量智能分配。服务器集群由ECS服务器搭建而成。数据库方面最开始使用的是单机版的RDS,随着数据量的增长,需要进行扩容,通过采用DRDS进行分库分表,很简单地解决了数据库扩展问题。同时采用CDN来存储图片和静态的网页,起到网络加速的效果。在搜索方面采用OpenSearch,快速地搭建搜索引擎,避免了流量激增的情况下运维成本大幅度增加情况,仅需在索引配置上对相应参数进行调高或者调低便可实现扩容。服务端离线部分采用阿里云日志服务,实现在线日志实时收集并同步到离线计算平台,打通了离线到在线再回流到在线的过程。离线计算平台主要采用ODPS,可满足大规模的计算需求。其监控系统采用阿里云云监控产品,对服务器、数据库的关键指标实时监控报警。数据BI中心底层框架搭建采用的是DPC/DTS数据同步服务。


搜索场景



图三 搜索业务框架

 

上图是空格的搜索业务架构。最上层是对搜索有需求的服务端,包括用户服务端、商家服务端、CRM管理系统以及IM/PUSH服务端在内;应用层(业务层)是该业务架构的关键,业务存储方式分为分布式缓存和分布式表格存储;应用场景层包括关键词搜索场景、类目搜索场景、IM消息搜索场景等二十多个搜索场景;底层采用阿里云的开放搜索OpenSearch为支撑,同时OpenSearch无缝衔接云数据库RDSODPS,做到数据互通。



图四 两种技术方案比较

 

阿里云技术方案与普通工程技术方案相比,业务层仍保持一致,但在SearchNode节点上有很大的不同,如果是自建节点,不仅需要考虑到分布式架构和业务间的隔离,还需要考虑离线的大文件与搜索引擎的衔接,同时还需要企业自行开发全量DumpBuild流程,以及建立起索引全量的实时调度,这一切将直接导致运营成本和技术复杂度的增加。更为关键一点,服务索引的在线实时需要更新做到秒级以内,自建搜索引擎实现难度系数很大。但如果采用云技术方案,一切变得很简单。阿里云的OpenSearch将服务器的扩容、全量更新、实时更新、切换调度全部屏蔽掉了,使用者只需简单的配置即可建立新的索引,底层采用RDSODPS可实现内部之间数据互通,做到无缝链接。



图五 阿里云OpenSearch服务优势

 

搜索方面采用阿里云OpenSearch服务,是因为其优势很多。在线方面:具有简单的API接入方式,通过HTTP+Json的服务接口与在线服务对接;内部支持复杂语法和排序规则;同时还有丰富的辅助功能,如查询分析(同义词,停用词,模糊匹配)、下拉提示等。离线方面优势体现在:通过简单配置即可创建索引,无需写代码;字段增删,修改操纵简单;并且与RDSODPS无缝衔接,自动管理DUMP数据;可灵活配置索引构建任务。实时更新方面RDSODPS数据源支持实时索引更新,无需构建实时更新系统。运维方面:无需自建分布式集群;无需管理数据备份及冗余;无需考虑扩容。

 

推荐场景


 


图六 推荐场景特点

目前空格推荐业务场景具有以下要求:

  1. 千人千面,根据用户信息和历史行为进行个性化推荐;
  2. 大数据,可进行离线和实时计算,并且数据量远超传统的数据库可处理范畴;
  3. 分布式,可实现分布式服务、分布式计算;
  4. 弹性扩展,能快速扩容服务能力,应对业务发展;
  5. 迭代迅速,业务迭代速度极快,两周左右更新一个版本。


图七 推荐服务整体架构

 

针对上述需求,空格结合阿里云服务构建了如上图所示的整体推荐服务架构。数据集成方面,采用阿里云日志服务、采云间和数据传输,将数据传输到离线的ODPS;结合ODPS对数据进行大规模预处理和加工,之后通过自建模型训练进行机器学习,将训练的结果推送到OpenSearch,实现在线检索服务。

 

数据平台


 


图八 数据平台架构

 

上面这张幻灯片是空格的数据平台的整体架构,该架构底层通过采用阿里云的ODPSRDS、日志服务、云监控、采云间一系列服务组合做支撑,搭建了底层的离线计算框架和实时计算框架;中间层的产生的数据主要是系统数据、应用数据、业务数据;应用层针对不同需求产生与之相对应的是运营数据、渠道数据、用户数据、监控数据;这些数据通过API输入给服务层的数据门户、算法Ranking/QROpen API系统。



图九 手机门户案例

 

上图是空格的门户系统实例,底层数据准备,采用ODPS+采云间计算流程,再到RDS数据同步,实现数据开发和同步;前端展示,基于Bootstrap + Echarts单元框架,开发自适应手机门户页面,PC和手机都可以自如访问;同时对接到钉钉[微应用],便于使用访问,进一步提高了观察数据的效率。

 

为什么选择阿里云?

 

总结来看,阿里云服务于自行构建系统相对比,具有相当大的优势。首先数据集成方面:自建系统需自行搭建各类数据服务,打通各类数据管道;而阿里云服务中数据库、分布式存储、在线缓存应有尽有、各服务间数据互通,稳定性可靠性有保障。计算处理方面:自建系统需要自行搭建计算平台,资源缺乏弹性;而阿里云服务仅需开通ODPS,资源弹性、无需担心平台运维,计算框架丰富;引擎方面:自建系统搭建成本高,索引构建复杂,新业务迭代迟缓;阿里云服务开通OpenSearch,自行配置即可完成,开发成本极低。运维方面:自建系统运维复杂,搜索节点历来是故障重灾区;阿里云服务运维简单,无需专职运维团队,安全及稳定性高。成本方面:自建系统搭建耗时、运维成本高;阿里云服务开通服务简单,几乎无运维成本。效率方面:自建系统拖累团队精力、业务迭代缓慢;使用阿里云服务后团队可专注于业务迭代。



图十 阿里云服务优势

 

阿里云服务极大降低企业系统自建时间和人力成本,使得系统集成高效简单,并且为企业提供健全的配套基础服务,其完整的基础服务保证了系统及数据间互通,高稳定性的保障解放了运维人员的压力,同时阿里云提供了高效的技术支持,短时间内解决企业遇到的难题,促进企业的快速发展。

 

QA环节:

 

1、空格APP上线后,如何应对用户快速增长和处理流量高并发情况?

答:高并发的问题大家都会遇到,应该从几个方面去应对。数据库应对高并发方面,采用阿里云读写分离服务,将数据库水平扩容,缓解读写压力。同时服务端大部分节点采用缓存的方式来缓解后端数据库的压力,这里用到了阿里云的分布式服务MemCache服务,有效对流量进行缓存。搜索领域遇到高并发、高流量情况时,利用OpenSearch进行扩容,在流量激增时,将流量预值调高即可。

 

2、空格中搜索入口很多,不同类目下又有新的搜索分类,如此之多的搜索类型是如何实现的?

答:空格搜索的场景非常多,包括关键词的搜索、类目的搜索以及后台订单的搜索,多种搜索场景都是集成在阿里云的OpenSearch中,新建一个新的搜索场景成本很低,在不考虑复杂算法情况下,新建一个搜索场景仅需在OpenSearch中开通一个搜索的配置,同时和后端的数据进行无缝链接即可实现新搜索应用。

 

3、其他的APP如果做LBS定位时,阿里云相应的产品是否支持?

答:目前的移动APP都对LBS服务有需求,如附近的搜索、商圈的搜索。阿里云的OpenSearch的内置语法已经支持按距离排序、过滤,并且可以实现复杂的按商圈过滤,比如说在商场范围内,可以实现基于多边形的区域过滤,无须用户自行开发。

 

4、从技术人员到创业之中的感想?

答:从阿里这个大的平台走向创业道路,变化非常大。首先创业是一波人对一个共同梦想执着追求。作为技术人员来讲,之前在阿里,每个人的分工比较细,专注某一个方向;创业后,需要重新对自己进行定位,短期内需要变成一个全能的工程师,需要到处补位,既要懂前端、后端,还需要会维护服务器。在整个创业过程中,身体很累,但精神上充满激情。

 

5、能分享下阿里云提供技术支持解决问题的经验吗?

答:举一个具体的例子:当时在做搜索的时候,关键词搜索和类目搜索都已经上线,新加一个订单搜索功能,在开发过程中,数据库到索引构建一直失败,我们自己也没发现什么问题。在周日,通过工单服务求助于阿里云客服,仅仅几分钟后便得到回复,经过几轮交流很快解决了问题,保证了系统的按时上线。

 

6、对创业初期的公司有什么建议,需要一开始就使用阿里云这类完善的架构吗?

答:对初创团队,需要尽早的使用云服务,首先云服务可以在短期内加快研发迭代的效率,以搜索为例,采用OpenSearch之后,代码量减少了90%以上,基本的代码都集中在业务层面,离线层面无需自己进行开发。

 

7、IM PUSH模块采用是第三方的吗?

答:之前有一段时间是采用第三方的IM PUSH系统,随着业务量、用户量增加,现在使用的是完全自建的IM PUSH系统。


关于分享者:


刘博,原阿里妈妈搜索营销引擎技术架构师,现为空格APP(杭州美哒网络)技术合伙人,空格核心系统技术部负责人,负责搜索、推荐、数据平台、IM等基础业务。


空格是一家针对个人服务者的创业平台。在空格中,消费者可以买到手工美食、手工定制、家政、画画、陪玩、咨询等各类使用服务。同时空格作为面向个人服务的创业平台,有一技之长的用户可以随时将自己的技能和时间变成服务进行出售。空格上线仅仅60天就获得了1个亿的A轮融资,平台服务人次超过10万,最近还得到了中央电视台《焦点访谈》的关注。


相关系列文章:

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
3天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
23 5
|
7天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
4天前
|
负载均衡 监控 Cloud Native
云原生架构下的微服务治理策略与实践####
在数字化转型浪潮中,企业纷纷拥抱云计算,而云原生架构作为其核心技术支撑,正引领着一场深刻的技术变革。本文聚焦于云原生环境下微服务架构的治理策略与实践,探讨如何通过精细化的服务管理、动态的流量调度、高效的故障恢复机制以及持续的监控优化,构建弹性、可靠且易于维护的分布式系统。我们将深入剖析微服务治理的核心要素,结合具体案例,揭示其在提升系统稳定性、扩展性和敏捷性方面的关键作用,为读者提供一套切实可行的云原生微服务治理指南。 ####
|
4天前
|
消息中间件 缓存 Cloud Native
云原生架构下的性能优化实践与挑战####
随着企业数字化转型的加速,云原生架构以其高度解耦、弹性伸缩和快速迭代的特性,成为现代软件开发的首选模式。本文深入探讨了云原生环境下性能优化的关键策略与面临的主要挑战,通过案例分析,揭示了如何有效利用容器化、微服务、动态调度等技术手段提升应用性能,同时指出了在复杂云环境中确保系统稳定性和高效性的难题,为开发者和架构师提供了实战指南。 ####
18 3
|
5天前
|
运维 Kubernetes Cloud Native
深入理解云原生架构:从理论到实践
【10月更文挑战第38天】本文将引导读者深入探索云原生技术的核心概念,以及如何将这些概念应用于实际的软件开发和运维中。我们将从云原生的基本定义出发,逐步展开其背后的设计哲学、关键技术组件,并以一个具体的代码示例来演示云原生应用的构建过程。无论你是云原生技术的初学者,还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和实操指南。
|
5天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代应用架构中的实践与思考
【10月更文挑战第38天】随着云计算的不断成熟和演进,云原生(Cloud-Native)已成为推动企业数字化转型的重要力量。本文从云原生的基本概念出发,深入探讨了其在现代应用架构中的实际应用,并结合代码示例,展示了云原生技术如何优化资源管理、提升系统弹性和加速开发流程。通过分析云原生的优势与面临的挑战,本文旨在为读者提供一份云原生转型的指南和启示。
19 3
|
4天前
|
运维 Kubernetes Cloud Native
云原生技术在现代应用架构中的实践与挑战####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在实际项目中的应用案例,分析了企业在向云原生转型过程中面临的主要挑战及应对策略。不同于传统摘要的概述性质,本摘要强调通过具体实例揭示云原生技术如何促进应用的灵活性、可扩展性和高效运维,同时指出实践中需注意的技术债务、安全合规等问题,为读者提供一幅云原生技术实践的全景视图。 ####
|
5天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
4天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
4天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
14 1
服务架构的演进:从单体到微服务的探索之旅