现代企业为什么使用分布式集群服务器而不是独立的集成服务器

现代企业为什么使用分布式集群服务器而不是独立的集成服务器,第1张

1、分布式集群服务器方便我们的维护和开发,一方面可以解决和改善我们系统的并发问题,另一方面可以解决我们服务器如果出现一定数量的宕机后,系统仍然可以正常运转。
2、独立的集成服务器当面对不断增加的性能需求,虚拟主机显得力不从心,在共享环境中,空间资源和带宽资源都是受到共享用户的使用量限制的。所以现代企业使用分布式集群服务器而不是独立的集成服务器。

1 大型网站系统的特点

2 大型网站架构演化历程

21 初始阶段架构

问题:网站运营初期,访问用户少,一台服务器绰绰有余。

特征:应用程序、数据库、文件等所有的资源都在一台服务器上。

描述:通常服务器 *** 作系统使用 linux,应用程序使用 PHP 开发,然后部署在 Apache 上,数据库使用 Mysql,通俗称为 LAMP。汇集各种免费开源软件以及一台廉价服务器就可以开始系统的发展之路了。

22 应用服务和数据服务分离

问题:越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足,一台服务器已不足以支撑。

特征:应用服务器、数据库服务器、文件服务器分别独立部署。

描述:三台服务器对性能要求各不相同:应用服务器要处理大量业务逻辑,因此需要更快更强大的 CPU;数据库服务器需要快速磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存;文件服务器需要存储大量文件,因此需要更大容量的硬盘。

23 使用缓存改善性能

问题:随着用户逐渐增多,数据库压力太大导致访问延迟。

特征:由于网站访问和财富分配一样遵循二八定律:80% 的业务访问集中在 20% 的数据上。将数据库中访问较集中的少部分数据缓存在内存中,可以减少数据库的访问次数,降低数据库的访问压力。

描述:缓存分为两种:应用服务器上的本地缓存和分布式缓存服务器上的远程缓存,本地缓存访问速度更快,但缓存数据量有限,同时存在与应用程序争用内存的情况。分布式缓存可以采用集群方式,理论上可以做到不受内存容量限制的缓存服务。

24 使用应用服务器集群

问题:使用缓存后,数据库访问压力得到有效缓解。但是单一应用服务器能够处理的请求连接有限,在访问高峰期,成为瓶颈。

特征:多台服务器通过负载均衡同时向外部提供服务,解决单一服务器处理能力和存储空间不足的问题。

描述:使用集群是系统解决高并发、海量数据问题的常用手段。通过向集群中追加资源,提升系统的并发处理能力,使得服务器的负载压力不再成为整个系统的瓶颈。

25 数据库读写分离

问题:网站使用缓存后,使绝大部分数据读 *** 作访问都可以不通过数据库就能完成,但是仍有一部分读 *** 作和全部的写 *** 作需要访问数据库,在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。

特征:目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新同步到一台服务器上。网站利用数据库的主从热备功能,实现数据库读写分离,从而改善数据库负载压力。

描述:应用服务器在写 *** 作的时候,访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库。这样当应用服务器在读 *** 作的时候,访问从数据库获得数据。为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离的对应用透明。

26 反向代理和 CDN 加速

问题:中国网络环境复杂,不同地区的用户访问网站时,速度差别也极大。

特征:采用 CDN 和反向代理加快系统的静态资源访问速度。

描述:CDN 和反向代理的基本原理都是缓存,区别在于 CDN 部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取数据;而反向代理则部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器时反向代理服务器,如果反向代理服务器中缓存着用户请求的资源,就将其直接返回给用户。

27 分布式文件系统和分布式数据库

问题:随着大型网站业务持续增长,数据库经过读写分离,从一台服务器拆分为两台服务器,依然不能满足需求。

特征:数据库采用分布式数据库,文件系统采用分布式文件系统。

描述:分布式数据库是数据库拆分的最后方法,只有在单表数据规模非常庞大的时候才使用。不到不得已时,更常用的数据库拆分手段是业务分库,将不同的业务数据库部署在不同的物理服务器上。

28 使用 NoSQL 和搜索引擎

问题:随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂。

特征:系统引入 NoSQL 数据库及搜索引擎。

描述:NoSQL 数据库及搜索引擎对可伸缩的分布式特性具有更好的支持。应用服务器通过统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。

