构建实时垂直搜索网站经验分享(转)

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

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


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

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

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

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

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

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

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

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

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

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

高可用性-[color=red]系统尽量小而多[/color]
•降低影响用户比例
•快速启动
•快速添加服务器

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

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

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

垂直搜索-快速响应
•有效利用缓存数据
•Ajax[color=red]多次[/color]回数
•优化静态内容

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

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

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

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

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

缓存更新策略-设置过期时间
•根据业务特点设置[color=red]不同数据,时间不同[/color]

缓存更新策略-[color=red]反馈式更新[/color]
•构建反馈回路
AppServer
WebSite
User
Memcached
[color=red]主动更新![/color]

缓存更新策略-热门点击易变化[color=red](设置短的缓存失效周期)[/color]
•最低的价格
•最好的时段

实时搜索-Memcached
•独立的LRU
•设置合理的过期时间
•缩减Key长度
•设置客户端的网络[color=red]超时[/color]

监控系统
•Cacti(监控)+Nagios(报警短信,邮件)
•深入应用的探针
–了解应用特性
–快速定位故障
–指导优化
•[color=red]分时[/color]报警
–不同时间段,不同的预警值
•设置[color=red]合理阈值[/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值