冯诺依曼模型
为什么使用分布式系统:
1. 升级单机处理能力的性价比越来低 升级单机处理能力的性价比越来低 升级单机处理能力的性价比越来低
2. 单机处理能力存在瓶颈 单机处理能力存在瓶颈
3. 稳定性和可用这两个指标很难达到 .
架构的发展过程
阶段一,单应用架构
把所有软件和应用都部署在一台机器上,这样就完成一个简单系统的搭建,这个时候的讲究的是效率.
阶段二,应用服务器和数据库服务器分离
阶段三,应用服务器集群
阶段四,数据库压力变大,数据库读写分离
数据库读写分离
阶段五,使用搜索引擎缓解读库的压力
数据库做读库的话,尝尝对模糊查找效率不是特别好,像电商类的网站,搜索是非常核心的功能,即便是做了读写分离,这个问题也不能有效解决。那么这个时候就需要引入搜索引擎了使用搜索引擎能够大大提高我们的查询速度,但是同时也会带来一些附加的问题,比如维护索引的构建。
阶段六,引入缓存机制缓解数据库的压力
对于热点数据,添加缓存支持.比如 memcache、redis,
另外在某些场景下,比如我们对用户的某些IP的访问频率做限制,那这个放内存中又不合适,放数据库又太麻烦,这个时候可以使用Nosql 的方式比如 mongDB 来代替传统的关系型数据库.
阶段七,数据库的水平/垂直拆分
垂直拆分:把数据库中不同业务数据拆分到不同的数据库
水平拆分:把同一个表中的数据拆分到两个甚至跟多的数据库中,水平拆分的原因是某些业务数据量已经达到了单个数据库的瓶颈,这时可以采取讲表拆分到多个数据库中
阶段八,应用的拆分
随着业务的发展,业务越来越多,应用的压力越来越大。工程规模也越来越庞大。这个时候就可以考虑讲应用拆分,按照领域模型讲我们的用户、商品、交易拆分成多个子系统.
服务拆分后, 各服务需要RPC通信:比较典型的有:webservice、hessian、http、RMI等等, 如果通信比较复杂,各service间相互调用, 则考虑引入ESB
ESB(企业服务总线)是SOA的典型实现,各种ESB软件它们的共同特点是:将各个(有访问权限的)系统所提供服务集中在一起(进行管理、控制、协调),请求方只需要访问ESB软件,然后再由ESB软件代其访问指定的服务,最后返回处理结果。ESB的功能特点是代理。
注: 主要资源,图片来自于咕泡学院.