搜狗商业平台Java技术实践.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
搜狗商业平台Java技术实践 发表于2015-05-20 14:56|?1478次阅读| 来源CSDN|?2?条评论| 作者刘建、郭理勇、毛宏  HYPERLINK /tag/%E7%89%B9%E5%88%AB%E7%AD%96%E5%88%92/news 特别策划 HYPERLINK /tag/java20%E5%91%A8%E5%B9%B4/news Java20周年 HYPERLINK /tag/java/news Java HYPERLINK /tag/%E3%80%8A%E7%A8%8B%E5%BA%8F%E5%91%98%E3%80%8B%E7%94%B5%E5%AD%90%E5%88%8A/news 《程序员》电子刊 摘要:搜狗商业平台负责搜狗广告业务,涵盖搜索、网盟、无线、品牌等业务线,其中,基于Java的业务系统在70%以上。从数据库访问、离线大规模数据处理到实时计算,都依托于Java技术。 Java自1995年问世以来,已历经20多年岁月。20年来,IT技术风起云涌,Java始终以其可移植性、跨平台性、生态系统完备性等特点成为最主流的开发语言之一。事实上,Java无处不在,已经???入到大家的日常生活中,从你的每一次购物到每一笔支付,都有Java技术的身影,国内外的主流网站大部分都是由Java技术支撑。 搜狗商业平台负责搜狗广告业务,涵盖搜索、网盟、无线、品牌等业务线,面向几十万广告主和广告代理商,提供十亿级以上在线广告管理及相关支持,提供近百亿的在线报告。其中,基于Java的业务系统在70%以上。从底层缓存、会话、调度、通信交互,到提供给客户的API接口,从数据库访问、离线大规模数据处理到实时计算,都依托于Java技术。在我们内部长期的实践过程中,Java技术已经逐步自发地形成了一个生态系统。 Java生态圈非常庞大而丰富,我们在长期的实践过程中,自主或基于Java开源组件进行二次开发和优化,构建了搜狗商业平台完整的Java技术框架,如图1所示。 图1搜狗商业平台Java技术栈 在基础组件层,我们直接使用了一些业界著名的框架和类库,比如IoC框架Spring、日志Log4J等;同时也基于一些框架进行了二次开发,比如基于Redis提供了分布式会话和分布式缓存,有效地解决单机内存及I/O瓶颈问题。在数据存储层,我们数据存储主要使用关系数据库MySQL、文档数据库MongoDB、分布式存储HDFS以及自行研发的DFS文件系统。在数据访问层,基于MySQL数据库和MongoDB数据库,分别提供了一套分库分表框架,使得其支持海量数据存储,同时也分别提供了ORM框架,使得能够很容易地完成数据库中的数据到对象的映射。在数据计算层,离线计算方案主要使用了HadoopMapReduce框架,流式计算方案主要使用了Kafka和Storm。在接口交互层,提供了三种框架,分别支持Thrift、WebServices和HTTP/JSON三种交互方式。在基础服务层,提供了认证、授权、配置、分布式任务调度、消息、图片、短信和邮件等多种基础服务。 下面分别介绍我们在数据库分库分表框架、分布式任务调度平台和分布式RPC框架上的实践。 数据库分库分表框架:Compass 互联网领域针对大数据存储,基于NoSQL的数据库越来越多,然而,在一致性、事务性、可靠性等方面,特别是在较复杂的业务场景中,关系数据库仍起着不可替代的作用。在关系数据库领域,MySQL数据库基本上主导了市场。然而,互联网面临着用户多、数据量大等的挑战,一组MySQL数据库集群无法支撑如此大的PV及I/O,因此对单表的数据量以及每台机器的数据分布需要做一定的预估。在我们的实践中,对于单表的数据量有一些约束。一般说来,对于定长的记录,单表数据量最好不超过800W,极限不超过1000W;对于不定长记录,单表数据量最好不超过500W,极限不超过800W,否则在较复杂的业务场景中,可能会引起性能下降。 对于大规模数据的存储和访问,一般都采用分库分表的方案解决。主流互联网公司都提供了各自的解决方案,比如淘宝分布式数据层TDDL、百度Dbproxy等。我们也研发了数据库分库分表框架Compass,支持和满足内部的一些需求。 一般来说,数据库分布分表框架的设计有两种方案:独立中间件层方式和嵌入式应用框架方式。独立中间件层方式采用独立的部署,后端数据库对应用程序是透明的,其扩容对应用的可用性不会有明显的影响。嵌入式应用框架方式是独立的类库,应用需要显式地配置后端的单个或者多个数据库。独立中间件层方式的开发和维护成本都较高,且多了一层网络开销;嵌入式应用框架方式数据库配置较为复杂一些,但其开发维护成本低,并且对单元化架构的支持也不错,因此Compass选用了嵌入式应用

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8135026137000003

1亿VIP精品文档

相关文档