对于一个用户访问量比较大的互联网系统,当用户数达到一定数量时,系统总会存在瓶颈或处理极限,即很难做出快速响应,处理效率逐步低下。对于如何应对用户量不断增长的情形,较直观的方案就是采用分布式系统架构。所谓分布式系统架构,简单的理解就是原来由一台服务器处理的业务,现在分摊给多台服务器处理;原来由一组服务器组处理的业务,现在由多个服务器组处理。
本文多讨论的分布式系统架构是基于如下场景考虑的:整个系统分为Global(全局)和ServerGroup(服务器组),系统中只有一个Global,但有多个ServerGroup。
Global:有对应的数据库和应用程序模块,存储全局性的基础数据及架构配置信息,对系统起全局控制作用,并协调各ServerGroup进行统一业务处理。
ServerGroup:系统根据指定的规则可以划分成若干个ServerGroup,每个ServerGroup负责指定范围内的业务逻辑处理。例如对于即时通讯系统,ServerGroup可能只负责指定账号号段的用户业务处理。每个ServerGroup都有自己的应用程序和数据库,但各ServerGroup的应用程序及数据库结构都是相同的,只是负责处理的业务范围不一样而已。随着业务的发展,ServerGroup的数量会逐步增加的。
在这种情形下,难以避免Global和ServerGroup之间以及ServerGroup和ServerGroup之间的通讯问题,因为Global的有些逻辑可能会访问ServerGroup中数据库的表,而ServerGroup的有些逻辑又需要访问Global或其他ServerGroup中数据库的表。对于这些Global及ServerGroup之间模块通讯方式,大致可采取如下三种方案:
方案一:全部采用Http/TCP等接口进行通讯
从架构图上可以看出:
Global中的模块并不直接访问ServerGroup中的数据库,而是采用通过ServerGroup中提供的“Group接口”进行访问。同样,ServerGroup中的模块也只是通过Global提供的“Global”接口进行方案,而不会直接连接Global中的数据库。
这么做的好处有:
a) 较好体现面向对象和分层的思想,Global和ServerGroup的内部底层处理逻辑对外透明,外界只通过接口进行访问,且接口是从业务级别进行定义的,并不关心内部访问了哪个数据库,操作了哪些表;
b) 有利于Global或Pool的内部后续改造,例如后续Global可能会进行“全局数据库”的切割或划分,由现在的一个库演变成多个库,或者以后会跨机房部署等;
但也有值得顾虑的地方:
a) 通过HTTP/TCP等接口的方式效率是否会较低?安全性和稳定性能否得到保障?
b) 对于特定的模块是否在开发上有一定困难,例如有些ServerGroup中的模块逻辑就适合在存储过程中实现,但存储过程中又需要访问处于Global数据库中的表;
c) 当Global和ServerGroup之间有表级别的数据需要同步时,传输的数据量有点大;
方案二:数据库连接(DBLink)与HTTP/TCP接口相结合
当Global需要访问ServerGroup的逻辑时,仍通过ServerGroup提供的“Group接口”进行访问。但当ServerGroup需要访问Global中的数据时,就直接访问Global数据库。
由于整个系统中只有一个Global,故可以在每个ServerGroup数据库中建立访问Global数据库的连接(DBLink),这样在ServerGroup的模块中就能轻易访问Global数据库的表。
这么做开发上可能会简便一些,而且直接访问数据库可能效率和安全性稳定性上都有所提高。但总有点耦合得偏紧的感觉,可能不利于后续的维护和扩展。
方案三:全部采用直接方案数据库的方式
这是一种完全不采用接口通讯而直接访问数据库的方式。
同方案二,在每个ServerGroup的数据库中会创建对Global数据库的DBLink,ServerGroup中模块对Global数据的访问都直接通过DBLink的方式,和访问本地数据库没太大的差异。
在Global中也会存放各ServerGroup数据库的连接字符串(DB ConnectionString),当Global需要访问ServiceGroup的数据时,根据对应的数据库连接字符串直接连接到ServerGroup数据库进行表操作。
该方案所有通讯都是直接访问数据库的方式,效率可能会有进一步的提升,但耦合性更加紧密了,以后ServerGroup采用的数据库会发生变更怎么办?(由Oracle改为MySql)。
------------------------------------------------
数据量大,我曾经验证过采用分包的传输方式,也就是不是一次性的把数据传输过去,分若干包进行传输。以前采用过WCF 的stream传输方式。
------------------------------------------------
1可以逐级扩展的。就像杨辉三角形的样子。一个group下面可以挂几个更小的group,这个group就成为下级的global。便于扩展也便于管理。
------------------------------------------------
a) 通过HTTP/TCP等接口的方式效率是否会较低?安全性和稳定性能否得到保障?
接口做好容错和必要的失败恢复以及主动报警;
- 大小: 79.6 KB
- 大小: 75.3 KB
- 大小: 81.6 KB
分享到:
相关推荐
1. 分布式PLC控制系统通讯方式:文件介绍了一个关于分布式PLC控制系统通讯方式优化升级的案例,其中涉及到的通讯方式包括DIO分布式控制模式和RIO通讯模式。 2. DIO分布式控制模式:这是一种使用MB+线路完成分站连接...
针对CCM和DDS技术特点提出的分布式系统集成架构,为开发者提供了更加丰富、灵活的设计选择,是当前分布式系统优化集成设计的一种有效模型。 综上所述,CCM和DDS各自拥有在分布式系统构建和集成方面独特的技术优势,...
在多层分布式系统架构设计中,设计者必须充分考虑系统的可伸缩性、可用性、安全性以及可维护性等因素。通过MVC模式下的多层分布式架构,可以有效地应对软件系统日益增长的业务需求和复杂性,构建出高效、稳定且易于...
总的来说,设计高并发服务端分布式系统需要考虑多个层面,包括系统架构、数据存储、计算模型、服务治理、容错机制以及安全性。理解这些核心概念,并结合具体业务场景进行优化,才能构建出高效、稳定、可扩展的分布式...
分布式系统的发展演变可以分为单一应用架构、垂直应用架构和分布式服务架构三个阶段。单一应用架构是网站流量很小时,所有功能都部署到一起,以减少部署节点和成本。垂直应用架构是将应用拆成互不相干的几个应用,以...
2. 网络架构:在分布式系统中,网络架构的设计至关重要,它涉及到组件之间的通讯协议、网络拓扑以及如何确保数据在网络中安全高效地传输。铁路企业的信息系统需要覆盖广泛的地理区域,网络架构的合理设计可以确保...
综上所述,分布式系统监视器设计与实现是一个多方面考虑的工作,它要求设计者具备深入理解分布式系统架构、实时系统特点、系统管理策略等多方面知识,同时还需要具备将复杂系统行为以图形化的方式展示给用户的能力。...
分布式光伏电站数据通讯管理机的设计涉及了多个IT领域的技术要点,这包括嵌入式系统设计、网络通讯、实时操作系统Linux的应用、以及光伏电站的远程监控和数据分析。本文将详细介绍这些方面的知识内容。 1. 嵌入式...
基于分布式数据采集模块和组态软件的监测系统能够实现对热压机工作状态的实时监控,并对可能出现的问题进行及时报警,从而提高生产效率和产品质量。 4. 实时监控与数据通讯(Real-time Monitoring and Data ...
【分布式架构Dubbo+Zookeeper实现】涉及到的关键技术主要包括分布式系统的基础理论、Dubbo的核心概念以及Zookeeper的安装和配置。下面将详细阐述这些知识点。 首先,分布式系统是现代大型互联网应用的基础,它是由...
1. 分布式系统基础:理解分布式系统的架构、通信方式和一致性模型。 2. Qt库:熟悉Qt的类库,包括网络模块、GUI组件以及信号槽机制。 3. C++编程:具备扎实的C++基础,能够编写和调试面向对象的代码。 4. 网络编程:...
2. **系统架构**:描述分布式系统的概念,如何通过多台设备协同工作来防止通信掉队,可能包括网络拓扑结构和数据传输路径。 3. **装置设计**:详细说明无线通讯装置的硬件构成,如天线设计、信号处理单元、电源管理...
智能停车场分布式系统采用分布式架构,通过局域网(Ethernet)实现数据信息的共享和监督管理。该系统主要由以下几个部分组成: - **计算机**:作为系统的中心控制单元,负责数据处理、系统管理等任务。 - **SPASS...
传统的设计方法往往导致非标准部件多、劳动强度大、设计周期长和成本增加等问题,而分布式系统则能够有效地解决这些问题。针对大容量电力电子变换装置的需求,尤其是海军装备向电力推进和高能脉冲武器系统等电气化...
集中式系统适合于测点数量较少、仪器布置集中的情况,而分布式系统则适用于大型工程,其可以根据仪器的分布位置灵活布置,处理大量且分散的测点。混合式系统则是两者的结合体,适用于仪器相对集中但又需要远程监测的...
在大型系统中应用中,一个架构设计较好的应用系统,其总体功能肯定是由很多个功能模块所组成的,而每一个功能模块所需要的数据对应到数据库中就是一个或多个表。而在架构设计中,各个功能模块相互之间的交互点越统一...
本文提出了一种名为“单根总线等级分布式串行中断”(Single Bus Level Distributed Serial Interrupt, SBLDSI)的多机通讯系统设计方案,旨在解决这一问题。 #### 技术背景与需求分析 - **技术背景**:随着单片机...
在医院呼叫通讯系统中,分布式系统可以用来处理病人的呼叫请求,以及在医护人员和病人之间进行有效沟通。 分布式开发是指开发分布式系统的软件和硬件的过程。这通常涉及到不同的技术栈和编程语言,比如内容中提到的...
本文从分布式运动控制系统的设计出发,详细探讨了其硬件架构、软件架构以及实现的关键技术。其中硬件设计的核心采用的是TI公司的DSP28335芯片,而软件设计则依托于MATLAB嵌入式目标模块的图形化设计。 硬件架构方面...
为应对这些挑战,证券交易系统架构演化出分布式架构、单体架构、分布式层级架构、可扩展性、微服务和可编排复用等技术。分布式架构通过多主机并行撮合,支持大规模并发处理;单体架构则统一在一个系统中处理所有业务...