分布式架构的概念

现在的互联网项目是分布式的时代,到底什么是分布式呢,分布式是怎样的结构,又解决了写什么问题呢,这里转载一篇宏观文章:http://www.cnblogs.com/Survivalist/p/8012266.html#3863158

传统项目的架构:(很老了,现在起码都是mvc架构了,服务数据分开)

特点:
  1.all in one(所有模块在一起,技术也不分层),
  2.servlet(jsp)
缺点:
  1.并发量差
  2.容错性差(不具有高可用性)

注:不具有高可用性的意思是,比如当用户访问时,服务器后台因为一些原因导致服务器崩溃,用户就能直接看到错误页面,服务器也因为错误从而停止运行(宕机),这就叫做不具有高可用性。

解决方案:
  1.分层开发(可以提高并发量)
  2.mvc架构
  3.服务器的分离部署
如图是改进结构:


image

集群架构:

image

特点:

1.项目采用多台服务器集群部署

2.mysql数据库采用多台服务器集群部署

优势:

1.并发量提高(1000+)

2.容错性提高(具有高可用性)

注:一般的it公司,基本都是采用集群架构,因为这种架构方式已经基本能满足需求了,但是一些大型项目,这种方式就显然是力不从心了,只能采用分布式的架构方式

但是,通过上图我们发现这种集群部署存在两个问题,

  • session如何共享?
  • 选择哪个作为解释请求的服务器呢?

session如何共享

我们都知道,session是会话,即一个用户访问服务器的时候,就会产生一个session,这个session会一致伴随着这个用户的访问全程,直到用户关闭浏览器结束这次会话,那么问题来了,问,挖掘技术哪家强?咳咳,错了,是如果用户访问服务器时,这台服务器挂掉了(宕机),那么原先保存在这台服务器上的session也肯定挂掉了,那么就会产生一个后果,就是这个用户原本访问好好的,现在突然session没有了,而session没有了就意味着需要用户重新登陆才能进行一些相应操作,这显然是不行的,这样的服务用户体验实在太差了,根本不能满足互联网行业的用户需求,那么这就涉及到一个session共享的问题,即怎么把原有的session从一台服务器转移到另一台服务器上,但是怎么解决呢?有多种方案,常用的两种是:

第一种解决方案:
用Tomcat集群复制(广播模式)来共享session:

这种解决方案是利用Tomcat来进行集群复制,把每个服务器上的session都共享式的都复制一遍,保证每个服务器上都有着一个用户的session数据

应用场景:

在传统项目中一般这么应用,因为传统项目的用户量少,可以承担压力,但当到互联网项目时,这种方式就绝对不可取了,打个比方,比如用户量有100万,那么就需要在每个服务器上都复制这100万个用户的session,这样做显然会极大的消耗系统资源,使系统变得极为臃肿和不稳的,所以在互联网项目里是绝对不会采用这种方式的

缺点:当有大量用户时,服务器的压力会亚历山大,所以只适合用户访问量小的传统项目

第二种解决方案:

用第三方redis服务器来存储session

用这种方式来存储session的话,只需当前正在使用的项目把所有session都放在redis里面,当有其他项目需要使用时,就可以直接从redis中直接获取session,从而解决了这个问题

示例如图:


image

怎么解决选择哪个作为解释请求的服务器呢?

用nginx服务器来分发请求,实现负载均衡。


这种架构的并发量是多少呢?大概是1000+左右,如果服务器更多的话,能达到1000以上,一万以下,但是这能满足互联网的极致要求呢?答案当然是不能了,虽说也可以不断的扩展服务器,但是对于公司的成本和维护成本来说,无疑会达到一个非常高昂的消耗,比如说一台最便宜的服务器的价格大概是3到5万,假如要抵御一万的并发,每台服务器能支持200的并发率,那么需要多少台服务器?50台!这还仅是单击版的,还构建集群呢?比如说构建3台服务器,3*50=150台,服务器构建完了,数据库呢?数据库也需要构建集群呀!这就又是好几百台,这么一算下来大概的费用就是好几百万了,这仅仅是配置的费用,还没有计算维护的成本呢?比如说我们都知道服务器对于机房的要求是非常苛刻的,比如恒温,无尘等等(题外话:阿里之所以把云计算基地定在杭州就是看中了那里气温稳定,适合布置服务器集群)。这样一来又需要布置大型的机房,综合以上所述,虽说集群能后解决部分问题,但并不能解决所有问题,无论是从公司成本还是运营成本来说,显然这种传统的集群架构是不适应现在的互联网行业的,而且对于一般的公司来说也不可能去花大价钱做这种布置。所以,这种情况下我们就必须对我们的架构来进行优化了,那么如何在服务器只有一定数量的情况下,让我们的项目的成本能达到一定控制,并且让我们的项目达到一个最优化的并发的访问量呢?那么就需要对现有的这种架构进行再次拆分,让我们的项目成为面向服务的分布式架构。

面向服务的分布式架构(SOA):

远程框架:


image

如图所示,第一种方式还是有着明显的缺点的,如服务层的网路抖动或是服务层进程繁忙,可能有人对这两个名词不太理解,这里就解释一下:

网络抖动:当有大量用户访问时,可能会出现service层的延迟现象,而web层因为长期得不到响应,则会抛出时间超出异常

进程繁忙:这个的意思和前边的差不多,都是指service层业务太多,顾不上web层的请求,web层的请求就只能一直在那等着,时间长了也就抛出超时异常了

服务治理中间件dubbo

image

原理讲解:看了第一种webservice的方法之后,我们采用了第二种方法,即dubbo这种中间件的方式,采用这种方式有什么好处呢?

好处:
当服务器启动时service会把所有的对象通过dubbo注册给zookeeper,而以后每次需要请求获取对象时,就可以直接从dubbo中异步获取,不需要再去访问service层,这样就解决了服务层网络抖动和服务层进程繁忙的弊端。zeekeeper可以看成是一个数据库,用来存储数据的。

springcloud

这个软件是由外国开发,原理和dubbo差不太大。
Spring Cloud是一个基于Spring Boot实现的微服务架构开放工具。它为微服务架构中设计的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

Spring Boot的优点:自动化配置、快速开发、轻松部署、Spring Cloud
入门请看:https://blog.csdn.net/spark_guo/article/details/79013009

总结

分布式框架的优点:

  1. 大幅提高并发访问量(10000+)
  2. 可以节省成本(因为这种优化仅是从架构方面进行优化,而不需要去配置大量的服务器)
  3. 实现了服务层与表现层的解耦合

注:

  1. 其实还有一种方式,即是提升带宽,把带宽搞多一点,但前提是服务器能承受这么大的量。
  2. 集群也不是越多越好的,越多的话就会发现,其实并发的提升是有限的。

目前还有一种比分布式更火的架构模式,叫做微架构,它是通过服务的原子化拆分,以及微服务的独立打包、部署和升级,可以让小团队的交付周期将缩短,运维成本也将大幅度下降,可以预见,这种架构模式将会越来越受到广大企业的应用与喜爱。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容