2008年07月29日

Google Reader的好友推荐分享: Blog内容缓释

前几天我给几个做开发的朋友发了个消息,请他们帮我再次在Google Reader中共享了一篇旧招聘启事,可能他们的Gtalk好友都在Google Reader中看到了。
一篇文章在Google Reader中的确有过时很快的现象,超过1天后可能就被一片被淹没到数百篇未读文章列表后面了。而被好友较多的Blogger分享的时候还会带来一些新的阅读和传播机会;所以Google Reader的好友推荐是这个新的传播渠道已经被很多人运用的很好了,因为大部分人还不知道如何退订Gtalk好友的分享(难道要删除好友?) 也有很多朋友( 比如Fenng)采取在发表文章几天后自我推荐的方法再次“提醒”自己的好友

Google Reader的LifeStream机制:
其实Google真的没有必要收购digg的: Google Reader中的共享(收藏可以看作是匿名digg)已经是一个很好的内容推荐来源;
和DIGG相比: 缺少的是一个加注释/评论功能和一个频道聚合首页;
Google Reader更容易和GTalk组合起来的,如果有个给”XXX分享“:在线回复的接口可以增加更多交互和反馈;

按此阅读全文 "Google Reader的好友推荐分享: Blog内容缓释" »

2008年06月13日

[咨询] 如何签署网络服务有效性条款SLA 服务监控网站搜集

博客大巴最近的机房续约,机房搬迁和CDN的协议中,都遇到了下服务有效性条款的服务级别协议(Service Level Agreement, SLA)问题。在之前的很多服务合同中,国内的IDC大多是这样定义的: 服务中断1个小时,赔偿2倍时间的服务。这样计算:一个月下来如果网络陆陆续续中断了15天,才赔一个月的服务? 比较一下国外相应服务的条款:
Nirvanix的SLA条款
Amazon S3服务的SLA条款

服务有效时间百分比每自然月 下月服务补偿百分比
大于等于99%同时小于99.9% 10%
低于99% 25%

另外一个问题就是监控的依据:
无论是基于服务商还是基于客户自身,都有一定问题。国内也不知道哪里有比较低成本的监控服务,而监控的细节就更成问题了,还有基于南北电信/网通部署不同的监控点等问题。

按此阅读全文 "[咨询] 如何签署网络服务有效性条款SLA 服务监控网站搜集" »

2008年05月15日

山寨技术交流会: 博客大巴 / VeryCD / 客齐集 / 联络家 / CDNUnion

上周末在博客大巴邀请了上海几家StartUp公司的朋友做了一次技术交流:VeryCD科学家们客齐集联络家CDNUnion安居客Sun的Startup解决方案专家;

主题1:动态内容的CDN缓存
结论,目前CDN缓存仍然以静态内容为主,动态页面缓存过期/更新策略较复杂;而CDN有purge接口,但现在实际应用较少: 更多缓存服务是为内容永不更新的图片、视频等服务;此外,固态盘代替逐步内存的可能性近期还没有,固态硬盘的仍然价格非常高,I/O的速度也是问题;

主题2: Memcached的使用
所有网站都用了Memcached,并通过避免对数据库的连接而大大提高了性能(命中率一般在90%以上);

关于:多memcached的分布策略;
客齐集
规模: 在多台前端应用服务器上划出一定空间,
分布规则:使用的是memcached addserver方式由memcache自己进行缓存分布;
单点失败处理:遇到个别节点中断会retry;
博客大巴和VeryCD应用类似:
规模: 几十G(单个2G);
分布规则:都是自己应用设置设置缓存分布规则,对数据进行分布,
单点失败处理:如果遇到Memcached中断并不尝试其他服务器;

关于memcache的压缩:
PHP客户端可以设置压缩外, server端也有更详细的压缩配置选项(memcached的文档中有?);
关于memcached的扩展性: 最新版本有考虑consistent hash(在扩展服务节点后,旧内容仍然再旧服务器上,不用按重新按新的分布规则生成新缓存)
memcached: bin模式存储;

对于缓存对象:大的List列表页对象用memcache缓存对效率提升很重要;

主题3: Start up公司的招聘来源
客齐集的校园招聘成果还是让其他公司非常的眼红,另外说一句: 我们仍然在招前端应用开发人员(欢迎应届生):有优秀的开发人员,各个Startup公司之间都是可以推荐的(VeryCD的51job招聘广告就是托管在博客大巴的),以后还会不定期做一些交流。

