经典分布式系统设计

作者:潘罡 (Van Pan) @ Microsoft

在正式介绍Service Fabric之前,我们认为应该首先介绍分布式系统的经典架构。

理解了分布式系统的演进过程可以极大程度上帮助理解Service Fabric以及Azure服务中所有针对分布式系统的优秀产品。

简单系统模型

在IT时代初期,如果需要自行构建一个系统,需要完成以下工作。

  • 采购服务器
  • 在服务器中安装Web服务器
  • 在服务器中安装数据库
  • 向ISP申请静态IP
  • 向服务器部署静态IP
  • 向服务器中部署网站
  • 向服务器中部署数据库原始数据
  • 向域名供应商购买域名
  • 将域名和静态IP进行绑定
  • 向证书供应商购买证书
  • 向服务器中部署证书
  • 对Web服务器配置证书,监听域名等
  • 网站启动外部服务监听,比如HTTP,HTTPS

经典分布式模型

随着网站访问量逐渐增加,系统压力逐渐上升。

此时根据实际情况不同,会对站点服务器做以下调整。

  • 使用性能更好的服务器,简称垂直升级。该做法已经不是主流做法,除非在无法实现下列解决方案前提下才会考虑。
  • 数据库迁移至单独服务器。
  • 数据库水平升级
    • 数据库主从分离,读写分离。使用单独服务器作为写服务器,其他服务器作为读服务器。成熟数据库都可以配置主从分离。
    • 数据库垂直拆分。将数据库数据不同的表放到不同的服务器。
    • 数据库水平拆分。将数据库表根据特征拆分至不同表。比如2016年数据和2017年数据分表存储。
  • Web服务器垂直拆分,将子系统拆分至单独服务器
  • Web服务器负载均衡,有以下几种做法
    • 动态域名解析

      • 将服务器放置在不同物理地域。比如北京上海两台服务器分别针对华南华北用户。对于同一个域名,华南华北用户解析到的服务器IP不同。
      • 同一台服务器,不同ISP线路优化。有些机房有电信联通双线。网站管理员申请电信联通不同IP,用户在电信联通环境下针对同一个域名解析到不同IP。
      • 同域名多IP负载均衡。即使是同一个ISP,同一个机房的服务器,也可以通过动态域名解析返回多个不同IP。用户的请求会在不同IP间切换,同样达到了负载均衡效果。
    • 网络负载均衡
      • 硬件负载均衡。商业负载均衡服务器,例如F5。从硬件层面将网络连接负载均衡至不同后台Web服务器。
      • 软件负载均衡。现在有大量开源反向代理服务器,例如Nginx。使用该服务可以在前端监听端口,并且将请求分发至后台的不同服务器。

当服务器面临突发的请求压力(可能是被DDos攻击,也可能是因为业务营销活动,比如双十一),客户开始电话轰炸站点卡死不可用,如何快速解决问题?

如果发现是数据库压力过大,应该怎么办?

对数据库进行拆分吗?

这几乎是不可能的,因为数据库的任何改动都会反向影响代码修改。而且拆分数据库需要大量的时间。

比较可行的解决方案,有以下几种。

  • 部署新的读数据库服务器,减少当前数据库服务器承担的并发压力
  • 关闭一部分线上功能,减少数据库整体请求

当然最完美的解决方案,就是数据库设计本身就是针对分布式的。

如果数据库也可以动态扩容,就不会遇到数据库性能瓶颈。

如果发现是Web服务器压力过大,应该怎么办?

最行之有效的方法就是通过网络负载均衡添加服务器。

但这又引入了另一个问题。

  • 通常情况下,Web服务器的性能瓶颈通常都是由某个部件导致的,仅仅针对这个组件,就需要部署一整套Web服务,看起来非常不合理。
  • 因为现在服务器压力很大,所以完全不知道需要部署多少台服务器才够支撑。
  • 每台服务器都需要做相同的部署操作,简陋一点是每台都需要人工操作,高级一些是部署脚本,但是因为新增加了服务器,都需要修改负载均衡配置。

如果有某种解决方案,可以准确定位性能瓶颈组件,并且在服务器自动增加后自动扩展该组件,就可以同时解决自动化以及经济性需求。

在下一节中,我们将会详细介绍在现在的云服务环境中,分布式系统的演进以及系统架构师对于分布式系统更深的理解。

在掌握了云时代分布式系统的最新概念后,才能理解Service Fabric中所有抽象概念以及使用场景。

时间: 2024-11-10 08:23:10

经典分布式系统设计的相关文章

分布式系统设计系列 -- 基本原理及高可用策略

转自:http://blog.csdn.net/gugemichael/article/details/36688043 ==> 分布式系统中的概念==> 分布式系统与单节点的不同==> 分布式系统特性==> 分布式系统设计策略==> 分布式系统设计实践 [分布式系统中的概念] 三元组 其实,分布式系统说白了,就是很多机器组成的集群,靠彼此之间的网络通信,担当的角色可能不同,共同完成同一个事情的系统.如果按"实体"来划分的话,就是如下这几种:       

Hadoop2经典分布式部署模式