29 业务拆分

问题:大型网站的业务场景日益复杂,分为多个产品线。

特征:采用分而治之的手段将整个网站业务分成不同的产品线。系统上按照业务进行拆分改造,应用服务器按照业务区分进行分别部署。

描述:应用之间可以通过超链接建立关系,也可以通过消息队列进行数据分发,当然更多的还是通过访问同一个数据存储系统来构成一个关联的完整系统。

纵向拆分:将一个大应用拆分为多个小应用,如果新业务较为独立,那么就直接将其设计部署为一个独立的 Web 应用系统。纵向拆分相对较为简单,通过梳理业务,将较少相关的业务剥离即可。

横向拆分:将复用的业务拆分出来,独立部署为分布式服务,新增业务只需要调用这些分布式服务横向拆分需要识别可复用的业务,设计服务接口,规范服务依赖关系。

210 分布式服务

问题:随着业务越拆越小,存储系统越来越庞大,应用系统整体复杂程度呈指数级上升,部署维护越来越困难。由于所有应用要和所有数据库系统连接,最终导致数据库连接资源不足,拒绝服务。

特征:公共业务提取出来,独立部署。由这些可复用的业务连接数据库,通过分布式服务提供共用业务服务。

3 大型网站架构模式

31 分层

大型网站架构中常采用分层结构,将软件系统分为应用层、服务层、数据层:

分层架构的约束:禁止跨层次的调用(应用层直接调用数据层)及逆向调用(数据层调用服务层,或者服务层调用应用层)。

分层结构内部还可以继续分层,如应用可以再细分为视图层和业务逻辑层;服务层也可以细分为数据接口层和逻辑处理层。

32 分割

将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元。这有助于软件的开发和维护,便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。

33 分布式

大于大型网站,分层和分割的一个主要目的是为了切分后的模块便于分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。

分布式意味可以用更多的机器工作,那么 CPU、内存、存储资源也就更丰富,能够处理的并发访问和数据量就越大,进而能够为更多的用户提供服务。

分布式也引入了一些问题:

常用的分布式方案:

34 集群

集群即多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。

集群需要具备伸缩性和故障转移机制:伸缩性是指可以根据用户访问量向集群添加或减少机器;故障转移是指,当某台机器出现故障时,负载均衡设备或失效转移机制将请求转发到集群中的其他机器上,从而不影响用户使用。

35 缓存

缓存就是将数据存放在距离最近的位置以加快处理速度。缓存是改善软件性能的第一手段。

网站应用中,缓存除了可以加快数据访问速度以外,还可以减轻后端应用和数据存储的负载压力。

常见缓存手段:

使用缓存有两个前提:

36 异步

软件发展的一个重要目标和驱动力是降低软件耦合性。事物之间直接关系越少,彼此影响就越小,也就更容易独立发展。

大型网站架构中,系统解耦的手段除了分层、分割、分布式等,还有一个重要手段——异步。

业务间的消息传递不是同步调用,而是将一个业务 *** 作拆分成多阶段,每个阶段间通过共享数据的方式异步执行进行协作。

异步架构是典型的生产者消费模式,二者不存在直接调用。异步消息队列还有如下特性:

37 冗余

大型网站,出现服务器宕机是必然事件。要保证部分服务器宕机的情况下网站依然可以继续服务,不丢失数据,就需要一定程度的服务器冗余运行,数据冗余备份。这样当某台服务器宕机是,可以将其上的服务和数据访问转移到其他机器上。

访问和负载很小的服务也必须部署 至少两台服务器构成一个集群,目的就是通过冗余实现服务高可用。数据除了定期备份,存档保存,实现 冷备份 外;为了保证在线业务高可用,还需要对数据库进行主从分离,实时同步实现 热备份。

为了抵御地震、海啸等不可抗因素导致的网站完全瘫痪,某些大型网站会对整个数据中心进行备份,全球范围内部署 灾备数据中心。网站程序和数据实时同步到多个灾备数据中心。

38 自动化

大型网站架构的自动化架构设计主要集中在发布运维方面:

39 安全

4 大型网站核心架构要素

架构 的一种通俗说法是:最高层次的规划,难以改变的决定。

41 性能

性能问题无处不在,所以网站性能优化手段也十分繁多:

42 可用性