按此阅读全文 "山寨技术交流会: 博客大巴 / VeryCD / 客齐集 / 联络家 / CDNUnion" »

2008年04月22日

[AD] “我不是一个塑料袋” 博客大巴环保袋设计大赛 一等奖为MacBook Air + 5000¥

“我不是塑料袋”是一个很有趣的设计创意: I'm not a plastic bag

此次我不是塑料袋:环保袋设计大赛活动的奖品为:
评委会奖(1名):MacBook Air + 5000元现金
( 歌手Yael Naim的那首《New Soul》你每天在电梯中都会听到多次吧? )
独树一帜奖(2名):价值5000元以上的尼康D60单反相机1台 + 5000元现金
不拘一格奖(2名):价值2000元以上的多普达S1手机1台 + 5000元现金

* 奖品涉及到的个人所得税由获奖人自理
* 所有参加投票的网友均有机会抽取100名参与奖: BlogBus明信片一套*50套 触动传媒提供小礼品*50个

按此阅读全文 "[AD] “我不是一个塑料袋” 博客大巴环保袋设计大赛 一等奖为MacBook Air + 5000¥" »

2008年04月13日

启用MEMCACHE_COMPRESSED压缩,“扩容”MemCached

尝试:
启用了PHP memcache_set()函数中的 MEMCACHE_COMPRESSED压缩选项,而memcache_get()可以在后续读取过程中自动对压缩的缓存对象进行解压缩。

效果:
测试了一下,对于博客大巴目前的应用来说,启用压缩后,相同的容量(2G)存储的对象数量增加了约一倍,缓存命中率从50%左右,提高到了60%左右。进一步提高命中率硬件投入还是必须的,又增加了2倍的内存后终于做到了缓存命中率提高到90%;

前提0: 内存缓存有用,且命中率值得提升;
从60%提高到90%,还是从90%提高到95%,要看hit后的性能能够提升是否值得;

前提1:MemCached已经用满
先用memcached-tool查看一下memcached的容量统计,看memcached是不是已经用满了。如果充分运行时MemCached的空间尚未用满,启用一下压缩是没有意义的; 而且:发现没有用满的MemCached,最好减少相应MemCached的容量,空余出更多内存给其他服务做缓存;

前提2: 压缩率
缓存的数据的确有大于几百字节的,如果都是小于100字节的键值对,压缩可能反而带来膨胀。由于缓存对象的大小在Memcached中都是按照固定大小分块存储的,最小也要88 B。所以对于过小数据带来的压缩膨胀并不是太大的问题;

前台应用的CPU损耗:
对数据的额外压缩CPU损耗远远低于缓存命中率提升减少后台数据库访问带来的性能提升,和http的gzip/deflate压缩类似,压缩后数据一般为原数据大小的30%左右,节省了70%的传输性能消耗所得会大于文件压缩带来的性能损耗;

按此阅读全文 "启用MEMCACHE_COMPRESSED压缩,“扩容”MemCached" »

2008年04月12日

利用Header机制隐掉Vary,提高mod_cache缓存的命中率

HTTP 1.1的规范建议所有的请求输出都包含Vary Header,目的是针对对前端缓存服务器,增加针对Vary制定的各种Header类型进行不同的缓存处理,在浏览器规格复杂的情况下,不利于缓存的命中,所以要在被缓存的服务器上设置:

Header unset Vary

问题是这样被发现的:最近使用Apache 2.2的内存缓存mod_mem_cache机制进行后台静态文件加速。但是总是发现几乎是只代理而不缓存,而内存缓存模式又没有统计工具查看缓存内容和命中率。转为用mod_disk_cache后,前端缓存目录空间增加非常快,以至于经常需要删除文件,而删除文件的I/O损失超过了直接访问后台访问的加速所得。后台明明只有几M模板图片和CSS文件,为什么缓存空间上G而且命中率那么低呢?查看了一下缓存目录下的文件,Apache的前端磁盘缓存就会根据浏览器除了针对内容的.data文件和.header文件外还有一个.vary目录,而这个vary目录下又会按照顶级的cache规则再mapping出2级目录来,目录节点个数过多造成磁盘空间的浪费:

