讲师:李智慧
发邮件时序图:同步调用,每个调用都会阻塞等待。 同步调用:线程前后执行,都要一步一步同步等待结果。
异步调用:写入消息队列里面,就直接返回。1毫秒就可以返回,比同步调用快了1,000倍以上。
重要角色:
消息生产者消息队列消息消费者支付、订单等需要消息队列,提升的是写操作的性能,特别是双十一这种大促的时候感受等待的时间比较长。
缓存提升的是读的性能,消息队列提升的是写的性能。
比如服务器的处理能力为100TPS,100并发;当来了200TPS,200并发的时候,消息队列还是按照100TPS,100并发来处理。
因为发布者不直接依赖消费者,所以消息系统可以将消费者系统错误与生产者系统组件隔离。
生产者和消费者互相不受双方失败影响。
这意味着任意时刻,我们都可以对后端服务器执行维护和发布操作。我们可以重启、添加或删除服务器,而不影响生产者可用性,这样简化了部署和服务器管理的难度。
负载均衡就是把请求分发到服务器上。
负载均衡服务器配置的应用服务器为内网ip地址。这样能保护内网服务器的安全。
重定向服务10来行代码,就能实现。
缺点:
两次http请求,性能差。暴露了应用服务器的公网ip,安全性很差。一般不会采用HTTP 重定向负载均衡。
这里用了2级负载均衡服务器。DNS,和DNS返回的ip地址都是负载均衡服务器。
小型应用会用,通常10几台应用服务器的时候会用。多了以后就不够用了。为什么呢?
因为反向代理服务器转发的是http请求,http请求每次通信的时间比较慢,对反向代理服务器的压力比较大。当并发比较高的时候,反向代理服务器就会成为瓶颈。
TCP/IP 的数据包比较小,一般是几K。
客户端发起请求,请求到达负载均衡服务器,负载均衡服务器修改发起的ip为自己,目标地址为应用服务器。应用服务器处理请求后返回给负载均衡服务器,负载均衡服务器修改发起的ip为客户端,目标地址为负载均衡服务器,返回给客户端。缺点: 请求和响应的压力都在负载均衡服务器。负载均衡服务器,网卡的出口网络带宽会不够用。
LVS 数据链路层负载均衡是张文冲,现任 滴滴的首席科学家发明的。
应用服务器的高可用架构设计主要基于服务无状态这一特性,但是事实上,业务总是由状态的,在交易类的电子商务网站,需要有购物车记录用户的购买信息,用户每次国脉请求都是向购物车种增加商品;在社交类网站中,记录用户的当前登录状态、最新发布的消息以便及时将这些信息通知他的好友。Web应用中将这些状态信息称作会话(Session),单机情况下,Session可交给Web容器管理,在使用负载均衡的集群环境中,Session 管理主要有以下几种手段。
这种方案是已经淘汰的。每台服务器都同步session,http请求很重。做集群本来就是为了分担负载均衡,但是session复制又加重了服务器的压力。计算稍微大一点,就会被session拖垮了。
相同的IP地址,总是到达相同的服务器。Session绑定,IP地址Hash值的作为Key去模服务器。
Session绑定是不好的,也已经被淘汰了。为什么? 业务的快速发展、快速迭代,7 x 24 小时运转,没法支持快速发布版本。发布版本的流程为,关闭应用服务器,发布新应用,重启服务器。如果关闭应用服务器,session就丢失了,导致用户处理失败,用户就丢失了。
缺点:每次请求响应,都要维护session,如果浏览器禁用cookie,那么就用不了了。
在Web的时代,这种方案还是比较流行的,生命力强很多。
主服务器修改表,更新表数据操作会记录到Binlog里面,Binlog会启动一个客户端线程,把更新的数据同步到从服务器的Relay Log里面。
更改字段的流程:
增加字段的时候,数据库表结构要先加字段,应用服务器更新再上线。删除字段的时候,所有应用服务器先取出该字段,数据库表结构才能删掉该字段。客户端线程更新数据,更新数据,追加到binlog,主服务器启动客户端线程,主服务器A从
MySQL支持的记录量级是千万级的,千万不能增加过亿的数据。
注意:以上信息如有侵权,请联系笔者删除。谢谢。