可用性指部分服务器出现故障时,还能否对用户提供服务

43 伸缩性

衡量伸缩的标准就是是否可以用多台服务器构建集群,是否容易向集群中增删服务器节点。增删服务器节点后是否可以提供和之前无差别的服务。集群中可容纳的总服务器数是否有限制。

44 扩展性

衡量扩展性的标准就是增加新的业务产品时,是否可以实现对现有产品透明无影响,不需要任何改动或很少改动,既有功能就可以上线新产品。主要手段有:事件驱动架构和分布式服务。

45 安全性

安全性保护网站不受恶意攻击,保护网站重要数据不被窃取。

欢迎工作一到五年的Java工程师朋友们加入Java程序员开发: 721575865

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

如果大家了解微服务和分布式服务器架构等技术的话,那么对于如何解决系统运行中出现的BUG造成的破坏和损失这些问题也应该有自己独到的见解吧。今天,电脑培训就一起来了解一下,在服务器运行过程中出现的问题都有哪些解决方法。



随着微服务和分布式云架构的崛起,Web变得日趋复杂,“随机性”的故障因此变得越来越难以预测,而我们对这些系统的依赖却与日俱增。

这些故障给公司造成巨大损失,也给用户带来很大的麻烦,影响他们进行在线购物、交易或打断他们的工作。即使是一些简单的故障也会触及公司的底线,因此,宕机时间就成为很多工程团队的KPI。2017年,有98%的企业表示,一小时的宕机时间将给他们带来超过10万美元的损失。一次服务中断有可能让一个公司损失数百万美元。近,英国航空的CEO透露,2017年5月发生的一次技术故障造成数千名乘客滞留机场,给公司造成8000千万英镑的损失。

企业需要想办法解决这些问题,因为等到下一次事故发生就为时已晚。为此,混沌工程应运而生。

混沌工程旨在将故障扼杀在襁褓之中,也就是在故障造成中断之前将它们识别出来。通过主动制造故障,测试系统在各种压力下的行为,识别并修复故障问题,避免造成严重后果。

混沌工程将预想的事情与实际发生的事情进行对比,通过“有意识地搞破坏”来提升系统的d性。

混沌工程简史

混沌工程先出现在互联网巨头公司中,这些公司拥有大规模的分布式系统,因为这些系统太过复杂,他们需要一些新的手段来测试它们。

2010年

NetflixEngTools团队开发出了ChaosMonkey。当时,Netflix从物理基础设施迁移到AWS上,为了保证AWS实例的故障不会给Netflix的用户体验造成影响,他们开发了这个工具,用来测试系统。

2011年

SimianArmy诞生,在ChaosMonkey的基础上增加了故障注入模式,可以测试更多的故障场景。Netflix认为,云的特点是冗余和容错,但没有哪个组件能够保证100%的可用性,所以他们必须设计出一种云架构,在这种架构里,个体组件的故障不会影响到整个系统。

2012年

Netflix在GitHub上开源了ChaosMonkey,并声称他们“已经找到了应对主要非预期故障的解决方案。通过经常性地制造故障,我们的服务因此变得更有d性。”

2014年

Netflix团队创建了一种新的角色,叫作混沌工程师。BruceWong发明了这个角色,并由DanWoods在Twitter上向广大的工程社区推广。DanWoods解释说,“我从KoltonAndrus那里学到了更多有关混沌工程的知识,他把它叫作故障注入测试”。

2014年10月,当时Gremlin的联合创始人KoltonAndrus还在Netflix,他们在SimianArmy的基础上提出了故障注入测试(FIT)概念,开发者可以更灵活地控制注入故障的“杀伤力范围”。因为SimianArmy有时候会造成非常严重的故障,所以Netflix的开发者对它抱有疑虑,而FIT可以更好地控制故障粒度,于是他们就由此想出了混沌工程这个概念。