a/b/Jqyw8OvBIlgaef7Zb8lQ.data
a/b/Jqyw8OvBIlgaef7Zb8lQ.header
a/b/Jqyw8OvBIlgaef7Zb8lQ.header.vary/a/b

当遇到和原有Vary不同的Header时,会在 header.vary目录下生成更多的缓存;从Apache的讨论组上看原因就是IE的AcceptEncoding请求头信息里增加了一个空格
IE : Accept-Encoding: gzip, deflate
Firefox: Accept-Encoding: gzip,deflate

于是按照Fernando的方法,将后台的Vary Header禁掉了。缓存空间立刻停止了增长(还是个别有header.vary目录出现)。

另外一个配置优化是不要启用后台的Expires Header;

ExpiresActive off

由前端的Cache服务器设置缓存规则,基本上到后台的访问就很少了;

记录一个调试缓存缓存用命令行看Header输出的方法:
curl -I 查看HTTP头信息;
查看缓存后输出结果:
curl -I http://www.example.com/foo.bar
查看缓存前的服务器输出:
curl -I -H "Host: www.example.com" http://ip.address.of.example/foo.bar

[chedong]$ curl -I -H "Host: public.blogbus.com" http://192.168.1.17/rss/xianguo.png
HTTP/1.1 200 OK
Date: Sat, 12 Apr 2008 07:09:51 GMT
Server: Apache
Last-Modified: Mon, 28 Jan 2008 03:34:55 GMT
Accept-Ranges: bytes
Content-Length: 1353
Content-Type: image/png

[chedong]$ curl -I http://public.blogbus.com/rss/xianguo.png
HTTP/1.1 200 OK
Date: Sat, 12 Apr 2008 07:10:01 GMT
Server: Apache/2.2.8 (Unix)
Last-Modified: Mon, 28 Jan 2008 03:34:55 GMT
Accept-Ranges: bytes
Content-Length: 1353
Cache-Control: max-age=20736000
Expires: Mon, 08 Dec 2008 06:27:41 GMT
Node: B01-AD-01
Age: 2540
Content-Type: image/png

按此阅读全文 "利用Header机制隐掉Vary,提高mod_cache缓存的命中率" »

2008年03月27日

[招聘] PHP程序员,工作地点在上海 欢迎大学生暑期实习

纯技术人员工种,需要撰写代码,这确实是个体力活,所以我们需要您比较年轻。但我们一样需要您有至少一年的网站开发的工作经验(学生时代自己摆弄建站亦可),曾经独立开发过某个项目(或者是主要成员)。 我们需要您有在LAMP平台上纯熟的工作经验,可以基于SVN和其他开发人员进行协同开发,能够直接投入到独立开发工作之中。 如果您曾经开发过/Hack过Blog系统,那是会得到加分的。技术能力当然很重要,但我们更看重您的学习和钻研能力。

简历请寄到:job@blogbus.com,最好附上以前项目的主要项目开发经历:使用的软件包/框架/类库等; 以及你对加入博客大巴十大要求的理解;面试时间一般是每周四下午,公司的具体地址是:上海市徐汇区龙华路2577号5号楼。

如果你在实习:可以考虑以下这个题目(一个月内学习并完成)
一个每天十万级访问的RSS阅读器(每秒2处理完成个请求);
用户数量1万人,每人平均有20个RSS(每个人有5-100个RSS) FEED(总计有10万个不同RSS,想办法从google blogsearch上搜集一下);
更新频度:所有FEED平均每天至少2次,其中热门FEED每小时同步一次(占5%);
估算一下存储量,访问速度和RSS解析(SimplePie)的容错问题等。

基于LAMP平台+MemCached ,目前我们的PHP开发编辑器是: Komodo Edit 服务器端直接用vim编辑;
版本控制是Subversion/SVNWindows客户端 TortoiseSVN
Windows下的远程登录是PuTTY

大部分操作都是在Linux命令行下操作,所以awk / perl/ grep之类的需要能够熟练到代替简单的过滤排序等SQL操作

按此阅读全文 "[招聘] PHP程序员,工作地点在上海 欢迎大学生暑期实习" »

2008年03月13日

BugFree的使用:开发过程的量化统计工具

