首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

构建实时垂直搜索网站心得分享(转)

2012-06-26 
构建实时垂直搜索网站经验分享(转)构建实时垂直搜索网站经验分享刘连春@去哪儿网大纲?垂直搜索?实时搜索?

构建实时垂直搜索网站经验分享(转)
构建实时垂直搜索网站经验分享
刘连春@去哪儿网

大纲
?垂直搜索
?实时搜索
?监控系统


垂直搜索
?什么是垂直搜索?
–与业务紧密耦合
?高访问量
?高可用性
?快速响应

垂直搜索-高访问量
?构建集群
?动静分离
?转发策略
?缓存系统
?消息系统

高访问量-构建集群
Nginx
AppServer
Memcached
AMQ
Spider
添加机器即可扩容(数据库用实机【IO,高可靠性】,应用服务器用虚拟机【快速调整内存,快速部署新机器】)

高访问量-动静分离
Nginx
静态内容
动态内容

高访问量-转发策略
?静态内容轮叫(Round-Robin)
?动态内容转发
–按用户转发(同一用户日志在同一机器,问题诊断)
–按搜索条件转发

高访问量-缓存系统
?基本信息缓存
–配置文件
–基础数据(定时刷新,即使刷新)
?分布式缓存
–Memcached

高访问量-消息系统
?AMQ (ActiveMQ)
AppServer
Spider
Queue
Topic
Other System

垂直搜索-高可用性
?消除单点
?自动故障转移
?系统尽量小而多
?控制后端压力
?使用外部接口经验
?留有备用系统

高可用性-消除单点
?为什么要消除单点
–软硬件故障是常态
?设计上的单点
–双机是基本要求
?隐藏的单点
–容量单点(2个80%负载的机器)
–配置单点(依赖的外部系统挂掉,没有设置超时)

高可用性-自动故障转移
?Failover
(避免类似下述场景问题:Nginx 报表导出 10分钟才能成功 超时转发 最后变成所有服务器都在运行导出服务)
数据库 2Master 1Monitor master之间IP漂移
AMQ 2个个服务器一组
Memcached 客户端转移
?Health check

高可用性-系统尽量小而多
?降低影响用户比例
?快速启动
?快速添加服务器

高可用性-控制后端压力
?分航线配置抓取(查询优化,移除无效查询)
?有效航线
?限制搜索量(考虑供应商服务器性能)
?自动上下线代理商工作时间 顾客量快满了
?协助对方优化系统

高可用性-使用外部接口经验
?假定不稳定
–WebService, Socket, Mail
?设置超时(连接超时,读取超时)
?添加监控
?用日志界定边界
–所有的输入输出

高可用性-留有备用系统
?缓冲系统压力

垂直搜索-快速响应
?有效利用缓存数据
?Ajax多次回数
?优化静态内容

快速响应-有效利用缓存
?快速返回未过期数据
?主动更新缓存
–首页低价

快速响应-Ajax多次回数
?只返回必要的数据
?动态调整刷新时间 可以返回报价的比例,调整相应时间

快速响应-优化静态内容
?利用CDN网络
?缓存静态内容(图片),javascript,css不放 CDN不够稳定,故障,版本不对,系统控制在自己手里

实时搜索
?缓存更新策略
?Memcached使用经验分享

实时搜索-缓存更新策略
?设置过期时间
?反馈式更新
?热门点击易变化

缓存更新策略-设置过期时间
?根据业务特点设置不同数据,时间不同

缓存更新策略-反馈式更新
?构建反馈回路
AppServer
WebSite
User
Memcached
主动更新!

缓存更新策略-热门点击易变化(设置短的缓存失效周期)
?最低的价格
?最好的时段

实时搜索-Memcached
?独立的LRU
?设置合理的过期时间
?缩减Key长度
?设置客户端的网络超时

监控系统
?Cacti(监控)+Nagios(报警短信,邮件)
?深入应用的探针
–了解应用特性
–快速定位故障
–指导优化
?分时报警
–不同时间段,不同的预警值
?设置合理阈值

热点排行