消息队列与异步架构||负载均衡架构
这一周我们学习了异步架构和负载均衡架构。
异步调用,链路上每个节点只做自己的事情,不用去等待别人操作完成,非常高效。能让服务器从TPS 150 增长到220左右,大约提升1.5倍。这也是为什么说响应式编程将成为趋势的主要原因。
当前异步调用有多种实现方案,响应式编程框架,dubbo异步调用callback,消息队列等等。其中消息队列当属目前使用最为广泛的实现方案(以后响应式编程可能会更多)。
消息队列中,Kafka以较高的吞吐量备受青睐,但是它属于批量发送消息,所以丢失的概率相对较高,可以用于ELK等丢失容忍度较高的业务场景中。RocketMQ以稳定的性能,消息较高可靠性,被使用于大量的业务功能,并且它支持事务性消息,简化开发流程(不用自己去核对是否一致),提高了可靠性。
想要实现高可用和高性能的架构,集群和负载均衡必不可少。负载均衡实现的方式很多,其中使用比较广泛的有nginx反向代理,DNS负载均衡,LVS负载均衡。这三种负载均衡由于作用于不同的阶段,可以同时使用。
谈到负载均衡,必定有对应的算法,多台服务器,怎么选择呢? springCloud基于轮询,dubbo基于随机,它们都是简单而有效的方法。最少连接数,服务器性能优先等算法虽然更高大上,但是它们的统计和选择也消耗性能,反而不如简单算法实用。
有集群,必然涉及session的同步问题。session同步中,cookie很常用,但是不能保存敏感信息。共享session服务器当属最可靠和兼容性强的方案了。
版权声明: 本文为 InfoQ 作者【独孤魂】的原创文章。
原文链接:【http://xie.infoq.cn/article/60d155dd53f7fc2cef725cc4f】。未经作者许可,禁止转载。
评论