美文网首页
分布式架构--演进过程

分布式架构--演进过程

作者: 獨自去遠方 | 来源:发表于2019-04-26 01:47 被阅读0次

    发展历史

    1. 冯诺依曼体系
      冯诺依曼体系.png
    2. 大型机:主导集中式计算机架构
      缺点:复杂、价格高、单点问题
    3. 分布式架构

    之前系统架构面临的挑战:

    • 升级单机处理能力的性价比越来越低
    • 单机处理能力存在瓶颈
    • 稳定性和可用性这两个指标很难达到

    常见概念

    集群:处理相同业务的主机的组合
    分布式:一个程序或系统,只要运行在不同的机器上
    节点:一个可以独立按照分布式协议完成一组逻辑的程序个体
    副本:在分布式系统中为数据或服务提供的冗余。
    中间件:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。

    架构的发展过程

    一个成熟的大型网站系统架构并不是一开始就设计的非常完美,也不是一开始就具备高性能、高可用、安全性等特性,而是随着用户量的增加、业务功能的扩展逐步完善演变过来的。

    模拟架构演化:
    阶段一 单应用架构
    阶段2 应用服务器和数据库服务器分离
    阶段三 应用服务器集群

    阶段三遇到的问题:

    1. 用户请求由谁来转发到具体的应用服务器
    2. 用户如果每次访问到的服务器不一样,那么如何维护session
    阶段四 数据库读写分离

    数据库做读库的话,尝尝对模糊查找效率不是特别好,像电商类的网站,搜索是非常核心的功能,即便是做了读写分离,这个问题也不能有效解决。那么这个时候就需要引入搜索引擎了
    使用搜索引擎能够大大提高我们的查询速度,但是同时也会带来一些附加的问题,比如维护索引的构建。

    阶段五 使用搜索引擎缓解读库的压力

    随着访问量的持续增加,逐渐出现许多用户访问统一部分内容的情况,对于这些热点数据,没必要每次都从数据库去读取,我们可以使用缓存技术,比如 memcache、redis 来作为我们应用层的缓存;
    另外在某些场景下,比如我们对用户的某些IP的访问频率做限制,那这个放内存中又不合适,放数据库又太麻烦,这个时候可以使用Nosql 的方式比如 mongDB 来代替传统的关系型数据库

    阶段六 引入缓存机制缓解数据库的压力

    我们的网站演进的变化过程,交易、商品、用户的数据都还在同一个数据库中,尽管采取了增加缓存,读写分离的方式,但是随着数据库的压力持续增加,数据库的瓶颈仍然是个最大的问题。因此我
    们可以考虑对数据的垂直拆分和水平拆分

    阶段七 数据库的水平/垂直拆分

    随着业务的发展,业务越来越多,应用的压力越来越大。工程规模也越来越庞大。这个时候就可以考虑讲应用拆分,按照领域模型将系统分成多个子系统

    阶段八 应用的拆分
    这样拆分以后,可能会有一些相同的代码,比如用户操作,在商品和交易都需要查询,所以会导致每个系统都会有用户查询访问相关操作。这些相同的操作一定是要抽象出来,否则就会是一个坑。所以通过走服务化路线的方式来解决
    阶段八-2
    服务拆分之后,各服务之间采用 RPC 技术(比较典型的有:webservice、hessian、http、RMI)进行相互调用,或者将服务的调用委托给服务治理中间件(dubbo) 分布式示意图.png

    相关文章

      网友评论

          本文标题:分布式架构--演进过程

          本文链接:https://www.haomeiwen.com/subject/hmaagqtx.html