系统架构
1.如何解决高并发问题
传统的系统机构一般是 表现层-业务处-持久层-数据库,如下图所示
对于访问量下的系统,没有问题,如果如果访问量大,根本无法支撑。比如如果服务器用tomcat,tomcat支持的最大并发数理论值也就500左右。实际应用中,能到200,300就很不错了。
1.1 如果解决访问量大的问题?
一般采用负载均衡,进行loadbalance,我们常说的nginx反向代理实现负载均衡,其实是作用于代理层到服务层,在实际应用中,一个负载均衡的系统如下所示:
参考文档:http://developer.51cto.com/art/201609/517313.htm
hash算法解释,本质是一个压缩映射,好的hash算法可以减少冲突,并且使结果相对均匀。一个好的hashcode方法通常最好是不相等的对象产生不相等的hash值,理想情况下,hashcode方法应该把集合中不相等的实例均匀分布到所有可能的hash值上面:
1.2 如何处理session,数据共享
分布式环境下,每次请求可能分布到不同到server,如何记录用户到状态?比如用户登录后,点击收件箱,然后再进入发件箱,这个请求被分发到另外到server,而这个server根本没有当前用户到session。所以在分布式环境下解决session共享问题,主要有一下集中策略:
1.粘性session
利用ip hash,同一个用户到请求分发到一个server。可以这么做,但是不建议。
站点层无状态是分布式架构设计的基本原则之一,session最好放到数据层存储
2.session复制(多个tomcat可以配置集群,实现session同步)
每当session变化时,比如新建或者修改,广播给所有的server,进行session同步
3.session集中存储
利用redis集中管理session
4.session持久化到数据库
第三种是我们常用到方法,也是比较简单到
1.3 系统拆分
除了增加服务节点,提供系统处理能力,把系统拆分,因为各个模块到并发程度不同,我们可以分别处理。服务拆分后,业务功能就需要多个service协调完成,这个就是分布式系统。分布式系统和集群到概念不同:
分布式:多个servcie协同完成业务处理,service需要相互通信
集群:同一个工程到部署到多个server
分布式架构的优点:
1.把模块拆分,使用接口通信,降低模块之间的耦合度。
3.增加功能时只需要再增加一个子项目,调用其它系统的接口就可以。
4.可以灵活的进行分布式部署。
有优点就有缺点,缺点如下:
2.各个模块有一些通用的业务逻辑无法共用。
我理解原文作者的系统架构,利用了doubbo的负载均衡功能,否则doubbo不应该处在这个位置。
下面的学习中看作者是否这样设计的。第一篇文章学习结束,明天继续!
相关阅读
在研究用户需求上没有什么捷径可以走,不要以为自己可以想当然地猜测用户习惯产品研发中心最容易犯的一个错误是:研发者往往对自己挖
你手里有5万、50万、500万,创业都不一定成功。现在只有一千块,怎么创业?看看他们都是怎么回答的。彻底否决型来自山东的创业者罗文
短短7天,相互保已经吸引了超过1000万的用户加入,可以肯定的是,相互保的火热绝对会给整个行业带来巨大的改变。那么,本文就和大家一起
世界瞬息万变,有目的的试验比有目的的实践更重要。故事要从爱迪生谈起,绝大多数人都会认为是爱迪生发明了电灯泡。其实,这是一个天大
看起来是打包了一堆权益,其实最值钱的商品是会员自己。如果你是个淘宝剁手党,最近可能在手淘注意到 88 VIP 会员的促销 banner。这