CSDN首页> 云计算 孙玄:解析58同城典型技术架构及演变

转:http://www.csdn.net/article/2015-04-09/2824437

在UPYUN主办的“UPYUN Open Talk”第三期北京站上,58同城系统架构师孙玄详细介绍了58同城的商家(移动)管理平台的技术架构及演变历程,并就企业的核心O2O技术进行了专题的分享。

孙玄表示,58同城是一个分类信息网站,涵盖房产、二手车、招聘、黄页等内容,在每一个类别里都能看到方便用户交流沟通的58帮帮。58帮帮分为IM部分和非IM的业务处理部分,目前,整个帮帮系统每天要处理10亿次+的发消息,加好友等传统IM请求,和30亿+的业务线操作,总请求到达40亿次+。帮帮同时在线用户量也突破了100万,给基础设施带来了严峻挑战。

58同城帮帮技术架构

系统起步:传统IM

而说到挑战,58帮帮从诞生到现在,曾经面对过很多。最开始时,它只是一个传统的IM,主要用来满足用户沟通和传递信息的功能。针对这样的业务场景,架构设计如下:

整个架构分为四层:接入层、逻辑层、路由层、数据层。

接入层。直接面对 PC、移动、网页海量客户端的连接请求,整合成少数的长连接,并将请求转发至逻辑层。

逻辑层。主要是一些业务逻辑的处理(例如权限校验、添加好友、发送消息等)。

路由层。主要处理和用户一次登录session相关的数据(比如:用户在线状态,登录IP等),这部分涉及的数据变化非常快,没必要固化,-直接存储在内存中。

数据层。严格来讲是数据中间件,屏蔽了底层RDBMS和NoSQL的区别和复杂性,较容易完成关键数据的存储。

系统发展:第三方业务接入

随着业务的不断变化,58帮帮不再局限于传统的IM,而是一个逐步向一个商家综合移动管理平台演进,例如接入房产、招聘等业务,提供商家管理功能,进行发帖、刷新、置顶帖子等操作。很多功能,比如招聘、房产等需要在客户端完成操作和展示。针对这些需求,在原有IM的架构上了调整,主要变化在客户端APP。

第三方业务接入,由于和IM业务类型不一样,对长连接没有依赖,因此没必须使用长连接,可以直接在APP通过http调用第三方服务,垂直划分后,开发效率非常高,第三方业务可以快速介入,但由于客户端与第三方业务耦合太紧,带来很多兼容性的困难,一旦第三方业务接口发生变动,客户端就要随之更新来适配变化,客户端升级代价非常大,而且不能做到实时更新,比如需要升级时,用户可以选择不升级,这些都会带来很大的麻烦。

系统成熟:客户端轻量化

为解决这个问题,在此基础上又做了些调整,形成了目前的框架:

加入一层帮帮WebService服务。通过这层业务,较少客户端与第三方的耦合,即使第三方服务发生变化,客户端也不受影响。

O2O核心技术解析

对于移动O2O,长连接、移动LBS、推送技术都比较重要。

1. 推送的主要途径

推送方面,主要通过以下三个方式来做:

1.1 客户端轮询(pull)

客户端定期发起查询请求,来达到推送的目的。pull的优点和缺点都很明显,架构简单但实时性差,想提高实时性,只能加快查询频率,但这会造成电量消耗过高。

1.2 短信推送

通过短信发送推送消息,并在客户端置入短信拦截模块,将接收到的短信拦截,并解析后转发给应用处理。这个方案实时性好、到达率高,但成本很高。

1.3 服务端长连接(push)

这是目前的主流实现方式,实时性好,且电量消耗低。

2. 不同平台的实现方案

基本上目前的推送技术都是结合这 3 个方面展开的,但对于不同的终端平台,又有各自不一样的实现,这里简单介绍一下 IOS 和 android 上的具体实现方案。

2.1 IOS 平台

对于 IOS 来说比较简单,你没有别的选择,因为 IOS 中的应用是不允许后台常驻的,所以你没有办法通过开发自己的 push service 来完成推送下发,只能通过苹果 APNS 渠道来完成推送,大致流程如下:

