一、什么是分布式架构;与集群的区别
分布式:一个整体业务拆分成多个子业务,部署在不同的服务器上。
集群:多个服务器部署相同的能够处理整体业务的系统。
例如:
如果一个整体业务由10个子业务组成,每个子业务单独执行需1小时,则在一台服务器上执行该整体任务需10小时。
采用分布式方案:提供10台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个整体业务只需一个小时。(这种工作模式的一个典型代表就是Hadoop的Map/Reduce分布式计算模型);
采用集群方案:同样提供10台服务器,每台服务器都能独立处理这个整体业务。假设有1个整体业务(10个子业务)到达,10个服务器将同时工作,1小后,整体业务(10个子业务)完成,这样,还是1小时内完成一个整体业务。
分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。
二、分布式与集群中的小知识点
分布式:
1. CAP原理:
一致性(Consistency)
可用性(Availability)
分区容忍性(Partition tolerance)
集群:
1. 两大关键特性:
可扩展性/高可用性
2. 两大能力:
负载均衡/错误恢复
3. 两大技术:
集群地址/内部通信
转载:http://www.360doc.com/content/14/0119/22/15109633_346516210.shtml
三、分布式架构的演进
系统架构演化历程-初始阶段架构:应用程序、数据库、文件等所有的资源都在一台服务器上。
系统架构演化历程-应用服务和数据服务分离:应用程序、数据库、文件分别部署在独立的资源上。
系统架构演化历程-使用缓存改善性能:数据库中访问较集中的一小部分数据存储在缓存服务器中,减少数据库的访问次数,降低数据库的访问压力。
系统架构演化历程-使用应用服务器集群:多台服务器通过负载均衡同时向外部提供服务,解决单台服务器处理能力和存储空间上限的问题。
系统架构演化历程-数据库读写分离:多台服务器通过负载均衡同时向外部提供服务,解决单台服务器处理能力和存储空间上限的问题。
系统架构演化历程-反向代理和CDN加速:采用CDN和反向代理加快系统的 访问速度。
系统架构演化历程-分布式文件系统和分布式数据库:数据库采用分布式数据库,文件系统采用分布式文件系统。
系统架构演化历程-使用NoSQL和搜索引擎:系统引入NoSQL数据库及搜索引擎。
系统架构演化历程-业务拆分:系统上按照业务进行拆分改造,应用服务器按照业务区分进行分别部署。---- 纵向拆分/横向拆分
系统架构演化历程-分布式服务:公共的应用模块被提取出来,部署在分布式服务器上供应用服务器调用。
转载:https://www.zhihu.com/question/22764869
四、分布式架构的优缺点
特点:将传统的应用的功能一个个拆分出来,形成各个独立的应用
优点:
1. 降低耦合度,增删一个功能,不会影响其它功能模块;
2. 因为优点1的存在,对于团队来说,可以更好的分配开发任务。
缺点:
1. 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。
2. 当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。
3. 接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?
4. 服务多了,沟通成本也开始上升,调某个服务失败该找谁?服务的参数都有什么约定?
5. 一个服务有多个业务消费者,如何确保服务质量?
6. 随着服务的不停升级,总有些意想不到的事发生,比如cache写错了导致内存溢出,故障不可避免,每次核心服务一挂,影响一大片,人心慌慌,如何控制故障的影响面?服务是否可以功能降级?或者资源劣化?
六、自我理解
分布式架构与微服务结合,使每个分布节点形成集群,增强系统健壮性。