上海互联网同行经常能有一些很务实交流,比如:VeryCD博客大巴介绍过Google的免费企业邮箱的注册方法和CDN服务商, 而同客齐集的交流中我向王建硕请教过:微软是如何量化开发人员的工作饱和度,评估开发人员的工作效率并鼓励开发者按时完成任务的?从后来通过对BugFree这套系统的使用交流中了解了一些考核机制在任务跟踪系统中影响这些因素的方法。

如果说GTD是一个人的目标管理,那么任务跟踪系统就是帮助实现团队的目标管理: 而且一件事情同时被多个人跟踪,还是非常有助于减少任务的被跟“丢”几率的,一个任务的角色有任务的创建者(甲方)和任务执行者(乙方)两个角色; 而开发团队一般会有3个角色来进行任务的跟踪,项目的发起者(产品经理),项目的执行者(开发人员),项目的确认(测试人员),而一个任务按照进行中,完成确认,关闭这几个状态,也有发起时间(创建者),解决时间(执行者),完成确认时间(创建者)这几个关键时间点, 利用这几个时间因素结合创建人,创建原因等因素,通过BugFree的查询生成器可以完成很丰富的开发过程指标统计甚至完成一些初步的KPI考核指标统计;

开发人员的工作饱和度
就是简单的任务量累计,按照每个需求的预算时间进行累加,比较开发人员的工作时间;

任务的平均关闭时间
总工作时间 ÷ 关闭的任务数,用于评估开发人员的工作效率;
1 开发人员不要将手边积累过多的任务,从而让大量的任务处于等待状态;
2 开发人员会要求需求人员尽量将任务分解: 不要有超过2天的任务,便于及时的确认进展;
3 开发人员完成任务后主动告知需求人员,尽快确认完成并关闭任务;

项目响应速度
项目无更新时间不得超过一定时间(比如: 24小时) ,就是统计:项目状态不等于关闭, 最后更新时间相比现在大于24小时的任务,每天统计:被发现就要发出警告相应项目的执行者; 即使项目没有完成,也要通过编辑项目向项目的发起者进行反馈,避免任务被长期无响应状态;

为此: 项目的开发者还需要遵循以下规则;
1 跟踪系统本身只是用于备忘和时间的统计,任务完成还是需要同事间直接(最好是面对面的)交流;
2 项目的执行方不能关闭任务,只能由创建者关闭;
3 执行者另外需要其他开发人员帮助的时候,需要开启新的任务作为咨询;
4 任务类型只计算新增需求,旧需求的错误修正,不计算为工作时间;

设计以上的规则的目的是:
开发者:作为任务的执行者在任务启动后应及时的解决并要求创建者关闭任务,开发者会尽可能多和任务的创建者沟通,尽可能在项目进入任务跟踪前将项目的需求细化并在完成后及时提交测试并关闭,从而达到满足工作工作饱和度的同时,减少单项目完成时间指标;
需求人员:细化需求合理估算工时避免返工,因为项目的执行者是不用对项目需求的合理性负责的,按时开发完毕后因为需求设计错误为开发者计入工作时间,让需求的提出者(产品经理)成为项目风险的承担者,从而避免产品经理即无责任也无权利的状态;

此外: 什么指标可以体现开发者除了完成任务本身外还在不断找新方法提高效率呢?

按此阅读全文 "BugFree的使用:开发过程的量化统计工具" »

2008年02月24日

各种社交网站的入口dashboard比较

“找到任何事,沟通所有人”,一直是用户上网最基本的2个需求。找到任何事皆本上是由通用搜索引擎解决了,很多新出现的社交网络都在努力成为“沟通所有人”这样的一个中心。和传统的邮件/IM等服务不同,新出现的很多社交网络服务都越来越像一个开放的订阅中心演变,在这里可以看到你关心的朋友最新消息:谁发起了什么活动;谁推荐了有趣的视频,谁写了blog等等;所以先上邮箱收邮件,后到facebook看看最近有什么通知已经成为了很多美国大学生习惯的一部分;而在这个服务中,首页dashboard是最重要的入口,以下是一些此类服务的首页dashboard截图:
facebook的dashboard: 支持的应用很多,如果联系人都相互认识就能找到每天必看的理由;
2008-02-24_012316.png

spaces.live.com的dashboard: 只有Live系列服务的更新
2008-02-24_011732.png

