企业级互联网分布式系统应用架构

一、互联网应用架构概览

架构需要解决以下痛点:

用户访问网站的过程:

  1. 互联网缓存服务器 (缓存静态内容,并刷新静态内容)
  2. 负载均衡器 (将用户的访问分发到 Web Server)
  3. Web 服务器(将静态内容返回给缓存服务器或者用户,并将动态内容(如购物车、订单)发送给应用服务器)
  4. 应用服务器
  5. 数据库服务器
  6. 大数据平台(分析用户数据和行为)

二、提高网络访问速度

网络的构成:

解决办法:

三、提高应用响应速度

提高应用响应速度,就必须提高应用并发度,可以使用以下方法:
* 应用层横向扩展
* 使用应用层缓存
* 同步转异步
* 数据库读写分离及提高IO能力

应用层横向扩展

应用层横向扩展应用场景:

现在工业界中,使用的负载均衡开源软件

应用层缓存

在应用服务器和数据库服务器中,加入缓存服务器,如memcached,redis 用在第一次访问热点数据时,以Key-Value 的形式保存到缓存服务器,并设置过期时间,第二次访问热点数据时先从缓存服务器中读取。 当热点数据被修改时,应该将缓存服务器中数据删除。缓存数据一般是更新频率低但读取频率高的数据。

同步转异步

当某个业务逻辑的处理时间较长(几百毫秒),就将这个业务逻辑拆分成同步逻辑和异步逻辑,从而减少应用的响应时间。 例如处理订单的时候,将支付作为同步逻辑,将扣减库存作为异步逻辑。将扣减库存逻辑封装成消息,放入消息队列中。异步处理模块会从消息队列中取出消息,再做相应的处理。这样不仅能减少应用的响应时间,也能降低数据库服务器的压力。

数据库读写分离

数据库的主要操作和相应的SQL:

例如库存表中,update 一条记录时,数据库会加锁,读操作的效率会降低。 应用服务器进行读操作时,从 只读库中读,进行写操作时,向 主库写。从而降低主库的压力,提升应用的处理速度。并且通过只读库能提高应用查询速度。但这种方式,只适应于能接收数据同步时有一定延时的应用。