大型网站架构之系列(4)——分布式中的异步通信
2019独角兽企业重金招聘Python工程师标准>>>
一:分层和分割
1:分层 对于分层,我们可能非常熟知了,数据访问层,业务逻辑层,缓存层,应用层,层层专注于自己的业务,然后根据需要建立起 各自的集群,各自分离部署,而从达到系统的扩展性和维护性。
2:分割 如果说前面是横向切割,那分割就是纵向切割,我们可以把网站的整体业务切分成很多的小业务,比如博客园的导航栏,我们都 可以认为是一个独立的网站,配上各自的二级域名,建立各自的集群来实现系统的扩展性,当然这个粒度可大可小。
如果说这些子网站不存在相互调用,那么我们新增模块或者修改模块基本上都不会对其他模块造成影响,这也是我们做扩展性的终极 目标,现在既然都做到解耦了,下面的目标就是做如何通信了,通信可以分为“同步”和“异步”,这篇主要是讨论下异步操作,在分布式 系统中做到"异步操作“,当然少不了强大的消息队列。
二:消息队列
在分布式的系统中使用消息队列后,我们的生产者只管向消息队列中甩完数据后立即返回,而不管是哪个消费者来消费,可以看到
其实消息队列有如下三个优点。
加快网站的相应速度 这个刚才也说了,应用层直接把消息给消息队列然后直接返回调用端,这样就避免了处理复杂的业务逻辑然后同步的插入到数据 库后再返回造成的响应延迟,在很多网站上用户提交订单就是这么处理的,应用层生成一个订单号之后,将订单丢给消息队列,然后 直接到订单成功页面,此时后端消费者对订单还没有处理完毕,因为后面会有比较多的数据操作,比如减库存,数据库同步等等,而 用户如果想要看到订单详情,需要点击“订单号”才能进入到订单详情页,这种处理也是因为消息队列的非及时性,所以需要得到网站 设计方改进和支持。
提供系统的可用性 既然是异步操作,就造成了生产者不知道消费者的存在,而反过来消费者不知道生产者的存在,如果消费者挂了就不会影响到生产者, 生产者还会照常无误的向消息队列甩消息,当消费者恢复正常后就会继续消费消息队列,系统的表现可能就是email或者短信延迟收到, 不会对系统造成太大的影响。
并发削峰 既然是大型网站就免不了高并发的读写操作,很典型的一个例子就是电商中的秒杀,这种高并发的写操作,如果一下子都涌入到数据库 里面去了,会导致数据库的压力非常大,从而导致客户端的访问延迟,就是不挂也容易造成数据库的死锁从而造成很多灵异事件,遇到这 种一拥而入的情况,我们就必须进行线性化操作,在代码层面上我们可以用lock机制来串行化,在分布式中我们用“消息队列”来串行化, 而且还可以通过逻辑操作来对消息队列进行动态的防洪,控洪。
转载于:https://my.oschina.net/7795442/blog/1632888
大型网站架构之系列(4)——分布式中的异步通信相关推荐
- 大型网站架构设计系列总结
大型网站架构设计系列-我的总结如下: 1. 数据结构和产品架构设计,这是基础! 2. 角色分开,各司其职(web服务器,缓存服务器,负载平衡,数据库等) 3. HTML静态化(用缓存服务器也可) 4. ...
- 大型网站架构之架构演变
处于这个互联网开发时代,作为一名软件工程师,我们经常会听到大型网站架构这个字眼,那到底什么是大型网站呢,这样的网站又是一种什么样的架构设计呢?今天我们就开始谈谈大型网站架构设计系列,首先我们今天讲讲大 ...
- 搭建“双11”大型网站架构必须掌握的 5 个核心知识
2019独角兽企业重金招聘Python工程师标准>>> 每年电商双11大促对背后技术人都是一次大考,阿里数据库团队表示.经过9年的发展,双11单日交易额从2009年的0.5亿一路攀升 ...
- 大型网站架构系列:缓存在分布式系统中的应用(二)
缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题.提供高性能的数据快速访问. 本文是缓存在分布式应用第二篇文章,介绍分布式缓存,Memcache,Redis,本地缓存 ...
- 大型网站架构系列:电商网站架构案例(2)
电网网站架构案例系列的第二篇文章.主要讲解网站架构分析,网站架构优化,业务拆分,应用集群架构,多级缓存,分布式Session. 五.网站架构分析 根据以上预估,有几个问题: 需要部署大量的服务器,高峰 ...
- 大型网站架构系列:负载均衡详解(4)
原文:大型网站架构系列:负载均衡详解(4) 本文是负载均衡详解的第四篇,主要介绍了LVS的三种请求转发模式和八种负载均衡算法,以及Haproxy的特点和负载均衡算法.具体参考文章,详见最后的链接. 三 ...
- 大型网站架构系列:20本技术书籍推荐
大型网站架构系列:20本技术书籍推荐 一.大型网站架构系列 第一本:<大型网站技术架构:核心原理与案例分析> 这是本算是国内大型网站架构的经典之作,由阿里人李智慧创作,听名字就知道本书很有 ...
- 关于大型网站架构系列:电商网站架构案例(目前最有深意喜欢的文章)
算法与数据结构C++精解 ThinkPHP5.0+小程序商城构建全栈应用 AngularJS仿拉勾网WebApp开发移动端单页应用 Thinkphp 5.0实战 仿百度糯米开发多商家电商平台 原文出处 ...
- 大型网站架构之分布式消息队列
2019独角兽企业重金招聘Python工程师标准>>> 大型网站架构之分布式消息队列 以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志 ...
最新文章
- VS单步调试乘法语句时报错:“没有可用于当前位置的源代码”的原因
- 解决windows10系统ssh-add报错的问题
- 英语口语 week13 Monday
- tinyxml c语言,开源TinyXML 最简单的新手教程
- 线段树——操作格子(蓝桥杯试题集)
- 异常:Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.log4jdbc.Properties
- Hadoop在运行几个T数据量时报堆内存溢出
- 李宏毅机器学习——课后作业1
- 逻辑回归:详细建模流程与例子代码
- 施一公等团队登Science封面:AI与冷冻电镜揭示「原子级」NPC结构,生命科学突破...
- react customize-cra 配置less modules
- vs2013创建WebService
- [源码和文档分享]基于8253、8255芯片汇编实现简易电子琴
- 关于重装系统前的准备、备份和重装完后系统优化、使用习惯等说明
- Linux上接收广播
- 王者荣耀使用什么编程语言开发的?
- 学术论文投稿与Rebuttal经验分享
- MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
- 【毫米波雷达】理解IQ信号调制与解调
- DAO 、CUID、CRUD 是什么?