测试SOFA接口的方法一般有以下几个步骤:
第一步,根据接口文档或者API文档,了解接口的功能和参数,并确定需要测试的接口。
第二步,使用测试工具或编写测试脚本,模拟请求接口并获取返回结果。
第三步,根据返回结果进行验证,检查接口的功能是否符合预期。如果结果与预期不符,可以查看日志或调试工具来分析问题。
第四步,对接口进行压力测试,模拟多个并发请求或大量请求,以检查接口的性能和稳定性。
在测试SOFA接口时,需要注意以下几个方面:
1测试环境:在测试接口之前,需要先搭建好测试环境,包括SOFA框架、服务端、数据库等。
2数据准备:测试接口需要准备好测试数据,包括输入参数和预期输出结果。
3异常处理:测试接口时需要重点测试异常情况,例如输入参数错误、缺少必要参数、请求超时等情况。
4性能测试:SOFA框架支持高并发和分布式部署,因此在测试时需要进行性能测试,以验证接口的性能和稳定性。
总之,测试SOFA接口需要仔细准备测试环境和测试数据,并进行全面的测试,以保证接口的质量和可靠性。

1、Selenium:该软件是一个用于Web应用程序测试的工具。其测试直接运行在浏览器中,支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite等。支持Net、Java、Perl等不同语言的测试脚本。

2、Soapui:SoapUI是一款开源测试工具,通过soap/>

3、Robot Framework:该软件是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发。

4、QTP:该软件提供符合所有主要应用软件环境的功能测试和回归测试的自动化。采用关键字驱动的理念以简化测试用例的创建和维护。它让用户可以直接录制屏幕上的 *** 作流程,自动生成功能测试或者回归测试用例。

5、Jmeter:JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现;可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。

参考资料来源:百度百科-Selenium

参考资料来源:百度百科-Soapui

参考资料来源:百度百科-Robot Framework

参考资料来源:百度百科-QTP

参考资料来源:百度百科-Jmeter

(一)ArcGIS

ESRI(SystemsResearchInstitute,Inc,美国环境系统研究所公司)是地理信息系统技术提供商。全球有超过30万个分布于政府部门、测绘部门、国防部门、公安部门、石油部门、交通部门,以及电力、航空航天、商业等各个领域的用户单位使用ESRI提供的GIS技术。

ArcGIS是一个完善的地理信息系统。主要包括3个部分。

1桌面GIS产品——ArcGISDesktop

ArcGIS桌面系统是为GIS专业人士提供的信息制作和使用的工具。它可以作为3个独立的软件产品购买,每个产品提供不同层次的功能水平:

ArcReader是一个免费地图浏览器,可以查看或打印用其他ArcGIS桌面产品生成的所有地图和数据格式。还具有简单的浏览和查询功能。

ArcView提供了复杂的制图、数据使用、分析,以及简单的数据编辑和空间处理工具。

ArcEditor除了包括了ArcView中的所有功能之外,还包括了对Shapefile和geodatabase的高级编辑功能。

ArcInfo是一个全功能的旗舰式GIS桌面产品。它扩展了ArcView和ArcEditor的高级空间处理功能,还包括传统的ArcInfoWorkstation应用程序(Arc,ArcPlot,ArcEdit,AML等)。

2服务器产品——服务器GIS

服务器GIS用于多种类型的集中式的GIS计算。基于服务器的GIS技术目前正快速发展、日趋成熟。GIS软件可以被集中地管理在应用服务器和网络服务器上。企业GIS用户可以使用传统的、高级的GIS桌面软件、网络浏览器、定制的应用、移动计算设备及数字设备等连接到中央GIS服务器,获得GIS服务。

ArcGIS提供了3种服务器软件:ArcSDE,ArcIMS和ArcGISServer。

1)ArcSDE是一个先进的空间数据服务器软件。它为任意的客户端应用,例如ArcIMS或ArcGISDesktop,提供了一个在DBMS中存储、管理和使用空间数据的通道。

2)ArcIMS是一个可伸缩的网络地图服务器软件。它被广泛应用于向大量的网络用户发布网络GIS地图、数据和元数据。例如,ArcIMS提供对GIS目录门户的基于浏览器的访问,使用户能够容易地发布和共享地理知识。

3)ArcGISServer是提供给企业和网络应用开发者的一个具有丰富GIS功能的服务器GIS产品。它用来构建分布式的、多层的企业信息系统配置。

3嵌入式GIS产品

在许多情况下,用户不仅需要通过高端的专业GIS桌面或连接到互联网服务器的浏览器访问GIS,还需要通过介于两者之间的一种中间方式访问GIS,如辅助式应用,面向GIS的应用和移动设备等。

