分布式
| 简介 |
特征
|
描述
| 备注 |
| 初始化架构 |
初始阶段 的小型系统 应用程序、数据库、文件等所有的资源都在一台服务器上 |
通常服务器操作系统使用linux,应用程序使用PHP开发,然后部署在Apache上,数据库使用Mysql,汇集各种免费开源软件以及一台廉价服务器 |
linux
jdk
tomcat
mysql
|
|
应用服务和数据服务分离 |
应用程序、数据库、文件分别部署在独立的资源上 |
数据量增加,单台服务器性能及存储空间不足,需要将应用和数据分离,并发处理能力和数据存储空间得到了很大改善 |
|
|
缓存 |
数据库中访问较集中的一小部分数据存储在缓存服务器中,减少数据库的访问次数,降低数据库的访问压力 |
系统访问特点遵循二八定律,即80%的业务访问集中在20%的数据上。缓存分为本地缓存和远程分布式缓存,本地缓存访问速度更快但缓存数据量有限,同时存在与应用程序争用内存的情况。 |
|
|
集群 |
多台服务器通过负载均衡同时向外部提供服务,解决单台服务器处理能力和存储空间上限的问题 |
使用集群是系统解决高并发、海量数据问题的常用手段。通过向集群中追加资源,提升系统的并发处理能力,使得服务器的负载压力不再成为整个系统的瓶颈 |
|
|
数据库读写分离 |
数据库写入、更新的这些操作的部分数据库连接的资源竞争非常激烈,导致了系统变慢 |
|
|
|
反向代理和CDN加速 |
采用CDN和反向代理加快系统的 访问速度。 |
为了应付复杂的网络环境和不同地区用户的访问,通过CDN和反向代理加快用户访问的速度,同时减轻后端服务器的负载压力。CDN与反向代理的基本原理都是缓存 |
|
|
分布式文件系统和分布式数据库 |
数据库采用分布式数据库,文件系统采用分布式文件系统 |
分布式数据库是系统数据库拆分的最后方法,只有在单表数据规模非常庞大的时候才使用,更常用的数据库拆分手段是业务分库,将不同的业务数据库部署在不同的物理服务器上。 | 1.物理切分(数据分布到不同的数据库、服务器多台)。数据库内部切分(数据分布到一个数据库不同表中) 2.分库降低了单点机器的负载;分表,提高了数据操作的效率,尤其是Write操作的效率 |
|
使用NoSQL和搜索引擎 |
系统引入NoSQL数据库及搜索引擎 |
随着业务越来越复杂,对数据存储和检索的需求也越来越复杂,系统需要采用一些非关系型数据库如NoSQL和分数据库查询技术如搜索引擎。应用服务器通过统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。 |
|
|
业务拆分 |
系统上按照业务进行拆分改造,应用服务器按照业务区分进行分别部署 |
为了应对日益复杂的业务场景,通常使用分而治之的手段将整个系统业务分成不同的产品线,应用之间通过超链接建立关系,也可以通过消息队列进行数据分发,当然更多的还是通过访问同一个数据存储系统来构成一个关联的完整系统。 | 纵向拆分:将一个大应用拆分为多个小应用,如果新业务较为独立,那么就直接将其设计部署为一个独立的Web应用系统 |
|
分布式服务 |
公共的应用模块被提取出来,部署在分布式服务器上供应用服务器调用。 |
随着业务越拆越小,应用系统整体复杂程度呈指数级上升,由于所有应用要和所有数据库系统连接,最终导致数据库连接资源不足,拒绝服务。 |
|
转载于:https://my.oschina.net/zx133/blog/656090