手记

大型java项目架构演进解析

阶段一:

数据库,文件,服务器部署在一台机器上,俗称all in one.

阶段二:

应用服务器,数据库服务器,性能更好的硬盘三台服务器。

阶段三:

百分之八十的数据访问集中在百分之二十的数据上,二八原则,所以出现了缓存,应用服务器,本地缓存,远程缓存(单机缓存和分布式缓存),文件服务器,数据库服务器。

问题1:

具有哪种业务特点的数据使用本地缓存?

问题2:

具有哪种业务特点的数据使用远程缓存?

问题3:

分布式缓存在扩容时会碰到什么问题,如何解决?

问题4:

分布式算法有哪几种,各有什么优缺点?

阶段4:横向扩展应用服务器

随着访问QBS的增长,服务器的处理能力就会出现瓶颈,所以要做一个服务器的集群,新增负载均衡调度服务器(Load Balance),然后就可以横向扩展服务器了,解决了服务器处理能力的瓶颈。因此出现了下买的架构:

负载均衡服务器+应用服务器集群+分布式缓存集群+文件系统服务器+数据库服务器

问题1:

负载均衡调度策略有哪些,有什么优缺点,分别适合什么场景?

阶段5:数据库读写分离

当用户量达到一定量的时候,数据库又达到了一个瓶颈,使用数据库的读写分离,在主库写,从库读,数据库和应用服务器通过数据访问模型连接,这个模型可以让写应用代码的人感觉不到读写分离的存在。

阶段6:增加CDN和反向代理服务器,提高应用服务器性能

CDN可以解决不同地区访问速度问题,反向代理可以在服务器机房中缓存用户资源。

阶段7:分布式文件服务器集群

问题1:

如何不影响已经部署在线上的文件访问?

阶段8:专库专用

数据库又出现了一个瓶颈,选择专库专用,进行一个数据的垂直拆分,相关的业务分别用自己的库存储。

问题1:

跨业务的事物和跨库的事物如何解决?

阶段9:数据库的水平拆分

单个数据库不能解决某个业务问题了,进行数据库水平拆分,就是将同一个表的数据拆分到两个数据库当中。

 阶段10:搜索引擎(search sever cluster),Nosql server

在架构不断进化的过程中,还要考虑安全性,数据分析,监控,反作弊等一系列问题。

继续发展...SOA架构,服务化,消息队列,任务调度,多机房...









1人推荐
随时随地看视频
慕课网APP