Hadoop2经典分布式部署模式 基于QJN的HA模式的分布式部署,不含Federation模块的实践是一个经典的Hadoop2的高可用的分布式部署模式. 1.准备测试环境 准备4台PC服务器做Hadoop2部署 ip hostname namenode fc datanode rm nodemanage QJN 10.71.84.237 hadoop201 Y Y Y Y Y Y 10.71.84.223 hadoop202 Y Y Y Y Y Y 10.71.84.222 hadoop203

分布式系统设计系列 -- 概要

在现在的"大数据"."云平台"这些前沿技术的背景下,衍生了很多平台型技术点,Nosql.Hadoop.Storm等层出不穷.这些华丽的技术后面其实处处都离不开"分布式"这个虽然提出了很久,但是大数据.云计算带火了的技术.以致于开个玩笑说,如果不懂一些"分布式"下的技术和原理的,会有点不好意思说自己是后端开发 -- (玩笑而已!! ^_^). 本人从事分布式系统相关设计.开发也有一段时间了,在做很多系统的设计.架构时,惯性的会多

分布式系统设计权衡之CAP

写在最前: 1.为什么学习并记录分布式设计理念一系列相关的东西 在日常工作中系统设计评审的时候,经常会有一些同事抛出一些概念,高可用性,一致性等等字眼,他们用这些最基本的概念去反驳系统最初的设计,但是很多人理解的可用性,一致性等等问题,都是自己拍脑袋想的,或者根本和最原始表达的意思就不是一个东西,在这种情况下PK,就像不再一个频段的人在交流,除了争论,没有任何实质性的进展,所以有必要熟悉其理论基础,以免贻笑大方.(其实类似的例子还有很多,国内的技术人员都喜欢把一些此词模糊化,混淆而谈.例如XX云

分布式系统设计系列 -- 总结

在今天的"大数据"."云平台"背景下,这些尖端技术,从一个非常多平台技术派生点,Nosql.Hadoop.Storm和其他新兴.技术落后,这些华丽是分不开的,其实无处不在"分散式"虽然这做了一个很长的时间,但是大数据.云计算技术与火.玩笑说.假设不懂一些"分布式"下的技术和原理的,会有点不好意思说自己是后端开发 -- (玩笑而已!! ^_^). 本人从事分布式系统相关设计.开发也有一段时间了,在做非常多系统的设计.架构时,惯性

[转载]浅析海量用户的分布式系统设计

我们常常会听说,某个互联网应用的服务器端系统多么牛逼,比如QQ拉.微信拉.淘宝拉.那么,一个互联网应用的服务器端系统,到底牛逼在什么地方?为什么海量的用户访问,会让一个服务器端系统变得更复杂?本文就是想从最基本的地方开始,探寻服务器端系统技术的基础概念. 承载量是分布式系统存在的原因 当一个互联网业务获得大众欢迎的时候,最显著碰到的技术问题,就是服务器非常繁忙.当每天有1000万个用户访问你的网站时,无论你使用什么样的服务器硬件,都不可能只用一台机器就承载的了.因此,在互联网程序员解决服务器端问

浅析海量用户的分布式系统设计

我们常常会听说,某个互联网应用的服务器端系统多么牛逼,比如QQ拉.微信拉.淘宝拉.那么,一个互联网应用的服务器端系统,到底牛逼在什么地方?为什么海量的用户访问,会让一个服务器端系统变得更复杂?本文就是想从最基本的地方开始,探寻服务器端系统技术的基础概念. 承载量是分布式系统存在的原因 当一个互联网业务获得大众欢迎的时候,最显著碰到的技术问题,就是服务器非常繁忙.当每天有1000万个用户访问你的网站时,无论你使用什么样的服务器硬件,都不可能只用一台机器就承载的了.因此,在互联网程序员解决服务器端问

分布式系统设计

一.分布式系统基础设施简介 1.分布式协作及配置管理系统ZooKeeper 2.分布式缓存系统 分布式缓存主要用于高并发环境下,减轻数据库的压力,提高系统的响应速度和并发吞吐.当大量的读.写请求涌向数据库时,磁盘的处理速度与内存显然不在 一个量级,因此,在数据库之前加一层缓存,能够显著提高系统的响应速度,并降低数据库的压力. 3.持久化存储      常见的分布式系统存储解决方案,包括MySQL的分布式扩展.HBase的API及使用场景.Redis的使用等. 4.分布式消息系统      在分布

架构新说之响应式微服务架构-分布式系统设计原则

O'Reilly的电子书<Reactive Microservices Architecture>讲述了微服务/分布式系统的一些设计原则,本文是笔者阅读完此书后的理解. 微服务相比传统的单体应用能够带来快速的响应,以小的系统产生大的影响.而随着网络加速.磁盘成本降低.RAM成本降低.多核技术的发展.云架构技术的爆发,微服务不再受这些客观条件的限制,已经开始大规模的应用. 与SOA架构,微服务和它都具有相同的初衷:解耦.隔离.组合.集成.分散以及自主,但是SOA经常被误解和误用,尤其是使用ESB