时间:2013-09-01
地点:车库咖啡(北京海淀区西大街48号海淀图书城步行街内)
主题:去哪儿网技术专场
链接:http://www.lamper.cn/party/current/
(一)《去哪儿网高可靠消息队列》
1、消息队列应用场景:
(1)广播通知(如缓存通知等);
(2)异步操作(实时操作中把耗时的部分异步化)
(3)数据复制(不同的系统间共享数据。一个系统更新数据库后,通知其他的数据库)
2、现有的消息队列解决方案:
ActiveMQ、RabbitMQ、Linkdin Kafca、Taobao MetaQ…
3、方案设计:
不使用二级提交或分布式等复杂的结构,使用本地处理:
消息产生后首先放到数据库里持久化,另起一个服务从数据库加载消息,消息被消费后,再从数据库里删除。
另外还有一个服务,会采用轮询的方式加载数据库里的消息,防止网络等其他问题导致某些消息没有处理。加载后的消息会发送生产者,并使用ID进行判重。
整个MQ是生产者---消费者模式。
4、优化。
(1)线程的使用
虽然专家们一致建议用Executors来管理线程,但是Executors的工厂方法,要么限制线程的个数,不限制队列的个数;要么不限制线程的个数,限制队列的个数。资源不可控。
所以建议谨慎使用,除非你知道你需要的是什么。
(2)zookeeper client的实现
A、Netflix Curator
存在两个bug:每订阅一个主题都会起一个线程;网络间断后不会自动恢复。
B、Apache Curator
Netflix Curator的后续升级版本。已经修改上述bug。
(3) JDBC Query Timeout 尽量不要使用。
每个Timer都会起一个线程,超时之后还会关掉connection。
(4)事务和非事务之间使用连接池进行隔离。
(5)GC。消息都是短周期对象,因此old age中不应该存在消息对象。
(6)优化线程。
如果有来历不明的线程或者大量第三方包创建的线程,需要考虑优化。
(二)《Qunar前端自动化解决方案 - fekit 》
1、概述
fikit是一套去哪儿网开发的前端开发工具,已经开源:https://github.com/rinh/fekit。
2、根据文件内容生成版本号。版本号就是内容的MD5。因此,内容不变,版本号就不变。
如果使用时间戳作版本号,只能表示文件是某天发布的,不能表示文件的内容是否发生变化。
3、PPT:http://pan.baidu.com/share/link?shareid=886909941&uk=3339058908
(三)《去哪儿酒店高性能实时搜索技术》
1、系统核心考量(排序有先后)
(1)信息搜索准备和全面;
(2)报价和房态的实时准确à实时报价抓取;
(3)高可用性à服务拆分、监控和运维;
(4)高性能à缓存、监控和数字;
2、实现
(1)拆分原则:功能内聚的独立业务模块。
目的在于降低成本,同时提高系统的整体可用性(故障隔离/服务隔离);
(2)负载均衡
A、roundrobin(轮询)
B、userip和cookie哈希;
C、搜索条件哈希;
3、核心组件
(1)服务化模块间通信
A、Nginx + QunarClient
B、RPC:dubbo等
(2)消息中间件:activeMQ
如果消息无须持久化,这是一个很有优势的消息队列。
MQ不传递大对象,只返回对象的key,对象本身存在memcached中。接收方根据key从memcached中获取。这样来减少消息传递的内容。
(3)用线程池隔离服务
(4)进程内缓存:
A、LRU.(最近最少使用算法)
B、多级策略:两级进程内缓存+memcached。业务特点决定了memcached在这里作为持久层的功能。热点数据会优先保持到一级缓存中,LRU淘汰后放入二级缓存,二级缓存淘汰后再放入memcached(借鉴Java heap的隔代管理)。
(5)构建内存缓存的基本原则:
A、关注单个缓存对象的大小;
B、要正确地使用数据类型。如Boolean使用boolean,而String类型即使是空字符串也可能占40+的字节。
C、值域固定的字符串对象常量化:String intern()或自定义String Pool.
D、要监控缓存命中率;
E、要估算总的内存开销;
F、缓存要有明确的容量限制;
G、对于LRU缓存,不同的业务线不要使用同一个LRU队列。
相关推荐
### LAMP编程之Linux2016版额外笔记 #### PUTTY的使用注意事项 - **启动PUTTY**:双击`PUTTY.EXE`启动程序。 - **打开会话**:点击“Open”按钮建立与远程服务器的连接。 - **调整字体大小**:由于默认字体可能过小...
7.4 LAMP架构解析 LAMP架构是Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库管理系统,PHP/Perl/Python作为脚本语言的组合。这种架构被广泛用于搭建动态网站和Web应用程序。学习如何配置Apache以支持PHP...
本文将深入解析LAMP架构的各个组成部分及其在个人笔记网站架设中的应用。 1. **Linux**:作为基础操作系统,Linux以其稳定性、安全性以及开源特性成为LAMP架构的基石。Linux提供了稳定的操作环境,为Apache、MySQL...
边看传智播客lamp的视频,别做的笔记.
[LAMP兄弟连李明老师讲Linux].课件01_第1讲.Linux应用与发展课件.pdf [LAMP兄弟连李明老师讲Linux].课件02_第2讲.Linux系统安装.pdf [LAMP兄弟连李明老师讲Linux].课件03_第3讲.Linux常用命令课件.pdf [LAMP兄弟...
兄弟连Linux新版视频教程 LAMP+LNMP环境搭建及配置教程笔记
Linux LAMP培训内部笔记 绝对正品
linux-lamp笔记 今天就是环境配置了,在这方面的资料我看了很多很多,大致可以分为两种方式,第一种是用yum命令安装需要大部分支持GD库的软件,第二种方式就是全部编译所有软件,下面我两种方式都说。 我们搭建的...
带你从Linux入门到精通,内有老师上课的笔记+课件+软件等文件
根据传智播客2012年PHP就业班视频LAMP部分整理出的学习笔记,可供自学使用,配合视频,提高自学效率!
Lamp安装笔记:具体包含PHP,mysql,apache,linux下的安装步骤。
centos5.2-lamp安装经验-笔记整理 以及make make install configure 按照过程中遇到的错误代码整理
在这个“马哥LAMP笔记”中,我们将深入探讨这个四部分组成的系统,以及如何在Linux环境中进行编译安装。 1. **Linux操作系统** Linux是LAMP架构的基础,它是一个开源、免费的操作系统,提供了稳定和安全的服务器...
根据Lamp兄弟连的网络linux课程,自己整理的笔记,绝对完整,这是 第2讲 Linux系统安装,以后的课程听完课整理好后会立即上传。
lamp
在Ubuntu系统上搭建LAMP(Linux、Apache、MySQL、PHP)环境是常见的Web服务器配置方式之一。本文将根据提供的安装笔记,详细介绍各组件的安装步骤及注意事项。 #### 二、LAMP安装流程 **1. 安装必要的构建工具** ``...
lamp环境搭建,lamp环境搭建,lamp环境搭建,lamp环境搭建
接着,笔记介绍了Linux的简介,指出其内核由芬兰人林纳斯·托瓦兹编写,它是一个基于POSIX和UNIX的操作系统,支持多用户、多任务以及多线程和多CPU。Linux具有强大的网络功能和稳定性,且因为其开源性质,衍生出众多...