这些软件要求简单、有针对性的用户界面。它们通过高级的GIS逻辑执行一些具体的任务。例如,很多组织只需要简单的数据编辑器而不是一个完整功能的桌面GIS。客户化的GIS应用也要具有高度灵活的可定制性。用户界面是为了给不熟悉GIS的用户使用GIS功能。

因此,软件开发者需要有一个可编程的GIS工具包,在构建应用时提供常规的GIS功能。ArcGISEngine提供的工具可以满足这些需求。它提供了嵌入式的GIS组件,能用来在一个组织内建立应用,为用户提供有针对性的GIS功能。ArcGISEngine是为每个用户的特定需求提供有针对性的GIS功能实现的基础。

(二)MapInfo

美国MapInfo公司作为世界标准桌面地图信息系统领导者,实现了地图与数据的完美结合,以数据可视化的方式,提供一种崭新的决策支持方法。

MapInfo是一套强大的基于Windows平台的地图化解决方案。利用MapInfo,商业分析专家和GIS专家可以方便地将数据和地理信息的关系直观展现。围绕桌面地图信息技术,推出系列MapInfo产品线,包括MapInfo基于独立PC和Client/Server体系结构的MapInfo;基于Internet/Intranet体系结构的地图信息系统应用服务器;基于数据库Serve体系结构的实现在服务器端进行空间分析和数据存储的空间数据服务器Spatialware;第一个基于ActiveX技术的地图控件MapX,为用户提供一整套完整的解决方案。

MapInfo不仅实现了电子地图的显示、管理、建立和修改功能,更重要的是实现了在电子地图上的地图对象与关系数据库中的记录的自动连接。通过MapInfo可实现地图与数据库的双向查询,并能使地图上的对象(如建筑物、道路等)与数据库中的相关数据连接,以数据库中的数据来动态改变地图对象的可视属性,自动生成生动易用的专题地图(线路流量负载图、各分支机构营业收入图、机线设备利用率统计图等),以供管理、分析、决策。对数据库的查询结果,可以直接反映在地图上,也可直接在地图上选择对象,以查询相应数据库信息,可为数据库查询结果自动地建立一张结果地图或为地图上的选择结果自动建立数据表,这就为系统的管理、使用提供了极大的方便,尤其适合管理人员进行宏观查询,综合分析。

分布式系统是建立在网络上的软件系统。 处理协助任务,然后整合结果。在分布式系统中,一组独立的计算机向用户呈现一个统一的整体,就像一个系统一样。系统具有多种通用的物理和逻辑资源,可以动态分配任务,分散的物理和逻辑资源可以通过计算机网络实现信息交换。系统中有一个分布式 *** 作系统,以全局方式管理计算机资源。通常,对于用户来说,分布式系统只有一个模型或范例。在 *** 作系统之上,一个软件中间件层负责实现这个模型。分布式系统的一个著名例子是万维网,在万维网中,一切看起来都像一个文档(网页)。在计算机网络中,这种统一性、模型和软件是不存在的。用户看到的是实际的机器,计算机网络并没有让这些机器看起来千篇一律。如果这些机器有不同的硬件或不同的 *** 作系统,那么这些差异对用户来说是完全可见的。如果用户想要在远程机器上运行程序,他必须登录到远程机器上并在该机器上运行程序。分布式系统和计算机网络系统的共同点是大部分分布式系统都是建立在计算机网络上的,所以分布式系统和计算机网络的物理结构基本相同。两者的区别在于分布式 *** 作系统和网络 *** 作系统的设计思想不同,这就决定了它们在结构、工作方式和功能上也是不同的。网络 *** 作系统要求网络用户在使用网络资源时首先了解网络资源。网络用户必须了解网络中每台计算机的功能和配置、软件资源和网络文件结构。如果用户想要读取网络中的共享文件,他们必须知道该文件放在哪个计算机和目录中。分布式 *** 作系统以全局方式管理系统资源,可以随意为用户调度网络资源,调度过程“透明”。当用户提交作业时,分布式 *** 作系统可以根据需要选择系统中最合适的处理器,将用户的作业提交给处理程序,在处理程序完成作业后将结果传递给用户。在这个过程中,用户并没有意识到多个处理器的存在,系统就像一个处理器。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zz/13352273.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-20
下一篇 2023-07-20

发表评论

登录后才能评论

评论列表(0条)

保存