2019独角兽企业重金招聘Python工程师标准>>>

一:分层和分割

1:分层 对于分层,我们可能非常熟知了,数据访问层,业务逻辑层,缓存层,应用层,层层专注于自己的业务,然后根据需要建立起 各自的集群,各自分离部署,而从达到系统的扩展性和维护性。

2:分割 如果说前面是横向切割,那分割就是纵向切割,我们可以把网站的整体业务切分成很多的小业务,比如博客园的导航栏,我们都 可以认为是一个独立的网站,配上各自的二级域名,建立各自的集群来实现系统的扩展性,当然这个粒度可大可小。

如果说这些子网站不存在相互调用,那么我们新增模块或者修改模块基本上都不会对其他模块造成影响,这也是我们做扩展性的终极 目标,现在既然都做到解耦了,下面的目标就是做如何通信了,通信可以分为“同步”和“异步”,这篇主要是讨论下异步操作,在分布式 系统中做到"异步操作“,当然少不了强大的消息队列。

二:消息队列

在分布式的系统中使用消息队列后,我们的生产者只管向消息队列中甩完数据后立即返回,而不管是哪个消费者来消费,可以看到

其实消息队列有如下三个优点。

  1. 加快网站的相应速度   这个刚才也说了,应用层直接把消息给消息队列然后直接返回调用端,这样就避免了处理复杂的业务逻辑然后同步的插入到数据 库后再返回造成的响应延迟,在很多网站上用户提交订单就是这么处理的,应用层生成一个订单号之后,将订单丢给消息队列,然后 直接到订单成功页面,此时后端消费者对订单还没有处理完毕,因为后面会有比较多的数据操作,比如减库存,数据库同步等等,而 用户如果想要看到订单详情,需要点击“订单号”才能进入到订单详情页,这种处理也是因为消息队列的非及时性,所以需要得到网站 设计方改进和支持。

  2. 提供系统的可用性 既然是异步操作,就造成了生产者不知道消费者的存在,而反过来消费者不知道生产者的存在,如果消费者挂了就不会影响到生产者, 生产者还会照常无误的向消息队列甩消息,当消费者恢复正常后就会继续消费消息队列,系统的表现可能就是email或者短信延迟收到, 不会对系统造成太大的影响。

  3. 并发削峰 既然是大型网站就免不了高并发的读写操作,很典型的一个例子就是电商中的秒杀,这种高并发的写操作,如果一下子都涌入到数据库 里面去了,会导致数据库的压力非常大,从而导致客户端的访问延迟,就是不挂也容易造成数据库的死锁从而造成很多灵异事件,遇到这 种一拥而入的情况,我们就必须进行线性化操作,在代码层面上我们可以用lock机制来串行化,在分布式中我们用“消息队列”来串行化, 而且还可以通过逻辑操作来对消息队列进行动态的防洪,控洪。

转载于:https://my.oschina.net/7795442/blog/1632888

大型网站架构之系列(4)——分布式中的异步通信相关推荐

  1. 大型网站架构设计系列总结

    大型网站架构设计系列-我的总结如下: 1. 数据结构和产品架构设计,这是基础! 2. 角色分开,各司其职(web服务器,缓存服务器,负载平衡,数据库等) 3. HTML静态化(用缓存服务器也可) 4. ...

  2. 大型网站架构之架构演变

    处于这个互联网开发时代,作为一名软件工程师,我们经常会听到大型网站架构这个字眼,那到底什么是大型网站呢,这样的网站又是一种什么样的架构设计呢?今天我们就开始谈谈大型网站架构设计系列,首先我们今天讲讲大 ...

  3. 搭建“双11”大型网站架构必须掌握的 5 个核心知识

    2019独角兽企业重金招聘Python工程师标准>>> 每年电商双11大促对背后技术人都是一次大考,阿里数据库团队表示.经过9年的发展,双11单日交易额从2009年的0.5亿一路攀升 ...

  4. 大型网站架构系列:缓存在分布式系统中的应用(二)

    缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题.提供高性能的数据快速访问. 本文是缓存在分布式应用第二篇文章,介绍分布式缓存,Memcache,Redis,本地缓存 ...

  5. 大型网站架构系列:电商网站架构案例(2)

    电网网站架构案例系列的第二篇文章.主要讲解网站架构分析,网站架构优化,业务拆分,应用集群架构,多级缓存,分布式Session. 五.网站架构分析 根据以上预估,有几个问题: 需要部署大量的服务器,高峰 ...

  6. 大型网站架构系列:负载均衡详解(4)

    原文:大型网站架构系列:负载均衡详解(4) 本文是负载均衡详解的第四篇,主要介绍了LVS的三种请求转发模式和八种负载均衡算法,以及Haproxy的特点和负载均衡算法.具体参考文章,详见最后的链接. 三 ...

  7. 大型网站架构系列:20本技术书籍推荐

    大型网站架构系列:20本技术书籍推荐 一.大型网站架构系列 第一本:<大型网站技术架构:核心原理与案例分析> 这是本算是国内大型网站架构的经典之作,由阿里人李智慧创作,听名字就知道本书很有 ...

  8. 关于大型网站架构系列:电商网站架构案例(目前最有深意喜欢的文章)

    算法与数据结构C++精解 ThinkPHP5.0+小程序商城构建全栈应用 AngularJS仿拉勾网WebApp开发移动端单页应用 Thinkphp 5.0实战 仿百度糯米开发多商家电商平台 原文出处 ...

  9. 大型网站架构之分布式消息队列

    2019独角兽企业重金招聘Python工程师标准>>> 大型网站架构之分布式消息队列 以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志 ...

最新文章

  1. VS单步调试乘法语句时报错:“没有可用于当前位置的源代码”的原因
  2. 解决windows10系统ssh-add报错的问题
  3. 英语口语 week13 Monday
  4. tinyxml c语言,开源TinyXML 最简单的新手教程
  5. 线段树——操作格子(蓝桥杯试题集)
  6. 异常:Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.log4jdbc.Properties
  7. Hadoop在运行几个T数据量时报堆内存溢出
  8. 李宏毅机器学习——课后作业1
  9. 逻辑回归:详细建模流程与例子代码
  10. 施一公等团队登Science封面:AI与冷冻电镜揭示「原子级」NPC结构,生命科学突破...
  11. react customize-cra 配置less modules
  12. vs2013创建WebService
  13. [源码和文档分享]基于8253、8255芯片汇编实现简易电子琴
  14. 关于重装系统前的准备、备份和重装完后系统优化、使用习惯等说明
  15. Linux上接收广播
  16. 王者荣耀使用什么编程语言开发的?
  17. 学术论文投稿与Rebuttal经验分享
  18. MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
  19. 【毫米波雷达】理解IQ信号调制与解调
  20. DAO 、CUID、CRUD 是什么?

热门文章

  1. JSValidation 1.0b4 发布了!
  2. Spring Boot 2.1.4 发布,提醒全体用户升级 2.1
  3. 设计模式系列之「装饰模式」
  4. 前几天入手一大菠萝,写个初始化教程
  5. contiki makefile框架分析 contiki学习之一
  6. Lync 客户端功能对比之IM功能
  7. XMLHttpRequest异步时的超级链接调用函数问题
  8. 多线程编程进阶——Java类库中的锁
  9. 如何利用wireshark对TCP消息进行分析
  10. WatchStor观察:冰岛身陷困境也不会停止数据中心项目