eBay的架构
eBay.com肯定是世界上最大的Java系统之一:
- eBay管理着212,000,000多注册用户、十亿多张图片
- 全世界的eBay用户每秒交易价值超过$1590的商品
- 平均每天浏览10亿多个页面
- 在任何时刻,网站里有大约105百万个清单
- eBay存储了超过2Petabytes的数据
- eBay平台每个月处理30亿个API调用
- 每个季度变化300个以上的功能
- 每两个星期修改100000行以上代码
- eBay在33个国家,7种语言,24*7运行着
- eBay每天执行260亿个SQL
- 达到99.84%的可用性
eBay的架构
eBay,首先它是一个Java系统,基于NT的Websphere应用服务器和solaris的Oracle数据库服务器。
下面这个图可以清晰地说明它的服务驱动网络架构:
下面是应用程序架构图:
下面是架构的一些特征:
数据库方面:
分散数据库负荷:
功能分割:分割数据库到功能区域,如用户主机,帐务主机,事务主机,反馈主机等
功能里再水平分割:通过主访问路径水平分离数据库;不同的用例用不同的模式,写主数据库读备数据库
逻辑化数据库主机:
将分好的数据库主机部署为逻辑数据库
最小化使用数据库资源:
数据库不处理业务逻辑:没有任何存储过程,只有非常简单的触发器
把耗CPU的工作留给应用层:关联的完整性,连接(查询),排序
广泛地使用prepared statement和绑定变量
最小化数据库事务:
没有客户端事务,没有分布式事务
设置事务自动提交
应用服务器方面:
分散应用负荷:
功能分割:把功能分割进不同的应用池,最小化数据库依赖,允许平行开发、部署、监控
功能里再水平负载均衡
最小化依赖:
在应用之间
在应用功能之间
从应用到数据库资源之间
J2EE方面:
扔掉大部分J2EE
让应用层保持无状态
在任何可能的地方缓存数据
采用分层技术:表现层、业务层、集成层(DAO)