参加了在清华科技园召开的QCon北京大会,认识了一些业界牛人,收获不少:
1) Spring(Rod Johnson)
a) 传统的应用服务器模式已死,不能适应未来的需求
- i. EJB is too heavy
- ii. JBoss 也面临着一些问题
- iii. Silicon valley is not a lead any more
b) 开源技术更有前景
c) 动态语言开发更快速
- i. Ruby, RoR
- ii. Grail
d) IBM收购Sun对Java的影响,Rod认为不会有特别大的变化,会有一些小的正面影响
- i. Java already open sourced
- ii. Neither Sun or IBM has changed Java World in recent years
e) Dependency injection, portable service abstraction, aop — 3 tools provided by spring framework to play with pojo
f) Spring invests on tomcat, eclipse heavily
g) SpringOne大会(Sun有一个JavaOne大会)会有一个大新闻出来(Hugo: 我猜跟Java云计算有关吧)
h) (Hugo: 注意上面的观点都是围绕Spring来的,有一些Sales的味道)
2) eBay (Randy Shoup) , 5点经验
a) Partition Everything
b) Asynchrony Everywhere
c) Automate Everything
d) Remember Everything Fails
e) Embrace Inconsistency
- i. CAP准则 (Brew, Inktomi)
- ii. 牺牲实时数据一致性(为了满足高有效性和分区容灾)
- iii. 利用Messaging Service
- iv. 利用批处理Settlement Batch
f) 英文版:http://www.infoq.com/articles/ebay-scalability-best-practices
g) 中文版:http://www.infoq.com/cn/articles/ebay-scalability-best-practices
3) Douban (洪宁强)
a) 20M动态请求/天流量,500~600 QPS, 38G memcache, 12台在线的机器, 20来人的团队,5个人的算法团队。
b) DoubanFS (Merkle Tree)
c) DoubanDB (Distributed hash, memcached protocol, TokyoCabinet)
d) Mysql – Raid 0, Dual Master, partitioning, sphinx, Xapian 全文检索
e) Memcached – Client Library优化
f) Both used consistent hash防止节点变化而影响数据迁移
g) 图片服务器—Distributed file system, based on DoubanDB now. each node has 256 DB file
h) 新上线节点先根据分配的hash范围复制数据
i) 服务器:Lighttpd, nigix, LVS,类似fastcgi单更简化了的通信机制(scgi),通过proxy方式对应用服务器负载均衡+出错兼容
4) 有道的监控和日志 (邓毅)
a) 简单通用的日志收集框架
b) 集中式的日志收集,通过UDP发送 (豆瓣用的是message service: Spread, RabbitMQ方式)
c) 类似的map reduce并行处理日志计算,汇总当天.
d) 访问控制
- i. 类似ydod
- ii. 正则表达式规则,后台可配置然后推送
- iii. 自动发现机器访问的IP,推送到前端
1. Duration, threshold(比如:一小时内超过1000次访问)
5) 优酷(邱丹)
a) LAMP架构
- i. 强调框架的简单
1. 容易上手
- ii. 强调底层系统的优化
1. 用SSD硬盘跑Mysql提供随机访问性能
b) 大文件下载的优化,Sendfile() 直接到网卡, 不需要做cache;
c) 防止Traffic wave (当memcache失效时候,全部流量hit到mysql会撑不住)造成网站很难恢复起来(Hugo: 其实可以用防止DDOS的方法);
d) Local local local,尽量减少数据copy,让数据靠近CPU;
e) Epoll is fast, Libevent封装了epoll/kqueue (Hugo: JDK6的New I/O在Linux上也支持epoll)
f) 优化Memcached的连接,使用长连接:Apache->unix domain socket->local memcached agent-> persistent connection -> remote memcached (Hugo: PHP, Java的client library可以直接支持长连接支持,当然unix domain socket比socket更快)
g) 数据库分区
My name is Hugo Zhu.




优酷那段:
c) 防止Traffic wave (当memcache失效时候,全部流量hit到mysql会撑不住)造成网站很难恢复起来(Hugo: 其实可以用防止DDOS的方法);
怎么防止DDOS啊