- 浏览: 469261 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
mrshen:
很棒,在其他大神的博客上理清了思路看懂之后,来lz这里用例子学 ...
RED-BLACK(红黑)树的实现TreeMap源码阅读 -
a939639017:
yanf4j check不下来 ?
Java nio 2.0 AIO -
hellostory:
又是抄来的 - -
mysql分表方案 -
davidluoye:
为什么不说下支持的数据库呢?
模糊查询的优化 -
oliveevilo:
表示没看懂
Synchronized和java.util.concurrent.locks.Lock的区别
TripAdvisor架构 - 每月4千万用户访问,每天2亿动态内容PV,30T数据(2011-06-28 16:30:35)
转载
标签:系统架构it 分类:技术
TripAdvisor,网址是 www.tripadvisor.com ,中文网站叫到到网。下面是这家公司的架构介绍。
1、2011年6月份的统计数据
. 每月超过4千万独立访客,2千万会员,4千5百万评论
. 超过29个销售点,20种语言
. 我们的移动产品支持iPhone、iPad、Android、Nokia、Palm和Windows phone,每月吸引了1千万用户
. 每天的动态PV请求超过了2亿,象js/css/images/video等静态内容都是用CDN进行加速访问的
. 为了满足页面访问,每天进行了2.5亿次分布式操作请求,包括内部服务调用、数据访问和memcached访问
. 每天的日志压缩完后超过了120GB
. Hadoop上的数据有30TB,明年早期就达到100TB
. 从来没有过计划当机,可用性接近4个9
. 单独部署在北京支持daodao.com
. 每周发布周期,每天都发布丁。开发周期可以是一天,一周或者是一个月
. 超过两打小团队(略多于100个工程师),同时为50多个项目工作,其中20到30个项目每周有新发布
2、总结构说明
. 用开源的linux/apache/java/postgre sql/lucene/velocity/memcached/jgroups
. 真的保持简单模式 - 容易建立、调试、部署、维护和运营
. 一系列简单无状态网站服务器,上面运行java和Velocity模板
. 每个功能(媒体,成员,评论,旅行列表等)都包装成服务的形式
. 一系列的服务 - 每个服务按业务导向设计访问接口,并针对网络访问性能做过优化
. 假定所有事情都会出问题。要么在集群(web服务器和服务服务器)中有大量的节点,要么保持真正的N+1冗余(在数据库和数据中心本身)
3、控制流说明
. 控制流也很简单:先解析请求的url,访问各个内部服务获取数据,替换到模板后,返回给用户
. 我们的url结构也是经过慎重考虑过的,已经稳定了很长时间,经历了网站重新设计和代码重构
. 请求用负载均衡设备转发给网站服务器。负载均衡器根椐用户的cookie选择对应的服务器组,再随机从中挑选一台将请求转给它。采用不同的服务器组,方便进行软硬件的布署管理和A/B测试。请求本身是无状态的,在浏览器cookie中存了状态信息。已经登陆的用户将从数据库中获取额外的状态信息
. 一个Java servlet解析URL和cookie信息,并确定它需要的内容,再访问不同的内部服务。一个servlet将访问0到10几个服务不等。每个服务访问将占用2~15毫秒。服务调用将通过一个软件负载均衡器,它可以为某个方法定义重试机制
. 每个服务接口都是按业务使用模式特别优化过,如查询一个会员的评论,查询一个地点的所有评论。大部分服务是数据库的一个智能缓存。用jgroups来同步缓存与数据库的内容。大部分服务跑在4个不同的虚拟机或物理机上,有些服务实例使用单独的服务器
. 服务访问返回的内容按java对象的方式组织,并传给velocity模板
. 有许多机制来选择不同的servlet和velocity模板,可以根椐用户位置、使用的语言、功能等等进行选择。在基础架构中还可以选择不同的代码和模板路径,以方便进行A/B切换和其它测试
. 我们的服务器放到不同的服务器池中,以便进行A/B测试,对部署进行更好的控制。每周的发布过程,会把代码发布到一个小池子上,运行几个小时,确保一切运转良好之后才会发布到所有机器池上
4、技术
. 冗余的BigIP组,思科路由器
. 一组64台无状态网站服务器,每台机器是linux/apache/tomcat,上面运行java程序,每天处理超过2亿的请求
. 一组40台无状态处理服务的服务器,上面运行25个左右服务,jetty/java,每天处理7个多亿的请求
. Postgre运行在6组服务器上,每组通过DRDB连在一起,每天处理7个多亿的查询
. 3个不同的memcached运行在网站服务器上,数据量超过350GB。用Spy memcache客户端,异步模式,NIO扩展请求。对spy java客户端进行了优化和别的改动,以保证扩展性和可靠性
. Lucene,包装在服务结构里,5千万文档,55GB的索引,每天查询8百万次。对索引按天进行增量更新,每周完全重建一次索引
. 用JGroups在不同的服务器之间进行状态同步,也没有别的选择
. 在16个节点集群上运行hadoop集群,192TB的裸磁盘容量,192个CPU,运行在万兆网络上
. java/python/ruby/php/perl等用来作工具和配套的基础设施
. 监控用cacti/nagios加自定义工具
. 两个数据中心,分布在不同的城高。一个承担流量,处理读写状态,另一个跟它保持同步,工作在只读模式,7x24小时随时准备切换。每个季度定期对两个数据的中心的角色进行切换
. 在每个数据中心总共大约有125台服务器,都是标准的Dell服务器
. 120GB压缩日志,包括应用程序日志,apache访问日志
5、开发
. 全配置的Mac或linux机器,SVN,Bugzillia,30"显式器
. 几百个虚拟的开发机。每个工程师有自己单独的开发虚拟机,额外需求用另外的虚拟机
. 按周为周期进行代码发布 - 每周一发一大包
. 每天会发布丁,处理缺陷和应急功能
. 100个左右的工程师同时为超过50个项目工作,每周有25个左右的项目发布新版本
. 工程师从设计、编码、测试到监控,全面负责。你设计,你自己写代码。你写了代码,你自己测试它
. 工程师负责HTML/CSS/JS/Java/Scripting所有方面的工作。如果你对其中一方面不熟悉,你可以去学习它
. 由不同的高级工程师和管理人员一起负责代码的最终发布过程
. 这边有许多测试框架可以使用:单元/功能/负载/冒烟等等。代码是你的,由你选择最适合的工具
. 同样有很多机制来帮助你高质量地完成新特性:设计评审/代码评审/部署评审/运维评审
6、文化
. TripAdvisor就象同时运行的两打初创公司那样,所有工作在同一个代码库,并在一个共同的分布式计算环境中运行。每个小组都有自己的经营目标,每队为其业务的所有方面负责。你工作在各个级别 - 设计,编码,测试,监测,CSS,JS,java,SQL脚本都归你
. TripAdvisor工程师按业务功能进级组织 -有超过2打的小组。每组直接为他们的业务目标服务,如SEM/SEO/Mobile/China等等。我们没有传统的架构/编码/QA角色
. 所有其它组使用的基础平台由运维组负责,这里包括:数据中心、软件基础设施、DevOPs、仓储。你可以把运维当成我们内部的AWS,提供7x24小时的分布式计算基础设施服务,编码/开发/测试/部署都统一到一处。这个小组包括2个操作工程师,2个负责数据中心和软件基础设施的网站工程师
. 每个小组都按适合对应业务特点和个人需要的方式工作,我们过程可以很好描述为“后敏捷”
. 负责文化 - 你为你的项目从头负责到底,负责设计、编码、测试、监控。大部分项目都是1到2个工程师
. 日志和度量 - 记录大量数据和度量数据
. 黑客周 - 每个工程师在每一年可以挑选任何项目,为之工作一周。你也可以与其它团队一起推进大型项目
. 工程师互换 - 不同项目中结对工程师可以互换几周时间,以传播知识和文化
. 网络工程项目 - 这是一个新项目,让工程师在不同的小组中工作几个月
7、想到哪就说到哪
. 可扩展性始于你的文化 - 你如何招聘,招什么样的人,你对他们提出了什么期望
. 工程师。招聪明、反应快、灵活的工程师,这些人愿意做任何类型的工作,乐于学习新技术。在TripAdvisor,我们没有架构师,如果你设计了一些,你就负责写对应的代码,并测试它们。对于那些只想工作在自己的舒适区,认为某些工作很低下的工程师,在里面工作只会碍别人的事情
. 招聘很高兴实现能用的东西的人。技术只是一个手段,本身不是目的
. 你负责你的代码和它的影响,如果你打破了某些事情,你去修复它
. 实现20个项目,带着10个BUG,另外3个项目延迟两天,这种情况比及时完成10个项目,一个bug也没有的情况更可取一些
. 鼓励学习和推动事情 -在这里工作的每一个人在最初的几个月里都会犯许多错误,经过一段时间偶尔仍然会犯错误。重要的事情是你从错误中学到多少东西和不要多次犯同样的错误
. 让设计尽可能保持简单,聚焦在近期的业务需求上 -不要超前设计。比如,我们从几万用户到几百万用户,再到几千万用户时,分别重写了我们的会员功能。当我们需要一个几万用户的产品时,如果按几千万用户的方式去设计,设计的结果可能很差。在某个阶段我们迟早会以更少的问题实现的,跟某个阶段所学到的比,重写的代价相对很小,
. 你可以用垂直扩展的方式,扩展数据库,这样也能走很远,特别是你减少使用联合查询,同时所有内容都能加载到内存中时更是如此
. 只有绝对必要的时候再拆分,并尽可能简单。我们最大的单表在超过1亿行数据的时候工作得很好,而且一直简单地垂直方式扩展,一直到我们每天需要更新或插入几千万数据,快接近修改的IO极限时,我们才按服务级别拆分成12个表,当前是12个表,分在两台机器上,每台机器是6个表。我们能轻易到扩展到 3,4,6,然后是12台机器,不需要修改我们的哈希算法或重新分布数据,只需要简单地复制表就可以做到。我们没有发现有任何读写性能下降,实现这一部分的代码也很简单,很容易理解和调试。每天超过7亿的数据库操作的情况下,我们仍然没有必要去拆分别的表
. 尽可能地避免联合查询。我们不同的内容类型存在不同的数据库中,有时共享同一台机器,有时用独立的机器。做两次查询(先查评论,再根椐评论中的ID查询会员,然后由应用程序对数据进行合并)比联合查询要好。通过将不同的数据放在不同的数据库,很容易扩展成一台机器负责一个数据库。这当然也使得你方便扩展你的内容类型,只要每个类型的内容不相互依赖,我们可以象增加模块似的增加新的类型。这也非常符合我们的服务导向的方法,每个服务是由对应的数据库支持的
. 让一个工程师负责所有的方面。当一个人负责所有的(css,js,java,sql,scripting),这里没有等待、瓶颈、计划冲突、管理开销或者所有权重新分配。更多的项目和人可以以模块的方式加进来,而不影响现别的人和项目
. 服务。使用一组已知的矮胖协议,适合业务和使用模式,能容易地组装页面,以方便扩展各自的服务。搜索流量增加了不少?那就增加更多的搜索服务器。这也要求你更细致地思考你的业务和使用模式
. 硬件。尽可以保持简单。没有华丽的硬件,没有SAN和专用设备,我们所有的机器都是通用的DELL服务器。
. 软件。真的保持简单。有些系统你不会自己去写,如apache/tomcat/jetty/lucene/postgre/memcached/velocity。其它的东西都是我们自己打造的。这样不太难,同是你明白也能控制所有的事情
. 流程。少即是好。你需要使用源代码管理,需要成为一个好的代码编写者,需要实现能工作的代码,需要交流你的设计和他们的努力程度。其它没有什么还是需要或必须的了。如果你很聪明,你会得到你的设计评审,代码审查,你会写测试和相应的监控脚本。招聘那些明白你需要做这些事,是因为它们能帮助你实现更好的产品,不是因为他们是必须的人
. 设计评审。所有工程师每周邀请参加设计评审。如果你的一个项目会影响其它的项目(数据库,内存占用,新的库等),期待你呈现在设计评审会上呈现你的你的设计并让大家讨论。这不仅仅是一个提供指导并对整个系统进行监督的好方式,同时也是让所有人相互学习并了解事情进展的好方式
转载
标签:系统架构it 分类:技术
TripAdvisor,网址是 www.tripadvisor.com ,中文网站叫到到网。下面是这家公司的架构介绍。
1、2011年6月份的统计数据
. 每月超过4千万独立访客,2千万会员,4千5百万评论
. 超过29个销售点,20种语言
. 我们的移动产品支持iPhone、iPad、Android、Nokia、Palm和Windows phone,每月吸引了1千万用户
. 每天的动态PV请求超过了2亿,象js/css/images/video等静态内容都是用CDN进行加速访问的
. 为了满足页面访问,每天进行了2.5亿次分布式操作请求,包括内部服务调用、数据访问和memcached访问
. 每天的日志压缩完后超过了120GB
. Hadoop上的数据有30TB,明年早期就达到100TB
. 从来没有过计划当机,可用性接近4个9
. 单独部署在北京支持daodao.com
. 每周发布周期,每天都发布丁。开发周期可以是一天,一周或者是一个月
. 超过两打小团队(略多于100个工程师),同时为50多个项目工作,其中20到30个项目每周有新发布
2、总结构说明
. 用开源的linux/apache/java/postgre sql/lucene/velocity/memcached/jgroups
. 真的保持简单模式 - 容易建立、调试、部署、维护和运营
. 一系列简单无状态网站服务器,上面运行java和Velocity模板
. 每个功能(媒体,成员,评论,旅行列表等)都包装成服务的形式
. 一系列的服务 - 每个服务按业务导向设计访问接口,并针对网络访问性能做过优化
. 假定所有事情都会出问题。要么在集群(web服务器和服务服务器)中有大量的节点,要么保持真正的N+1冗余(在数据库和数据中心本身)
3、控制流说明
. 控制流也很简单:先解析请求的url,访问各个内部服务获取数据,替换到模板后,返回给用户
. 我们的url结构也是经过慎重考虑过的,已经稳定了很长时间,经历了网站重新设计和代码重构
. 请求用负载均衡设备转发给网站服务器。负载均衡器根椐用户的cookie选择对应的服务器组,再随机从中挑选一台将请求转给它。采用不同的服务器组,方便进行软硬件的布署管理和A/B测试。请求本身是无状态的,在浏览器cookie中存了状态信息。已经登陆的用户将从数据库中获取额外的状态信息
. 一个Java servlet解析URL和cookie信息,并确定它需要的内容,再访问不同的内部服务。一个servlet将访问0到10几个服务不等。每个服务访问将占用2~15毫秒。服务调用将通过一个软件负载均衡器,它可以为某个方法定义重试机制
. 每个服务接口都是按业务使用模式特别优化过,如查询一个会员的评论,查询一个地点的所有评论。大部分服务是数据库的一个智能缓存。用jgroups来同步缓存与数据库的内容。大部分服务跑在4个不同的虚拟机或物理机上,有些服务实例使用单独的服务器
. 服务访问返回的内容按java对象的方式组织,并传给velocity模板
. 有许多机制来选择不同的servlet和velocity模板,可以根椐用户位置、使用的语言、功能等等进行选择。在基础架构中还可以选择不同的代码和模板路径,以方便进行A/B切换和其它测试
. 我们的服务器放到不同的服务器池中,以便进行A/B测试,对部署进行更好的控制。每周的发布过程,会把代码发布到一个小池子上,运行几个小时,确保一切运转良好之后才会发布到所有机器池上
4、技术
. 冗余的BigIP组,思科路由器
. 一组64台无状态网站服务器,每台机器是linux/apache/tomcat,上面运行java程序,每天处理超过2亿的请求
. 一组40台无状态处理服务的服务器,上面运行25个左右服务,jetty/java,每天处理7个多亿的请求
. Postgre运行在6组服务器上,每组通过DRDB连在一起,每天处理7个多亿的查询
. 3个不同的memcached运行在网站服务器上,数据量超过350GB。用Spy memcache客户端,异步模式,NIO扩展请求。对spy java客户端进行了优化和别的改动,以保证扩展性和可靠性
. Lucene,包装在服务结构里,5千万文档,55GB的索引,每天查询8百万次。对索引按天进行增量更新,每周完全重建一次索引
. 用JGroups在不同的服务器之间进行状态同步,也没有别的选择
. 在16个节点集群上运行hadoop集群,192TB的裸磁盘容量,192个CPU,运行在万兆网络上
. java/python/ruby/php/perl等用来作工具和配套的基础设施
. 监控用cacti/nagios加自定义工具
. 两个数据中心,分布在不同的城高。一个承担流量,处理读写状态,另一个跟它保持同步,工作在只读模式,7x24小时随时准备切换。每个季度定期对两个数据的中心的角色进行切换
. 在每个数据中心总共大约有125台服务器,都是标准的Dell服务器
. 120GB压缩日志,包括应用程序日志,apache访问日志
5、开发
. 全配置的Mac或linux机器,SVN,Bugzillia,30"显式器
. 几百个虚拟的开发机。每个工程师有自己单独的开发虚拟机,额外需求用另外的虚拟机
. 按周为周期进行代码发布 - 每周一发一大包
. 每天会发布丁,处理缺陷和应急功能
. 100个左右的工程师同时为超过50个项目工作,每周有25个左右的项目发布新版本
. 工程师从设计、编码、测试到监控,全面负责。你设计,你自己写代码。你写了代码,你自己测试它
. 工程师负责HTML/CSS/JS/Java/Scripting所有方面的工作。如果你对其中一方面不熟悉,你可以去学习它
. 由不同的高级工程师和管理人员一起负责代码的最终发布过程
. 这边有许多测试框架可以使用:单元/功能/负载/冒烟等等。代码是你的,由你选择最适合的工具
. 同样有很多机制来帮助你高质量地完成新特性:设计评审/代码评审/部署评审/运维评审
6、文化
. TripAdvisor就象同时运行的两打初创公司那样,所有工作在同一个代码库,并在一个共同的分布式计算环境中运行。每个小组都有自己的经营目标,每队为其业务的所有方面负责。你工作在各个级别 - 设计,编码,测试,监测,CSS,JS,java,SQL脚本都归你
. TripAdvisor工程师按业务功能进级组织 -有超过2打的小组。每组直接为他们的业务目标服务,如SEM/SEO/Mobile/China等等。我们没有传统的架构/编码/QA角色
. 所有其它组使用的基础平台由运维组负责,这里包括:数据中心、软件基础设施、DevOPs、仓储。你可以把运维当成我们内部的AWS,提供7x24小时的分布式计算基础设施服务,编码/开发/测试/部署都统一到一处。这个小组包括2个操作工程师,2个负责数据中心和软件基础设施的网站工程师
. 每个小组都按适合对应业务特点和个人需要的方式工作,我们过程可以很好描述为“后敏捷”
. 负责文化 - 你为你的项目从头负责到底,负责设计、编码、测试、监控。大部分项目都是1到2个工程师
. 日志和度量 - 记录大量数据和度量数据
. 黑客周 - 每个工程师在每一年可以挑选任何项目,为之工作一周。你也可以与其它团队一起推进大型项目
. 工程师互换 - 不同项目中结对工程师可以互换几周时间,以传播知识和文化
. 网络工程项目 - 这是一个新项目,让工程师在不同的小组中工作几个月
7、想到哪就说到哪
. 可扩展性始于你的文化 - 你如何招聘,招什么样的人,你对他们提出了什么期望
. 工程师。招聪明、反应快、灵活的工程师,这些人愿意做任何类型的工作,乐于学习新技术。在TripAdvisor,我们没有架构师,如果你设计了一些,你就负责写对应的代码,并测试它们。对于那些只想工作在自己的舒适区,认为某些工作很低下的工程师,在里面工作只会碍别人的事情
. 招聘很高兴实现能用的东西的人。技术只是一个手段,本身不是目的
. 你负责你的代码和它的影响,如果你打破了某些事情,你去修复它
. 实现20个项目,带着10个BUG,另外3个项目延迟两天,这种情况比及时完成10个项目,一个bug也没有的情况更可取一些
. 鼓励学习和推动事情 -在这里工作的每一个人在最初的几个月里都会犯许多错误,经过一段时间偶尔仍然会犯错误。重要的事情是你从错误中学到多少东西和不要多次犯同样的错误
. 让设计尽可能保持简单,聚焦在近期的业务需求上 -不要超前设计。比如,我们从几万用户到几百万用户,再到几千万用户时,分别重写了我们的会员功能。当我们需要一个几万用户的产品时,如果按几千万用户的方式去设计,设计的结果可能很差。在某个阶段我们迟早会以更少的问题实现的,跟某个阶段所学到的比,重写的代价相对很小,
. 你可以用垂直扩展的方式,扩展数据库,这样也能走很远,特别是你减少使用联合查询,同时所有内容都能加载到内存中时更是如此
. 只有绝对必要的时候再拆分,并尽可能简单。我们最大的单表在超过1亿行数据的时候工作得很好,而且一直简单地垂直方式扩展,一直到我们每天需要更新或插入几千万数据,快接近修改的IO极限时,我们才按服务级别拆分成12个表,当前是12个表,分在两台机器上,每台机器是6个表。我们能轻易到扩展到 3,4,6,然后是12台机器,不需要修改我们的哈希算法或重新分布数据,只需要简单地复制表就可以做到。我们没有发现有任何读写性能下降,实现这一部分的代码也很简单,很容易理解和调试。每天超过7亿的数据库操作的情况下,我们仍然没有必要去拆分别的表
. 尽可能地避免联合查询。我们不同的内容类型存在不同的数据库中,有时共享同一台机器,有时用独立的机器。做两次查询(先查评论,再根椐评论中的ID查询会员,然后由应用程序对数据进行合并)比联合查询要好。通过将不同的数据放在不同的数据库,很容易扩展成一台机器负责一个数据库。这当然也使得你方便扩展你的内容类型,只要每个类型的内容不相互依赖,我们可以象增加模块似的增加新的类型。这也非常符合我们的服务导向的方法,每个服务是由对应的数据库支持的
. 让一个工程师负责所有的方面。当一个人负责所有的(css,js,java,sql,scripting),这里没有等待、瓶颈、计划冲突、管理开销或者所有权重新分配。更多的项目和人可以以模块的方式加进来,而不影响现别的人和项目
. 服务。使用一组已知的矮胖协议,适合业务和使用模式,能容易地组装页面,以方便扩展各自的服务。搜索流量增加了不少?那就增加更多的搜索服务器。这也要求你更细致地思考你的业务和使用模式
. 硬件。尽可以保持简单。没有华丽的硬件,没有SAN和专用设备,我们所有的机器都是通用的DELL服务器。
. 软件。真的保持简单。有些系统你不会自己去写,如apache/tomcat/jetty/lucene/postgre/memcached/velocity。其它的东西都是我们自己打造的。这样不太难,同是你明白也能控制所有的事情
. 流程。少即是好。你需要使用源代码管理,需要成为一个好的代码编写者,需要实现能工作的代码,需要交流你的设计和他们的努力程度。其它没有什么还是需要或必须的了。如果你很聪明,你会得到你的设计评审,代码审查,你会写测试和相应的监控脚本。招聘那些明白你需要做这些事,是因为它们能帮助你实现更好的产品,不是因为他们是必须的人
. 设计评审。所有工程师每周邀请参加设计评审。如果你的一个项目会影响其它的项目(数据库,内存占用,新的库等),期待你呈现在设计评审会上呈现你的你的设计并让大家讨论。这不仅仅是一个提供指导并对整个系统进行监督的好方式,同时也是让所有人相互学习并了解事情进展的好方式
发表评论
-
Apache+Tomcat负载均衡两种session共享方式的设置
2011-11-11 15:20 1118session共享有两种方式: 1、session共享,多个 ... -
nginx折腾记(HTTP性能能测试,与Apache对比)
2011-11-11 15:20 949http://www.cnblogs.com/killkill ... -
apache性能测试工具ab
2011-11-11 15:20 620Apache自带的测试工具ab(apache benchmar ... -
19个心得 明明白白说Linux下的负载均衡
2011-11-11 15:21 14782010-08-06 10:00 抚琴煮酒 ... -
服务器集群负载均衡(F5,LVS,DNS,CDN)
2011-11-01 16:38 2019F5全称: F5-BIG-IP-GTM 全球流量管理器. ... -
nginx和squid配合搭建的web服务器前端系统
2011-11-01 16:41 1066这个架构是目前我个人觉得比较稳妥并且最方便的架构,易于多 ... -
当前比较适用的海量小文件系统架构方案
2011-11-01 16:42 3499现在的网站越做越大了,存储的东西越来越多,如何解决这些文件存储 ... -
当前比较适用的海量小文件系统架构方案
2011-11-01 16:43 1341现在的网站越做越大了,存储的东西越来越多,如何解决这些文件存储 ... -
新型的大型bbs架构
2011-11-01 16:41 920squid+nginx 这个架构基于s ... -
图片服务器的hash架构
2011-10-31 22:42 1691如图,这是一个最简洁 ... -
csdn.net的系统架构研究
2011-10-31 22:40 1172csdn作为国内最大的程序 ... -
rsync的几种优化应用方案[
2011-10-31 22:34 1808rsync的几种优化应用方 ... -
分布式数据库拆表拆库的常用策略
2011-10-31 22:33 1082在大容量,高负荷的web ... -
服务器系统架构分析日志
2011-10-31 22:32 1054linux服务器每秒并发处理数的计算方法[2010-04-13 ... -
江枫谈淘宝“双十一”事件中的数据库架构优化
2011-10-12 10:24 1665概要 本采访是淘宝双 ... -
使用 libevent 和 libev 提高网络应用性能
2011-10-08 17:50 1341构建现代的服务器应用 ... -
CDN 网络内容分发
2011-10-08 17:46 1253CDN的全称是Content Delivery Network ... -
架构体会
2011-05-31 21:09 9811.我们的程序员或者我们的民族缺乏想象力,因为早在孩子时代有着 ...
相关推荐
在线评论有用性的深度数据挖掘——基于TripAdvisor的酒店评论数据.pdf
它内置了模型-视图-控制器(MVC)架构模式,并且提供了一个强大的admin接口,使得开发者能够轻松地管理和操作数据库内容。 "administration"标签可能意味着项目包括了管理界面,允许用户或管理员查看、编辑和管理...
PySpider框架基本使用及抓取TripAdvisor实战 PySpider架构概述及用法详解 Scrapy框架安装 Scrapy框架基本使用 Scrapy命令行详解 Scrapy中选择器用法 Scrapy中Spiders用法 Scrapy中Item Pipeline的用法 Scrapy中...
│ 课时20:PySpider框架基本使用及抓取TripAdvisor实战.mp4 │ 课时21:PySpider架构概述及用法详解.mp4 │ 课时22:Scrapy框架安装.mp4 │ 课时23:Scrapy框架基本使用.mp4 │ 课时24:Scrapy命令行详解.mp4 │ ...
国外在移动旅游软件开发方面已有较多成熟的应用,如TripAdvisor、Google Trips等,这些应用提供了丰富的旅游信息,包括景点推荐、用户评价、地图导航等功能。 1.3.2 国内研究现状 国内景区旅游软件发展相对较晚,...
在本项目中,我们将深入探讨如何使用Python技术...在实际项目中,还需要考虑数据隐私、可扩展性、系统架构等问题,以适应大规模数据和高并发的业务需求。此外,推荐系统的效果评估和用户体验优化也是持续的工作重点。
许多大型旅游平台(如Booking.com、TripAdvisor等)已经利用先进的信息技术为用户提供一站式服务。在国内,携程、去哪儿等也已经占据了较大的市场份额。然而,在细分市场领域,尤其是针对特定地区或特定类型的旅游...
尽管先前的研究提出了用于定量分析评论(即评论的价和数量)的解决方案,但本研究提出了一个基于创新的Attention-Transformer架构的模型,该架构基于T5 Google模型。 结果表明,按标题进行的文字摘要(食品质量,...
目前,市场上已有一些成功的旅游推荐系统,如TripAdvisor、马蜂窝等,它们通过用户行为分析、内容过滤等方式,为用户提供个性化的旅行建议。 第三章 系统设计与实现技术 1. 技术选型:选择Python作为开发语言,因...
例如,可以使用OpenWeatherMap API获取天气数据,Google Maps API获取地理位置和导航服务,以及 TripAdvisor API 获取景点评价和建议。同时,数据本地存储也很重要,以便离线时也能访问部分信息。 **4. 功能实现与...
以下示例包含在演示和随附的 CalendarMatrixDemo 项目(还包括架构 3.2 项目)中: MarketWatch 风格期权到期只读日历和图例多“随机”日期选择示例单个日期选择弹出窗口展示了许多高级功能,包括:国际语言支持、...
在国外,许多大型旅游网站如TripAdvisor、Expedia等,已经运用先进的信息技术构建了功能强大的在线旅游平台,提供丰富的旅游信息和服务。而在国内,如携程、马蜂窝等也提供了类似的服务,但这些平台在个性化推荐、...
在国外,许多城市已经建立了成熟的基于目的地的O2O旅游电子商务平台,如TripAdvisor、Expedia等,这些平台拥有强大的用户基础和完善的商业模式。在国内,如南京、杭州等地的旅游网站也已具备较高的知名度和市场占有...
在国际上,旅游社交平台如TripAdvisor、Lonely Planet等已发展成熟,它们提供了丰富的旅游信息和用户评价,为全球旅行者提供了便利。然而,这些平台往往面向全球市场,对地域性较强的旅游需求关注较少。因此,本系统...
在国外,如TripAdvisor等大型旅游服务平台也推出了自己的微信小程序版本,以便更好地服务于中国游客;在国内,携程、马蜂窝等旅游网站纷纷推出了自己的微信小程序,这些小程序不仅提供了丰富的旅游信息和服务,还...
通过层次化的架构来同时表示单词级别和句子级别的信息,并交替使用注意力机制和多跳机制对方面问题和文档进行操作。 这一方法被实验性地应用在了多个数据集上,如TripAdvisor和BeerAdvocate,其结果显示该模型在...
1. **系统总体设计**:从宏观角度出发,确定系统的整体架构和技术选型。 2. **系统功能设计**: - **一般用户功能设计**:主要包括旅游信息浏览、评论留言等功能。 - **管理员功能设计**:涉及内容更新、用户管理...
3. **API接口**:可能调用了旅游信息API,如Yelp API获取餐饮信息,或者TripAdvisor API获取景点评价,为生成行程提供数据支持。 4. **算法设计**:项目的核心部分可能包含一种或多种算法,如贪心算法或遗传算法,...
行业要闻方面,报告提到了TripAdvisor与携程的合作,以及华住集团的管理层变动和战略规划。这些事件可能对行业产生长远影响,值得投资者关注。 在A股餐饮旅游类上市公司重要公告中,报告提到了凯撒旅游和云南旅游的...