架构师速成8.3-可用性之分布式
2015-08-10 08:14
573 查看
分布式算是软件界发展的一个里程碑,它开辟一个新的软件时代,其他的溢美之词我就不再乱说了。
分布式按照我的观点,应该分为有状态和无状态2种:
有状态
分布式数据库
分布式存储
无状态
分布式计算
分布式web系统
当然分布式尽量做成无状态的分布式,但是存储最终因为最终存储的是有状态的数据,所以不得不变的有状态。当然web系统也可以是有状态的,但是最好做成无状态的,因为无状态可扩展性更强,而有状态必须维护和确定状态和机器的对应关系,无谓增加了很多复杂性。例如:
无状态的集群,我随意增加或减少一台机器,对原有机器无任何影响。有状态的,我就需要知道新增或减少的机器,应该分配哪些数据哪些数据。
我们先从简单的无状态分布式系统说起,分布式计算我就不再展开了,针对web系统如何架构为无状态讲解一下其中的关键:
web系统有状态的原因是什么?如果用户都不需要登录,系统本身就是无状态的,所有人的看到都是一致的。但是用户登录之后,你要一直显示这个登录用户的相关数据,导致了系统变为有状态。
如何解决这种有状态呢?如果这种状态可以作为数据每次通信时传递给web系统,那web系统就可以变为无状态。这也是常见的有状态变为无状态系统的解决方案,例如web系统将有状态的数据存储在db。解决方案很简单,就是cookie记录用户id。有人说用户登录之后有好多数据,我cookie存不下,而且有安全问题,那就加一个无状态的cache集群,存储所有的用户数据。cookie的id来了之后就去cache拿一下所需的数据,针对这个有个专业的名词叫做 share nothing architecture,sna架构。
有了无状态的web系统,如果请求量增加,很easy,加机器就可以了。另外有些同学说加的机器怎样感知到,如果有机器宕机,又是如何感知到的,这个是负载均衡干的事情,后面会单独再讲。
在阿里巴巴有一个专门的架构方案来解决web架构的有状态,叫做tbsession。
无状态的讲完了,那再讲讲有状态的分布式,这个可能需要的篇幅比较多了,让我再单开一章吧。
刚才查了一下,果真有人已经提出了有状态和无状态,呵呵,看来还是有人更专业。
分布式按照我的观点,应该分为有状态和无状态2种:
有状态
分布式数据库
分布式存储
无状态
分布式计算
分布式web系统
当然分布式尽量做成无状态的分布式,但是存储最终因为最终存储的是有状态的数据,所以不得不变的有状态。当然web系统也可以是有状态的,但是最好做成无状态的,因为无状态可扩展性更强,而有状态必须维护和确定状态和机器的对应关系,无谓增加了很多复杂性。例如:
无状态的集群,我随意增加或减少一台机器,对原有机器无任何影响。有状态的,我就需要知道新增或减少的机器,应该分配哪些数据哪些数据。
我们先从简单的无状态分布式系统说起,分布式计算我就不再展开了,针对web系统如何架构为无状态讲解一下其中的关键:
web系统有状态的原因是什么?如果用户都不需要登录,系统本身就是无状态的,所有人的看到都是一致的。但是用户登录之后,你要一直显示这个登录用户的相关数据,导致了系统变为有状态。
如何解决这种有状态呢?如果这种状态可以作为数据每次通信时传递给web系统,那web系统就可以变为无状态。这也是常见的有状态变为无状态系统的解决方案,例如web系统将有状态的数据存储在db。解决方案很简单,就是cookie记录用户id。有人说用户登录之后有好多数据,我cookie存不下,而且有安全问题,那就加一个无状态的cache集群,存储所有的用户数据。cookie的id来了之后就去cache拿一下所需的数据,针对这个有个专业的名词叫做 share nothing architecture,sna架构。
有了无状态的web系统,如果请求量增加,很easy,加机器就可以了。另外有些同学说加的机器怎样感知到,如果有机器宕机,又是如何感知到的,这个是负载均衡干的事情,后面会单独再讲。
在阿里巴巴有一个专门的架构方案来解决web架构的有状态,叫做tbsession。
无状态的讲完了,那再讲讲有状态的分布式,这个可能需要的篇幅比较多了,让我再单开一章吧。
刚才查了一下,果真有人已经提出了有状态和无状态,呵呵,看来还是有人更专业。
相关文章推荐
- rails 网站字体
- Chromium多进程架构简要介绍和学习计划
- 如何在防火墙或路由器中禁止访问一些公司不相关网站
- 网站和短信设备相结合如何办到
- 1.1 iOS概述和架构
- java处理高并发高负载的网站的优化方法
- 企业形象网站-------------flash全站系统
- Angular JS + Express JS入门搭建网站
- 基于nio架构的可高扩展的服务器(Architecture of a highly scalable NIO-based server)
- Android的架构和特性
- Iphone CPU 架构类型
- 网站注册图形验证码
- 架构师首先是开发人员
- Rabbitmq集群高可用测试
- LAMP网站平台的构建和PHP应用部署
- 架构师要以自己的编程能为依托
- 有用的专业网站
- 在建设未来网站
- 通过KUDU获取Azure网站的日志
- x86架构和arm架构处理器分析