设计思想
简单就是美
淘宝开放平台 -- 高性能,分布式的任务调度系统
反模式-
Master - Slave架构,Slave想Master注册,Master不知道Slave的具体信息。
Slave --> Master。这样可以解决rehash,节点动态加入和退出等问题,但会引来其他问题。
业务逻辑的独立线程池ThreadPool,与容器ServletContainer的ThreadPool相隔离,加上流控(负载控制),以保证不会让系统崩溃。
请求异步处理,也就是说请求不是保证在一个线程上运行至结束的,有可能会被不同的线程调度,需要保证request和response的线程安全性。
同时由于改为了事件监听机制处理,会引入额外的复杂度。比如现场的保存/恢复,以及超时的处理(timeout问题是必须而又比较麻烦处理的)。
根据不同的场景如高IO,CPU等,选择不同的优化策略,如磁盘IO换内存。
慢链接不可避免- LazyParser
序列化的性能优化是必须的,Java本身提供的序列化机制性能很差。
流控功能不可少-在超高并发压力的情况下,限制请求数量,保证已经进入系统的用户享受正常的服务质量
MapReduce思想 K - V
穷举所有业务逻辑,转换为有限状态集,以不变应万变。每个任务都是可自我描述的,而不能依赖与其他上下文。
Java编程的几个关键点
1. 内存
参见技术文档
http://blog.youkuaiyun.com/cenwenchu79