您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
实战案例——分布式架构演变
 
作者: 编辑小猿
   次浏览      
 2020-6-28 
 
编辑推荐:
本文主要讲解了单应用架构、应用服务器和数据库服务器分离、应用服务器集群、数据库读写分离、使用搜索引擎缓解读库的压力等方面内容。
来自于简书,,由火龙果软件Anna编辑、推荐。

前言

随着计算机系统规模变得越来越大,将所有的业务单元集中部署在一个或若干个大型机上的体系架构,已经越来越不能满足当今计算机系统。同时,随着微型计算机的出现,越来越多廉价的PC机成为了各大企业IT架构的首选,分布式的处理方式越来越受到业界的青睐。本文将介绍分布式架构的发展历史和分布式架构的一些相关概念。

下面以一个简单的电商系统为例,当数据量、访问量提升,观察这个系统可能会发生的结构变化。假如我们系统具备以下功能:用户模块(用户注册和管理),商品模块(商品展示和管理),交易模块(创建交易及支付结算)。

一、单应用架构

网站的初期也可以认为是互联网发展的早起,我们经常会在单机上跑我们所有的程序和软件。把所有软件和应用都部署在一台机器上,这样就完成一个简单系统的搭建,这个时候的讲究的是效率。

二、应用服务器和数据库服务器分离

随着网站的上线,访问量逐步上升,服务器的负载慢慢提高,在服务器还没有超载的时候,我们应该做好规划,提升网站的负载能力。假如代码层面的优化已经没办法继续提高,在不提高单台机器的性能,增加机器是一个比较好的方式,投入产出比非常高。这个阶段增加机器的主要目的是将web 服务器和数据库服务器拆分,这样不仅提高了单机的负载能力,也提高了容灾能力。

三、应用服务器集群

随着访问量的继续增加,单台应用服务器已经无法满足需求。在假设数据库服务器还没有遇到性能问题的时候,我们可以增加应用服务器,通过应用服务器集群将用户请求分流到各个服务器中,从而继续提升负载能力。此时多台应用服务器之间没有直接的交互,他们都是依赖数据库各自对外提供服务。

架构发展到这个阶段,各种问题也会慢慢呈现,比如用户请求由谁来转发到具体的应用服务器,这时候可能会出现下面的架构模型。

四、数据库读写分离

当数据库压力变大时,那么怎么去提高数据库层面的负载呢?有了前面的思路以后,自然会想到增加服务器。但是假如我们单纯的把数据库一分为二,然后对于后续数据库的请求,分别负载到两台数据库服务器上,那么一定会造成数据库不统一的问题。所以我们一般先考虑读写分离的方式。

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

数据库做读库的话,常常对模糊查找效率不是特别好,像电商类的网站,搜索是非常核心的功能,即便是做了读写分离,这个问题也不能有效解决。那么这个时候可以引入搜索引擎,使用搜索引擎能够大大提高我们的查询速度。

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

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

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

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

垂直拆分:把数据库中不同业务数据拆分到不同的数据库。

水平拆分:把同一个表中的数据拆分到两个甚至更多的表中。

八、应用的拆分

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

这样拆分以后,可能会有一些相同的代码,比如用户操作,在商品和交易都需要查询,所以会导致每个系统都会有用户查询访问相关操作。这些相同的操作一定是要抽象出来,可以通过服务化的方式来解决。

九、服务化

服务拆分以后,各个服务之间可以通过RPC 技术进行通信,比较典型的有:webservice、hessian、http、RMI等。

   
次浏览       
相关文章

企业架构、TOGAF与ArchiMate概览
架构师之路-如何做好业务建模?
大型网站电商网站架构案例和技术架构的示例
完整的Archimate视点指南(包括示例)
相关文档

数据中台技术架构方法论与实践
适用ArchiMate、EA 和 iSpace进行企业架构建模
Zachman企业架构框架简介
企业架构让SOA落地
相关课程

云平台与微服务架构设计
中台战略、中台建设与数字商业
亿级用户高并发、高可用系统架构
高可用分布式架构设计与实践
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]
 
最新文章
架构设计-谈谈架构
实现SaaS(软件及服务)架构三大技术挑战
到底什么是数据中台?
响应式架构简介
业务架构、应用架构与云基础架构
最新课程
软件架构设计方法、案例与实践
从大型电商架构演进看互联网高可用架构设计
大型互联网高可用架构设计实践
企业架构师 (TOGAF官方认证)
嵌入式软件架构设计—高级实践
更多...   
成功案例
某新能源电力企业 软件架构设计方法、案例与实践
中航工业某研究所 嵌入式软件开发指南
某轨道交通行业 嵌入式软件高级设计实践
北京 航天科工某子公司 软件测试架构师
北京某领先数字地图 架构师(设计案例)
更多...