分布式系统的演进和架构ppt课件.pptx
《分布式系统的演进和架构ppt课件.pptx》由会员分享,可在线阅读,更多相关《分布式系统的演进和架构ppt课件.pptx(32页珍藏版)》请在三一办公上搜索。
1、分布式系统的演进和架构,背景,随着社会的发展,技术的进步,以前的大型机架构由于高成本、难维护等原因渐渐地变得不再那么主流了,取而代之的是分布式架构,从大型机到分布式,经历了好几个阶段,我们弄明白各个阶段的架构,才能更好地理解和体会分布式架构的好处。 成熟的大型网站的系统架构并非从开始就能设计的非常完美,也并非一开始就具备高性能、高并发、高可用、安全性等特性,而是随着用户量的增加、业务功能的扩展逐步演变过来,慢慢的完善的。 针对不同业务特征的系统,各自都会有自己的侧重点,比如淘宝这类的网站,要解决的重点问题是商品搜索、下单、支付等问题; 腾讯类的网站,要解决的是数亿级别用户的实时消息传输;而百度
2、类的公司所要解决的是海量数据的搜索。每一个种类的业务都有自己不同的系统架构,背景,下面我们来简单的模拟一个架构的演变过程。 搭建一个简单的电商系统,从这个系统中看系统的演变过程。注意的是接下来的演示模型, 主要关注的是数据量、访问量提升,网站结构的变化, 而不关注具体业务的功能点。其次,这个过程是为了让大家能更好的了解网站演进过程中的一些问题和应对策略。 假如我们系统具备以下功能:用户模块:用户注册和管理。商品模块:商品展示和管理。交易模块:创建交易及支付结算。,阶段一,这个阶段是网站的初期,也可以认为是互联网发展的早期,系统架构如上图所示。我们经常会在单台服务器上运行我们所有的程序和软件。
3、把所有软件和应用都部署在一台机器上,这样就完成一个简单系统的搭建,在这个阶段的追求的主要是效率。,阶段二:应用服务器和数据库服务器分离,随着网站的上线,访问量逐步上升,服务器的负载慢慢提高,我们应该在服务器还没有超载的时候就做好规划、提升网站的负载能力。假若此时已经没办法在代码层面继续优化提高,那么在单台机器的性能遇到瓶颈的时候,增加机器是一个比较简单好用的方式,投入产出比相当高。这个阶段增加机器的主要目的是将 web 服务器和 数据库服务器拆分开来,这样做的话不仅提高了单机的负载能力,也提高了整个系统的容灾能力。,阶段二:应用服务器和数据库服务器分离,这个阶段的系统架构,应用服务器和数据库服
4、务器完全隔离开来,相互互不影响,大大减少了网站宕机的风险,此阶段我们已经开始关注到应用服务器的管理了。,阶段三:应用服务器集群,这个阶段,随着访问量的继续不断增加,单台应用服务器已经无法满足我们的需求。 假设数据库服务器还没有遇到性能问题,那我们可以通过增加应用服务器的方式来将应用服务器集群化,这样就可以将用户请求分流到各个服务器中,从而达到继续提升系统负载能力的目的。此时各个应用服务器之间没有直接的交互,他们都是依赖数据库各自对外提供服务。,阶段三:应用服务器集群,系统架构发展到这个阶段,各种问题也会接踵而至:用户请求交由谁来转发到具体的应用服务器上(谁来负责负载均衡)用户如果每次访问到的服
5、务器不一样,那么如何维护session,达到session共享的目的。那么此时,系统架构又会变成如下方式,阶段三:应用服务器集群,负载均衡又可以分为软负载和硬负载。软负载我们可以选择Nginx、Apache等,硬负载我们可以选择F5等。而session共享问题我们可以通过配置tomcat的session共享解决。,阶段四:数据库压力变大,数据库读写分离,架构演变到上面的阶段,并不是终点。通过上面的设计,应用层的性能被我们拉上来了, 但数据库的负载也在逐渐增大,那如何去提高数据库层面的性能呢?有了前面的设计思路以后,我们自然也会想到通过增加服务器来提高性能。但假如我们单纯的把数据库一分为二,然后
6、对于数据库的请求,分别负载到两台数据库服务器上,那必定会造成数据库数据不统一的问题。 所以我们一般先考虑将数据库读写分离。,阶段四:数据库压力变大,数据库读写分离,这个架构设计的变化会带来如下几个问题:主从数据库之间的数据需要同步(可以使用 mysql 自带的 master-slave 方式实现主从复制 )应用中需要根据业务进行对应数据源的选择( 采用第三方数据库中间件,例如 mycat ),阶段五:使用搜索引擎缓解读库的压力,我们都知道数据库常常对模糊查找效率不是很高,像电商类的网站,搜索是非常核心的功能,即使是做了读写分离,这个问题也不能得到有效解决。那么这个时候我们就需要引入搜索引擎了,
7、使用搜索引擎能够大大提升我们系统的查询速度,但同时也会带来一 些附加的问题,比如维护索引的构建、数据同步到搜索引擎等。,阶段六:引入缓存机制缓解数据库的压力,随着访问量的持续不断增加,逐渐会出现许多用户访问同一内容的情况,那么对于这些热点数据,没必要每次都从数据库重读取,这时我们可以使用到缓存技术,比如 redis、memcache 来作为我们应用层的缓存。另外在某些场景下,如我们对用户的某些 IP 的访问频率做限制, 那这个放内存中就又不合适,放数据库又太麻烦了,那这个时候可以使用 Nosql 的方式比如 mongDB 来代替传统的关系型数据库。,阶段七:数据库的水平/垂直拆分,我们的网站演
8、进的变化过程,交易、商品、用户的数据都还在同一 个数据库中,尽管采取了增加缓存,读写分离的方式,但是随着数据库的压力持续增加,数据库的瓶颈仍然是个最大的问题。因此我 们可以考虑对数据的垂直拆分和水平拆分。垂直拆分:把数据库中不同业务数据拆分到不同的数据库。,阶段七:数据库的水平/垂直拆分,水平拆分:把同一个表中的数据拆分到两个甚至更多的数据库中,水平拆分的原因是某些业务数据量已经达到了单个数据库的瓶颈,这时可以采取将表拆分到多个数据库中。,阶段八:应用的拆分,随着业务的发展,业务量越来越大,应用的压力越来越大。工程规模也越来越庞大。这个时候就可以考虑将应用拆分,按照领域模型将我们的用户、商品、
9、交易拆分成多个子系统。 这样拆分以后,可能会有一些相同的代码,比如用户操作,在商品和交易都需要查询,所以会导致每个系统都会有用户查询访问相关操作。这些相同的操作一定是要抽象出来,否则就是一个大问题。所以可以通过走服务化路线的方式来解决。,阶段八:应用的拆分,那么服务拆分以后,各个服务之间如何进行远程通信呢? 通过 RPC 技术,比较典型的有:dubbo、webservice、hessian、http、RMI 等等。前期通过这些技术能够很好的解决各个服务之间通信问题,但是, 互联网的发展是持续的,所以架构的演变和优化也还在持续。,分布式系统的意义,之所以要发展分布式系统架构,是因为单机系统存在着
10、如下诸多缺点等待被解决:升级单机处理能力的性价比越来越低我们知道单机的处理能力主要依靠 CPU、内存、磁盘。通过升级硬件来这种垂直扩展的方式来提升性能,成本会越来越高。性价比会越来越低。单机处理能力存在瓶颈并且单机处理能力存在瓶颈,CPU、内存、磁盘都会有自己的性能瓶颈, 就算你不惜成本去提升硬件,但是硬件的发展速度和性能也还是有限制的。稳定性和可用性这两个指标很难达到最后就是单机系统存在可用性和稳定性的问题,这两个指标又是我们亟待要去解决的问题。,分布式系统的优势,资源共享。系统中的数据、程序、外设等资源都可由各子系统共享,这也是提高性 能价格比的重要方面,同时也增加了系统的适应性与灵活性。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式 系统 演进 架构 ppt 课件
链接地址:https://www.31ppt.com/p-1316040.html