`

《LAMP人之去哪儿网专场》笔记

阅读更多

时间: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版额外笔记

    ### LAMP编程之Linux2016版额外笔记 #### PUTTY的使用注意事项 - **启动PUTTY**:双击`PUTTY.EXE`启动程序。 - **打开会话**:点击“Open”按钮建立与远程服务器的连接。 - **调整字体大小**:由于默认字体可能过小...

    lamp 学习笔记

    7.4 LAMP架构解析 LAMP架构是Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库管理系统,PHP/Perl/Python作为脚本语言的组合。这种架构被广泛用于搭建动态网站和Web应用程序。学习如何配置Apache以支持PHP...

    LAMP架设个人笔记

    本文将深入解析LAMP架构的各个组成部分及其在个人笔记网站架设中的应用。 1. **Linux**:作为基础操作系统,Linux以其稳定性、安全性以及开源特性成为LAMP架构的基石。Linux提供了稳定的操作环境,为Apache、MySQL...

    传智播客lamp笔记

    边看传智播客lamp的视频,别做的笔记.

    LAMP兄弟连李明老师Linux讲义笔记PPT下载

    [LAMP兄弟连李明老师讲Linux].课件01_第1讲.Linux应用与发展课件.pdf [LAMP兄弟连李明老师讲Linux].课件02_第2讲.Linux系统安装.pdf [LAMP兄弟连李明老师讲Linux].课件03_第3讲.Linux常用命令课件.pdf [LAMP兄弟...

    兄弟连Linux新版视频教程 LAMP+LNMP环境搭建及配置教程笔记

    兄弟连Linux新版视频教程 LAMP+LNMP环境搭建及配置教程笔记

    Linux LAMP培训内部笔记

    Linux LAMP培训内部笔记 绝对正品

    linux-lamp笔记

    linux-lamp笔记 今天就是环境配置了,在这方面的资料我看了很多很多,大致可以分为两种方式,第一种是用yum命令安装需要大部分支持GD库的软件,第二种方式就是全部编译所有软件,下面我两种方式都说。 我们搭建的...

    LAMP编程之Linux资料

    带你从Linux入门到精通,内有老师上课的笔记+课件+软件等文件

    传智播客PHP就业班视频[2012年版]--LAMP学习笔记

    根据传智播客2012年PHP就业班视频LAMP部分整理出的学习笔记,可供自学使用,配合视频,提高自学效率!

    Lamp安装笔记

    Lamp安装笔记:具体包含PHP,mysql,apache,linux下的安装步骤。

    centos-lamp安装经验-笔记整理

    centos5.2-lamp安装经验-笔记整理 以及make make install configure 按照过程中遇到的错误代码整理

    马哥LAMP笔记

    在这个“马哥LAMP笔记”中,我们将深入探讨这个四部分组成的系统,以及如何在Linux环境中进行编译安装。 1. **Linux操作系统** Linux是LAMP架构的基础,它是一个开源、免费的操作系统,提供了稳定和安全的服务器...

    [LAMP兄弟连李明老师讲Linux] 第2讲.Linux系统安装

    根据Lamp兄弟连的网络linux课程,自己整理的笔记,绝对完整,这是 第2讲 Linux系统安装,以后的课程听完课整理好后会立即上传。

    lamp介绍和小结

    lamp

    ubuntu,LAMP安装笔记

    在Ubuntu系统上搭建LAMP(Linux、Apache、MySQL、PHP)环境是常见的Web服务器配置方式之一。本文将根据提供的安装笔记,详细介绍各组件的安装步骤及注意事项。 #### 二、LAMP安装流程 **1. 安装必要的构建工具** ``...

    LAMP环境搭建

    lamp环境搭建,lamp环境搭建,lamp环境搭建,lamp环境搭建

    狂神说Linux课堂笔记.pdf

    接着,笔记介绍了Linux的简介,指出其内核由芬兰人林纳斯·托瓦兹编写,它是一个基于POSIX和UNIX的操作系统,支持多用户、多任务以及多线程和多CPU。Linux具有强大的网络功能和稳定性,且因为其开源性质,衍生出众多...

Global site tag (gtag.js) - Google Analytics