交易网站的架构的一点研究心得
这两天同事正好做数据优化,碰巧遇到高并发数据读取的事情,一起探讨了一下,后来想起来淘宝的经验应该值得学习,找了一下文档,发现确实有学习的地方,下面先转一个人谈的高并发的文章(http://blog.csdn.net/xzknet/article/details/7790491)_,我看了一下也就前两段有可以理解的内容,后面竟是闲谈(可能没有仔细悟吧)。 个人感觉淘宝现在的架构是 反向代理层面: 这个层面应该没有什么有趣的地方,无外乎使用CDN加速一下访问速度,将静态的JS了,图片了缓存一下。硬件产品有F5,Array,软件有Nginx、Apache等吧。 WEB服务器层面 单个WEB服务器为用户提供服务的数量不论如何改造都是有限的,所以需要大量部署集群方能解决用户的高并发问题。但是又不能每次增加一个节点就重启一下全部服务器,那样多麻烦啊。完美的解决之道还在于节点可以随时增加,随时减少,所以程序开发时需要考虑好缓存的集群化部署,这样Web容器不论启动多少个,都是从Cache缓存集群中获取数据。 数据库层面: 卖家要实时数据,买家要高速查询数据,只有在交易时才需要实时的数据。 卖家+买家交易过程===》使用Oracle数据库,进行实时读写(量比较小,这时数据读写的比例比较均衡,需要保证数据的实时性)===》发布商品后(该信息转为读属性为主的资料),将信息使用后台异步的调度程序,将Oracle数据转换为他们自己基于MySQL开发的数据库。 买家===》读取MySQL集群数据库,进行高并发的数据查询。这个MySQL数据库比较有趣,是淘宝自己改造的一个版本,是淘宝使用MySQL改写的一个分支。利用MySQL的集群和分区的特性为集群服务器读取数据,并且为每一个MySQL服务器程序分配大量的内存来加速数据的读取,这样就解决买家高速查询获取数据的要求(感觉更像是一个可以使用SQL语句访问的Cache)。 (淘宝开发的MySQL数据库,貌似又开源出来了,这样又省钱,又可以横向扩展服务器,觉的读取压力大了就买几台服务器,部署上几个MySQL集群,再部署上几套前台应用程序,就基本解决问题了) 数据搜索层面 数据搜索是一个麻烦事情,不过可以考虑使用SOLR解决数据库的搜索,毕竟交易网站随着数据的增加,业务数据会越来越多,前期不考虑,后期用户的一个简单的模糊查询就会把数据库给搞死了。所以还是使用SOLR辅助解决数据库的检索。 以上仅仅是个人对淘宝高并发研究的一点拙见,大家有什么好的看法了多多交流。 呵呵,家里有事了,以后有啥心得了再补这个吧。