存档

‘架构’ 分类的存档
页: 1 2 3 4 5 6 后页

Lucene 索引拆分大小库设计

2009年5月12日

原文: http://tangfl.yo2.cn/

Lucene 索引拆分大小库设计

TangFulin <tangfulin#gmail.com>

一. Index Writer:

1. IndexRebuilder 只重建一个索引,建成后替换 IndexUpdater 的大库,替换的同时清空 IndexUpdater 的小库
2. IndexUpdater 维护 2 个索引:大库 和 小库,定期合并小库到大库(同时合并 delete 记录),并清空小库
3. add:    添加到小库
4. delete:删除大库里的原记录,删除小库里的原记录
5. update:删除大库里的原记录,删除小库里的原记录,add 到小库

二. Index Transfer:(rsync updater 的新索引到 Index Searcher)

1. 增量传送大库和小库的内容到 searcher 的接收目录
2. 如果小库有改动,拷贝小库到 dest 目录 (滚动目录)
3. 如果大库有改动,拷贝大库到 bigidxdest 目录 (不滚动目录,直接覆盖)
4. TODO:bigidxdest 传输出错,不一致的索引的处理

三. Index Searcher

1. 定期检测大库和小库的改动,如果有改动则打开
2. 小库有改动:打开新的索引,预热,滚动
3. 大库有改动:reopen

四. Index Cleaner

1. 定期清理已关闭或跳过的索引 (大库不需要清理)

五. Index Monitor

1. 监控

fulin web服务, 分布式系统, 架构

QQ邮箱文件中转站功能实现分析!

2009年4月22日

前两天对QQ文件中转站的技术实现作了下分析,文件中转站是个不错的应用,解决了大文件没法分享和传播的问题,增强了QQ邮箱的用户粘度。

文件中转站所使用的技术难点:
1 继点续传(上传)
2 文件分布式存储

本文主要分析了文件中转站客户端ActiveX与服务器之间交互,没有跟据这些结果对上述两点技术作针对性的技术方案详细分析。

抓包分析结果:

 

1 上传一个新文件时,POST接口通知服务器,请求地址为:http://58.251.149.28/cgi-bin/ftnCreateFile

  POST数据包括文件的大小,MD5SHA1等。