2.2 Android 平台

在 android 平台上,由于没有 IOS 那样的限制,可选的方案就多一些。你可以通过谷歌官方的。

C2DM 完成推送,可以借助开源的推送协议(例如 XMPP)实现,也可以借助市面上的各种推送产品完成推送。

谷歌 C2DM 的主要流程如下:

C2DM 和 APNS 流程类似,但其最大的问题是服务器在国外,很容易被屏蔽,而且由于 android 社区分裂比较严重,很多厂商可能直接就把 C2DM 模块给去掉了,所以在国内这个方案极不可靠。

对于开源推送协议,常见的有 XMPP 等,事实上谷歌的 C2DM 底层就是基于 XMPP 实现的,通过调用和测试,主要遇到了两个问题:1. 没有ACK 机制,消息不可靠。2. 请求量大时会不稳定。

最后就是一些市面上的第三方推送产品了,使用这些产品需要面对几个问题:

首先是到达率。虽然都宣传到达率能到 90%及以上,但实际使用起来,发现远远不到。

其次是实时性。第三方推送产品的推送通道是共用的,会面向多个客户,如果某一个客户推送量特别大,你的推送实时性可能就会受到影响,这些都是你不可控的。

曾经,58同城也有考虑过自己去实现一套推送方案,如果自己来做的话,要先解决几个难点。首先是服务端海量长连接的管理,然后是客户端常驻 sevice 的稳定性,手机在内存不足的时候,系统会杀掉你的 service,甚至有些系统比较强势,它不允许你的 service 常驻,如何在这些复杂场景下处理好,非常麻烦。

综合上面的一些考虑,58 帮帮目前的推送方案没有过多的使用自建方案,主要结合多家第三方推送来实现。针对到达率的提升,什么手机上使用什么推送产品,这需要去做一些数据分析,然后再做针对性优化。

时间: 2024-10-16 14:00:20

CSDN首页> 云计算 孙玄:解析58同城典型技术架构及演变的相关文章

转: 58同城高性能移动Push推送平台架构演进之路

转: http://geek.csdn.net/news/detail/58738 文/孙玄 本文详细讲述58同城高性能移动Push推送平台架构演进的三个阶段,并介绍了什么是移动Push推送,为什么需要,原理和方案对比:移动Push推送第一阶段(单平台)架构如何设计:移动Push推送典型性能问题分析解决,以及高可用.高性能.高稳定性如何保证. 什么是移动Push推送 移动Push推送是移动互联网最基础的需求之一,用于满足移动互联环境下消息到达App客户端.以转转(58赶集旗下真实个人的闲置交易平

58同城沈剑:好的架构源于不停地衍变,而非设计

原文网址链接:http://www.csdn.net/article/2015-10-24/2826028摘要:对很多创业公司而言,很难在初期就预估到流量十倍.百倍以及千倍以后网站架构会是什么样的一个状况.同时,如果系统初期就设计一个千万级并发的流量架构,很难有公司可以支撑这个成本. [编者按]对很多创业公司而言,随着业务增长,网站的流量也会经历不同的阶段.从十万流量到一百万流量,再从一百万流量跨越到一千万甚至上亿的流量,网站的架构需要经历哪些变化?在“OneAPM 技术公开课”第一期中,58同

58同城沈剑:好的架构不是设计出来的,而是演进出来的

对 很多创业公司而言,随着业务的增长,网站的流量也会经历不同的阶段.从十万流量到一百万流量,再从一百万流量跨越到一千万甚至上亿的流量,网站的架构需要 经历哪些变化?我们一起听听 58 同城的技术委员会执行主席沈剑在 OneAPM 技术公开课上的回答(以下演讲整理): 本场演讲我主要阐述一下,58同城从小流量.中等规模流量.大流量,到更大的流量过程中,架构是怎么演进的?遇到了哪些问题?以及如何解决这些问题? 好的架构不是设计出来的而是演进出来的 对很多创业公司而言,在初期的时候,我们很难在初期就预

