分布式的概念

来源:互联网 发布:mysql自定义函数 编辑:程序博客网 时间:2024/06/05 17:39

集群

多个服务器同时运行的是同一个工程,同一个服务

分布式

一个系统,拆成n个子工程,每一个子工程配置服务器,独立运作。但是需要相互协作才能运转整个系统流程。每一个节点都可以配置集群。

分布式系统的演化

传统架构

Created with Raphaël 2.1.0https://www.zybuluo.com表现层https://www.zybuluo.com控制层业务层持久层?Endyes

初始的小应用程序,数据库,文件等所有的资源都存放在一台服务器上,称为LAMP;

特征

所有的资源文件(程序,数据库,文件)都在一台服务器上

Description

服务器一般使用的是Linux系统,编程语言用PHP,JAVA等,部署在Apache上,随后各种免费开源软件打包上传到一个简易的服务器随即完成。

应用数据和服务分离

因为在随着系统的访问量增加,一台服务器的Web服务压力会越来越大,这时需要考虑在增加一台服务器。

考虑把数据和应用服务各自部署在独立的资源上

一定程度上的减轻了服务器的压力,一定程度上解决了并发能力和数据存储性能

使用缓存改善性能

把经常使用到的数据存储在一块内存中,减少数据库的访问量

使用缓存功能,系统访问遵循二八定律,把80%的访问量集中在20%的数据中,缓存分为远程分布式缓存和本地缓存,本地缓存速度较快,但是会与PC本身争内存。

服务器集群

一段时间后,系统高并发高访问持续不就系统就变慢了,数据库的压力没问题,Apache服务也没问题,但是发现请求数多了,处理不过来,一台服务器的性能已经不能满足我们的需要了。

增加多台服务器对各个模块进行集群,负载均衡

服务器集群使整个系统解决高并发和海量数据的访问问题,使得单台服务器的性能上不再是问题。

数据库读写分离

虽然解决了系统的高并发问题,但是数据库的读写瓶颈又来了,高并发对需要同时写入和读取大量的数据,都需i要连接数据库和更新数据库,连接资源争夺的很厉害

多台服务器进行负载均衡对 外提供服务,解决单台服务器性能问题和服务能力

服务器集群使整个系统解决高并发和海量数据的访问问题,使得单台服务器的性能上不再是问题。

反向代理和CDN加速

为了应付复杂的网络地域条件,于是采用反向代理技术和CDN加快系统的访问速度,减轻服务器后端的压力。

分布式文件系统

系统运行一段时间后,数据量大量增加,进行分库和分表

数据库使用分布式数据库,文件系统采用分布式文件系统

任何单一服务器都满足不了大量的业务需求,数据库的读写分离也满足不了性能需求,也需要对分布式的数据库和分布式的文件系统,只有非常大的数据量,才对数据库进行业务分离,把不同的业务部署在独立的物理服务器上。

NOsql 和搜索引擎

引入Nosql,随着系统业务数据的复杂度提高,对数据的检索越来越麻烦,需要使用nosql和搜索引擎对数据进行检索。统一数据访问模块访问数据,减轻数据访问的压力。

业务拆分

对业务进行拆分改造 ,把不同的业务部署到独立的服务器。

通常使用分而治之的手段将整个系统业务分成不同的产品线,应用之间通过超链接建立关系,也可以通过消息队列进行数据分发,当然更多的还是通过访问同一个数据存储系统来构成一个关联的完整系统。

纵向拆分:大应用分为多个小应用,如果新应用比较独立,那么拆分为一个独立的Web应用。较为简单,梳理业务,可以剥离不相关的业务。
横向拆分: 把复用的业务拆分出来,新增的业务只需要调用分布式服务即可。复用的业务拆分比较难。需要知道各个业务的接口规范,依赖关系等。

分布式服务

各个独立的模块分开部署,形成独立的系统,有独立的服务器集群进行服务。但是各个模块虽然分开,但需要相互协作,并且是部署在分布式服务器上,供随时调用。但是连接资源是宝贵的,业务越拆越小,那么对数据库的连接也会不满足,导致连接资源短缺,拒绝服务。

关系梳理

这里写图片描述

0 0