POST /cgi-bin/ftnCreatefile HTTP/1.1
Accept: */*
Content-Type: multipart/form-data; boundary=————TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Length: 1127
Cookie: CCSHOW=000010; edition=4m118.mail.qq.com; noteorg; wimrefreshrun; sid=8977b882c65f7fc697dc31e6a30f94d2; username=14163398; qqmail_alias=14163398@qq.com; exstype=2; UM5K=059a755e7fa89cf8eac60e0d7d32450d; adid=14163398; adSP=v0YYly/BmGMcygiVnkRE1L/vsCxVrg+OylOC0ZbjEiQ=_33328_326830_1238411380_; pvid=9280539596; flv=10.0; pt2gguin=o0014163398; ptcz=8c81fc150313a9eb979bec2af1601a11bb283dd8bfb472ae7f55a56e1d5c9f17; r_cookie=14163398; o_cookie=14163398; aduid=wpiHPYip; avid=hqIcoIIqZ/KiW4OgU4vIvy6Wd3IitIrqrVux6jjbL/NNkcYrVSW5BVz3Qd/Vkd59KnxZx74oxzc=; icache=E@EBGGML; FTN5K=7e0481fb; ispai2_14163398=2; uin_cookie=14163398; euin_cookie=AQAY5baRS1sRkKYRUoDYVi0M2Skw02VsnjR
AGAAAAABSFyeYqP7yMXzwgAZXneK+NmAJkA==; qqmail_sid=8977b882c65f7fc697dc31e6a30f94d2;
qqmail_username=14163398; qqmail_domain=http://m118.mail.qq.com
User-Agent: TXFTNActiveX
Host: m118.mail.qq.com
Connection: Keep-Alive
Cache-Control: no-cache

————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Disposition: form-data; name=”uin”

14163398
————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Disposition: form-data; name=”sid”

T4kNTFG1Zb1vJiZv
————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Disposition: form-data; name=”path”

D:\movie\….\disk2\VIDEO_TS\VTS_01_1.VOB
————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Disposition: form-data; name=”size”

738058240
————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Disposition: form-data; name=”md5″

b3df24288c259741302a34a4cacb2044
————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Disposition: form-data; name=”sha”

97448fa9da6dcd1bb4b5746e7907f21c4558689d
————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Disposition: form-data; name=”sha3″

1b91fcdb2167fef83f3bcddc01a179ef8cc0ee18
————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680–

  接口返回接收文件用的服务器 ip, port, 接收文件的服务器可以动态分配;文件相关的Key, FilePath FilePath与文件直接关系,仅仅是一个ID, 文件通过 filepath来识别

HTTP/1.1 200 OK
Connection: close
Date: Wed, 01 Apr 2009 08:01:55 GMT
Content-Type: text/html
Transfer-Encoding: chunked

2c1

X-RetCode: 0
IP: 124.89.102.10
Port: 80
Key: 1ce616ca96cf45337573d78b2a6ab88961f5ac0abf3ff
2e0f118e1d7ecb131d8892c6d2f2d00f80e6c905cf1
88d8b0c08d74bc427aa1c5fe5fe467044f925de5b57bdc
3900d9dd1235786fe532ff57db53d75472035823f36a
2f68c05f11c050839377d57eae11c4da2f54889417f7de7f1
a3717bbbad6ecf7f82be2b81f2868c4b5bae536d3b
93388f3a6fa83f72e6456e3d727cf7dcb602de8f76add90
87d9169c4225a3690ed00cba6ad5c12dd31aa34bc06
78b3c78af003b2e08c414e9d97dd0ae862a00cf4dd55
25c3c39026f51e7518d579fde407368d0653aa2a22e36
a855f1e096743250f11113ee5376e825f6027d1383385b
caf535e994a803ed03c7e4d0bc770f281103bc3d371
65b571de40fe369d8c360807f7c4f7b03af3d9fc6918
9334a7e929efca9337f8b7397fd
FilePath: /42c8c27a-3930-4d7d-8cdb-4b9052b2e3ca

0

 

 

2 把文件分成128K一个包,每个包发一次POST请求,请求地址为:http://124.89.102.10/ftn_handler , HTTP/1.1

3 每次POST数据量为 131428 Byte,其中数据 1024*128 =131072Byte,剩余 356Byte为描述,用于指明当前这个包属于哪个用户,哪个文件等信息。

 

4 另一个线程,会POST到一个接口,把已上传的字节数汇总,请求地址为:http://58.251.149.28/cgi-bin/ftnUpileSize , HTTP/1.1。发送POST的频率不详。文件通过 filekey来识别。

POST /cgi-bin/ftnUpFileSize HTTP/1.1
Accept: */*
Content-Type: multipart/form-data; boundary=————TXFTNActiveX.Package.Partition.275578348.414808720.29995680
Content-Length: 648
Cookie: CCSHOW=000010; edition=4m118.mail.qq.com; noteorg; wimrefreshrun; sid=8977b882c65f7fc697dc31e6a30f94d2; username=14163398; qqmail_alias=14163398@qq.com; exstype=2; UM5K=059a755e7fa89cf8eac60e0d7d32450d; adid=14163398; adSP=v0YYly/BmGMcygiVnkRE1L/vsCxVrg+OylOC0ZbjEiQ=_33328_326830_1238411380_; pvid=9280539596; flv=10.0; pt2gguin=o0014163398; ptcz=8c81fc150313a9eb979bec2af1601a11bb283dd8bfb472ae7f55a56e1d5c9f17; r_cookie=14163398; o_cookie=14163398; aduid=wpiHPYip; avid=hqIcoIIqZ/KiW4OgU4vIvy6Wd3IitIrqrVux6jjbL/NNkcYrVSW5BVz3Qd/Vkd59KnxZx74oxzc=; icache=E@EBGGML; FTN5K=7e0481fb; ispai2_14163398=2; uin_cookie=14163398; euin_cookie=AQAY5baRS1sRkKYRUoDYVi0M2Skw02Vsnj
RAGAAAAABSFyeYqP7yMXzwgAZXneK+NmAJkA==;
qqmail_sid=8977b882c65f7fc697dc31e6a30f94d2;
qqmail_username=14163398; qqmail_domain=http://m118.mail.qq.com
User-Agent: TXFTNActiveX
Host: m118.mail.qq.com
Connection: Keep-Alive
Cache-Control: no-cache

————–TXFTNActiveX.Package.Partition.275578348.414808720.29995680
Content-Disposition: form-data; name=”uin”

14163398
————–TXFTNActiveX.Package.Partition.275578348.414808720.29995680
Content-Disposition: form-data; name=”sid”

T4kNTFG1Zb1vJiZv
————–TXFTNActiveX.Package.Partition.275578348.414808720.29995680
Content-Disposition: form-data; name=”filekey”

/42c8c27a-3930-4d7d-8cdb-4b9052b2e3ca
————–TXFTNActiveX.Package.Partition.275578348.414808720.29995680
Content-Disposition: form-data; name=”uploadsize”

1900544
————–TXFTNActiveX.Package.Partition.275578348.414808720.29995680–

 

盛 冬平 架构, 系统 ,

页: 1 2 3 4 5 6 后页
页: 1 2 3 4 5 6 后页