PLAXO:最近推出了pulse服务,包含群组等服务,plaxo最早是作为邮箱联系人管理服务商出现的;
2008-02-24_013246.png

这些社交网络平台的一些特点:
1 都有基于电子邮箱/IM的导入联系人的功能: 可以充分利用原有在邮箱服务和IM中积累的社交联系,而且传播速度更快;
2 大部分都支持基于RSS/API应用的内容导入入口,这样可以方便的将用户在其他平台上积累的内容导入过来;

a34dbdcad88bffd951d272c49ab730a2 for blogbus

按此阅读全文 "各种社交网站的入口dashboard比较" »

2008年02月19日

PuTTY使用笔记:登录设置的批量备份导出/导入

Putty是最常用的远程登录工具和加密代理访问工具等,管理很多台服务器的时就有很多登录配置,当换机器的时候就成了一个问题。今天系统管理员告诉我了一招,在Windows的命令行下运行:

REG EXPORT HKEY_CURRENT_USER\Software\SimonTatham SESSION.REG

然后在其他机器上导入注册表信息: SESSION.REG即可。

按此阅读全文 "PuTTY使用笔记:登录设置的批量备份导出/导入" »

最近评论

  • 老甘 针对 用sed批量替换文件中的字符 说:

    grep和sed配合
    sed -i "s/Linux/Linuxidc/g" `grep Linux -rl /home/dir`

  • daxue 针对 微软雅黑字体包替换XP的宋体(附下载) 说:

    确实如int_n所说,替换多数系统默认的字体只需在“控制面板/显示/外观/高级”中手动更改,不需要安装,而且这样不会出现有些字显示不出来的问题,是个安全而绿色的方法。

    我主要想说的是,雅黑+Cleartype在XP上表现并不是很完美,原因不明。偶尔可以看到明明同一个大小的字体显示出来的字却有大有小。当然只用雅黑不用Cleartype就更惨,还不如宋体。

    中国字太惨了,到现在连个像样的字体都没有。日文系统上的中文字体都很漂亮,不管字体是大还是小。咱们还是发明中国字的民族。以前有个幼圆还凑合,但是作为桌面字体总觉得有些夸张,好不容易出了个雅黑,问题还是多多,看来道路还是漫长。

  • Nick 针对 利用Header机制隐掉Vary,提高mod_cache缓存的命中率 说:

    我也不是很理解,为什麽我都在httpd.conf里设定好 cache了,但就是不会如这篇文章所说的,会产生cache的目录呢??不知是否可以也把相关的设定值贴出来,参考一下呢??Thanks

  • alex 针对 遭遇Referer Spam 说:

    請問asp asp.net html 要如何防堵呢~謝謝

  • 梦梦 针对 34个好习惯 说:

    谢谢你写了这些我有幸看到了,我想接下来的生活,我有答案了。

  • sis 针对 spoolsv.exe占用cpu 100%的解决方法 说:

    谢谢,这几天一直都在为这个问题困扰,现在终于解决了,太谢谢了。

  • ?? 针对 DOCTYPE! HTML PUBLIC 声明规范: HTML 4.01 / XHTML 1.0 / XHTML 1.1 DTD 说:

    我在项目中添加一个可输入的下拉列表,如果去掉xhml1.0的规范可以显示,但整个页面靠左显示,该怎样解决??望高手帮助

  • WebLeOn 针对 Google Reader的好友推荐分享: Blog内容缓释 说:

    嘿嘿,这样很坏哦。。。。

  • 观心者 针对 微软雅黑字体包替换XP的宋体(附下载) 说:

    我也没办法恢复...

  • 鱼小猫 针对 [咨询] 如何签署网络服务有效性条款SLA 服务监控网站搜集 说:

    目前比较小的网站基本用不起国外的监测服务,价格比较贵。

    国外有名的监测厂商有keynote(www.keynote.com)和gomez(www.gomez.com) 但他们在中国的监测点都比较少。

    国内有基调网络(www.networkbench.com),发展迅速,是新浪 腾讯 人民网等网站的监控服务商。

    如果自己各地有服务器,可以自己写一些脚本,安装到几个服务器上,我目前就是自己写脚本,然后通过飞信免费发短信来监测

Creative Commons(创作共用)授权
此 Blog 中的日记遵循以下授权 Creative Commons(创作共用)授权.
Powered by
Movable Type 3.36