[2016-03-18] [架构] 读《58同城沈剑:好的架构不是设计出来的,而是演进出来的》

文章摘录: ———————————————————————- 58同城从小流量.中等规模流量.大流量,到更大的流量过程中,架构是怎么演进的?遇到了哪些问题?以及如何解决这些问题? 在 58 同城建立之初,站点的流量非常小,可能也就是是十万级别,这也就意味着,平均每秒钟也就是几次的访问. 此时网站架构的特点:请求量是比较低,数据量比较小,代码量也比较小.可能找几个工程师,很容易就做一个这样的站点,根本没什么「架构」可言. 最开始58同城的站点架构用一个词概括就是「ALL IN ONE」 如果可以重

58同城南京品牌公馆数据爬取

做一个租房信息的网站,要爬取58同城上南京品牌公馆的房源信息,因为数字被重新编码了,折腾了一天,记录一下整个过程,留着后面使用. 1,网页分析和字体文件反爬 简单看了下url(https://nj.58.com/pinpaigongyu/pn/1/),比较简单,替换下网址中页码数,就可以一直翻页并进行爬取.分析了下源代码需要爬取的信息,如下图所示,有一些怪异的汉字,刚开始以为是编码问题,后来看了下爬取下来的网页,发现是数字被替换了,应该是有特殊的字体文件. 在script标签中找了一会,发现了下

58同城2015校招笔试、一面、二面经历

10.18 宣讲 58宣讲时间真是安排的晚...19.30开始,我6.30就到了..整整放了1个小时不重复的视频.....我听完他们CSO对行业和公司的介绍就走了.感觉58可能是o2o的下一个爆发点.感觉蛮有前景的.宣讲会也是和小米的宣讲差不多,过道上都挤满了人这种.我个人还是比较些向往去58的.个人感觉对于O2O,58算是赶了个早集..把最脏最累的活给做了..反而是美团,大众点评这种抓住了热点...当然,未来的大趋势也是O2O,就看58能不能赶上这趟快车了. 10.19 笔试 昨天的唯品会和中

秉持H2H理念,58同城如何在移动互联网时代开拓市场

移动互联网时代汹涌而来,Human to Human的这一时代落点会给58同城带来怎样的前景?BAT入驻生活服务领域,58同城如何在压力中实现自己的以人为本之路,将H2H的理念贯彻,让生活更简单的企业定位得以实现? 一.              纵观互联网的发展,变革就是以人为中心 纵观我国不可撼动的BAT,百度致胜的是人与信息,腾讯致胜的是人与社交,阿里致胜的则是人与商品.那么作为移动互联网正在迅速崛起,人与人之间联系日渐加深的移动互联网时期,生活服务的便利性逐渐被人们重视起来,嘀嘀和快的之

媳妇熬成婆?分类信息之上 58同城打算干点别的

经过近一年时间的频繁投资之后,近期58同城进行了大规模的组织架构调整,此举意在向业界展示58同城的未来发展方向,同时也显露了姚劲波的野心.另外,让58可喜的是,伴随组织架构调整而来的还有一份超预期的亮眼财报,这在提升资本市场信心的同时也抵挡了不少质疑之声. 10亿美元投资并购目标已完成1/3 此前,包括58同城.赶集网在内的分类信息网站频繁招到业界质疑,一来认为分类信息市场已步入市场瓶颈期,未来成长空间不足:二来以分类信息的营收能力,企业难有更大作为,而且获取流量的成本较高,用户需求频次相对较低

ThinkPHP仿58同城一站多城市路由配置技巧及二级域名部署技巧

ThinkPHP在PATHINFO的URL模式下,URL的格式类似于http://www.domain.com/appName/module/action 即:http://www.domain.com/分组名/模块名/方法名 或者:http://www.domain.com/模块名/方法名 然而在有些类似于58同城这样的应用中,需要分城市展示不同的页面内容,我们希望在网站域名后面紧跟一个城市目录,也即这种格式: http://www.domain.com/城市名/模块名/方法名,根据不同的城市