分布式开发简介

article/2025/9/16 3:15:31

分布式开发简介

1          概述

分布式应用程序就是指应用程序分布在不同计算机上,通过网络来共同完成一项任务,通常为服务器/客户端模式。更广义上理解“分布”,不只是应用程序,还包括数据库等,分布在不同计算机,完成同一个任务。之所以要把一个应用程序分布在不同的计算机上,主要有两个目的:

1)        分散服务器的压力

大型系统中,模块众多,并发量大,仅用一个服务器承载往往会发生压力过大而导致系统瘫痪的情况。可以在横向和纵向两方面来进行拆分,把这些模块部署到不同的服务器上。这样整个系统的压力就分布到了不同的服务器上。

l        横向:按功能划分。

l        纵向:N层架构,其中的一些层分布到不同的服务器上(分层的概念会在后文进行介绍)。

2)        提供服务,功能重用

使用服务进行功能重用比使用组件进行代码重用更进一层。举例来说,如果在一个系统中的三个模块都需要用到报表功能,一种方法是把报表功能做成一个单独的组件,然后让三个模块都引用这个组件,计算操作由三个模块各自进行;另一种方法是把报表功能做成单独的服务,让这三个模块直接使用这个服务来获取数据,所有的计算操作都在一处进行,很明显后者的方案会比前者好得多。

服务不仅能对内提供还能对外提供,如果其他合作伙伴需要使用我们的报表服务,我们又不想直接把所有的信息都公开给它们。在这种情况下组件方式就不是很合理了,通过公开服务并对服务的使用方做授权和验证,那么我们既能保证合作伙伴能得到他们需要的数据,又能保证核心的数据不公开。

2          架构

分布式的系统架构,主要从以下几个方面来考虑:分层、面向服务以及分布式数据库。

2.1        分层模型

一般地,我们将应用程序功能分为三个方面,对应3层架构模式。它们是数据层、中间层(业务逻辑层)和表示层,如下图所示。

1)        数据层:存储数据以及从数据库中获得较为原始的数据。

2)        业务逻辑层:介于数据层和表示层之间,负责处理来自数据存储或发送给数据存储的数据,把数据转换成符合商务规则的有意义的信息。

3)        表示层:从业务逻辑层获得信息并显示给用户,负责与用户的交互。

 三层架构模式,将业务逻辑和数据存储分离,并分别用独立的服务器来承载,有利于分散系统的压力。其优点具体如下所示:

1)        因为客户机不包含业务逻辑,所以它们变得更加简洁。这就使部署和维护工作更加容易,因为更新业务逻辑只需要对应用服务器进行操作。

2)        客户机与数据库细节相分离。应用服务器能够与几个不同的数据源(分布在不同的数据库服务器上,下文中会对分布式数据库系统进行介绍)协同工作,并且只对客户机提供单一的访问点。

3)        如果设计正确,业务逻辑就能够被分布到几个负载均衡的应用服务器上。如果用户需求增加,则可以添加更多的服务器以满足要求。同时,可以将业务逻辑发布为服务,供客户端应用程序或者其它服务调用,构建成面向服务的系统架构。

2.2        面向服务

一家汽车租赁公司决定创建一个新的应用程序,用于汽车预定。该租车预定应用程序的创建者知道,应用程序所实现的业务逻辑必须能够让公司内外运行的其它软件访问。因此,他们决定以面向服务的方式来创建此应用程序,并通过定义完善的一组服务,将此应用程序的逻辑公开给其他软件。

为了实现这些服务并使之与其他软件进行通信,这一新应用程序将使用 .Net Framework的分布式计算技术,主要有:

1)        ASP.NET Web 服务

它使用Soap交互信息,是跨平台,跨语言的,目前大多数平台都支持基本的 Web 服务,所以在 WCF 发布之前,这是实现跨供应商互操作性的最直接的方法。一般用在B/S结构的系统中,需要IIS进行启动。

下图演示了客户机消费Web服务的情形。客户机可以是一个Web应用程序、另一个Web服务等。
   
  Web服务的消费者调用名为Method()Web服务上的方法。实际调用向下层传播,作为Soap消息通过网络,并向上层传播到Web服务。Web服务执行并响应(如果有的话)。实现Web服务与客户机之间的双向通知或者发布/订阅功能是可能的,但是必须手工完成。客户机可以实现自己的Web服务并在对服务器的调用中传递该Web服务的引用。服务器可以保存引用,然后回调给客户机。

2)        .NET Remoting

专门为紧密耦合的 .NET .NET 通信而设计,它为本地网络中的应用程序提供了无缝而直接的开发体验。一般用在C/S结构的系统中,需要通过一个WinForm或是Windows服务进行启动。

3)        Microsoft 消息队列 (MSMQ)

提供持久稳定的消息传送,这通常是间歇式连接的应用程序的最佳解决方案。这些应用程序对数据传送、工作量分离以及应用程序生存期均要求有保证。

4)        WCF服务

WCF是使用托管代码建立和运行面向服务的应用程序的统一架构,是开发者可以建立一个跨平台(可与在J2EE 服务器构建、非 Windows 系统上运行的应用程序通信)、安全、可信赖、事务性的解决方案,能与目前已有的分布式系统兼容。它是微软分布式应用程序开发的集大成者,整合了.Net 平台下所有和分布式系统有关的技术。

 

以通信范围而言,WCF可以跨进程(同一机器上不同的应用程序之间的通信)、跨子网、企业网(局域网内不同的机器之间的通信)甚至于Internet(互联网中不同的机器之间的通信)。从宿主程序而言,可以是ASP.NETEXE , WPF(Windows Presentation Foundation), Windows Forms, NT Service, COM+.

2.3        分布式数据库系统

分布式数据库系统由分布于多个计算机结点上的若干个数据库系统组成,它提供有效的存取手段来操纵这些结点上的子数据库。分布式数据库在使用上可视为一个完整的数据库,而实际上它是分布在地理分散的各个结点上。分布式数据库系统适合于单位分散的部门,允许各个部门将其常用的数据存储在本地,实施就地存放本地使用,从而提高响应速度,降低通信费用。它有以下优点:

1)        解决组织机构分散而数据需要相互联系的问题。比如银行系统,总行与各分行处于不同的城市或城市中的各个地区,在业务上它们需要处理各自的数据,也需要彼此之间的交换和处理,这就需要分布式的系统。

2)        均衡负载。负载在各处理机间分担,可避免临界瓶颈。

3)        可靠性高。数据分布在不同场地,且存有多个副本,即使个别场地发生故障,不致引起整个系统的瘫痪。

4)        可扩充性好。当需要增加新的相对自主的组织单位时,可在对当前机构影响最小的情况下进行扩充。

5)        提高系统性能系统。可以根据距离选择离用户最近的数据副本进行操作,减少通信代价,改善整个系统的性能。

分布式数据库系统虽然有诸多优点,但它同时也带来了许多新问题。如:数据一致性问题、更新同步以及查询分解等的复杂性、数据远程传递的实现、通信开销的降低等,这使得分布式数据库系统的开发变得较为复杂。

3          总结

分布式应用程序的开发,要对应用程序进行分层,各层之间相互独立,通过服务或接口来进行调用,不仅便于开发的管理,也有利于集成其他平台上的应用程序,实现了功能模块的复用、重用,提高了应用程序的可扩展性。在业务数据量多的情况下,还要考虑构建分布式的数据库系统,这可以通过DBMS自动管理的数据订阅、分发技术实现数据库的数据同步,以达到数据共享的目的;也可以与一些分布式的计算技术结合起来,比如说.NET Remoting技术来解决各数据库之间的通信问题,等等。

针对大型的网站应用,分布式部署策略可以从以下几个方面考虑:

1)        代理服务器实现请求的分离 

2)        缓存的分布式部署,提高系统性能。

3)        拆分网站的对外功能,例如不同域名前、后缀,URL 重写。

4)        面向服务,每个服务分布到一台服务器上

5)        数据库的分布式集群部署。

6)        设立专门的应用服务器。比如发送邮件通知的服务。

 

 

 

 


http://chatgpt.dhexx.cn/article/h96pREp0.shtml

相关文章

java分布式学习

首先推荐4本书 大型分布式网站架构设计与实践 http://item.jd.com/11529266.html 大型网站技术架构:核心原理与案例分析 http://item.jd.com/11322972.html 大型网站系统与Java中间件实践 http://item.jd.com/11449803.html 分布式Java应用:基础与实践 h…

耗时十年!精心整理的Java高级开发需要的分布式技术

前言 分布式、微服务几乎是现在的技术人员必须要了解的架构方向,从理论上来讲确实解耦了很多结构,但另一方面,又会带来更多衍生的复杂度及难点。 如何保证事物的最终一致性?如何进行性能及容量预估?如何处理分布式系统…

Java分布式开发

分布式概念的引入是基于性能的提升,应用的可靠性而提出的。所谓Java分布式,即是在使用Java语言进行企业级应用开发的过程中,采用分布式技术解决业务逻辑的高并发、高可用性的一些架构设计方案。 1. RPC技术介绍 我们知道Web Servie实现了服务…

足球赛事实时大小球数据worldliveball软件搭建

worldliveball软件 worldliveball开发思路功能脑图合理的展示足球赛事如何快捷的判断赛事wordliveball下载地址与软件图片代码宏定义运用了哪些技术worldliveball流程图 worldliveball 整个足球赛事AI worldliveball 开发思路及过程。如果你想学习如何使用worldliveball, 可以…

足球走地大小球预测-分析软件开发及逻辑

足球大小球分析之大球 相比小球,热爱大球玩法的更多。走地大小球,预测进球数简单明了。无论比赛双方哪一方进球,对于您而言,都是欢喜的。只要进球数量达到了,您就妥妥的了。 走地大球玩法之挑赛事 那么有些赛事疯狂进…

足球走地大小球预测之理性分析软件开发及逻辑

足球走地大小球 前言一、足球大小球分析之小球二、走地大小球分析之看实时数据1.实时数据2.足球分析逻辑 AI足球数据 前言 足球已经开始了也快百年了,但市面上没有真正好的分析的,15年开发经验,弄个Ai分析,看看是不是这样的。 一…

足球分析大小球开发成量化交易软件

足球分析大小球量化交易软件 最近总有朋友问足球大小球的那些所谓的分析法则到底准不准,到底该如何去分析大小球究竟是大球还是小球呢,大家都知道股票有量化交易系统,能否开发足球量化交易软件,整理一些多年开发的心得总结出一套…

足球走地大小球量化分析方法软件

前阵子看了国足的比赛后突发奇想,足球的大小是否可以预测呢。于是乎翻遍了各种材料,经过数月的鏖战,结合数据采集大数据分析大小球技巧经验模型机器学习,搞出了一套可以在走地过程中自动分析比赛大小的软件,目前试水挂…

短信/语音在医疗领域(his系统)各场景的应用

短信/语音通知,可广泛应用于医疗领域的内部管理、患者服务等各种应用场景 一、预约挂号 二、远程医疗 三、系统监控 四、网络医嘱 五、体检报告 六、订单提醒 七、信息化办公 八、患者关怀

医院信息管理系统源码 HIS系统源码

系统功能简介: 一、医院门诊模块 门诊(预约)挂号系统 门诊挂号系统实现了医院门诊部挂号处所需的各种功能。 包括现场办卡,现场挂退号,临时加号,特殊加号,修改患者信息,就诊卡号打…

基层区域应用平台为目标开发的基础医疗云HIS系统源码

系统特点: JAVA语言开发,MYSQL数据库,B/S架构 基于云计算技术的低成本基层医疗信息系统,能够有效降低基层医疗单位信息化建设的投入, 减少系统的维护费用;规范医疗信息、规范业务处理流程,提高服务水平&…

his系统管理工具配置服务器,HIS系统(his管理系统)V3.0.1 官网版

HIS系统(his管理系统)是一款非常专业的his管理程序。行心HIS系统源于北美技术,经过17年HIS技术沉淀,现已拥有100多套子系统,十四项著作权,100多人技术团队。行心HIS系统已经经过300多家医院见证,成熟HIS系统采用专人驻…

云HIS源码 大型医院java云HIS系统源码 云his系统

🍓文末获取联系🍓 云HIS系统 云his系统源码 大型医院java云HIS系统源码 本套云HIS系统采用主流成熟技术开发,软件结构简洁、代码规范易阅读,SaaS应用,全浏览器访问前后端分离,多服务协同,服务可…

java项目-第37期基于springboot+layui实现的医院His系统【毕业设计】

java项目-第37期基于springbootlayui实现的医院His系统 1、项目简述 该项目是针对医院门诊和住院流程开发的一套His系统,分为不同的角色,不同的角色分管不同的模块功能,其中有个超级管理员。 包含模块有: 门诊管理:处方…

Python+Vue计算机毕业设计东软医疗HIS系统之住院入出转管理子系统7k546(源码+程序+LW+部署)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行环境配置: Python3.7.7DjangoMysql5.7pip listHBuilderX(Vscode也行)VuePychram社区版。 项目技术: Django Vue PythonMysql 等等组成,B/S模…

springboot毕设项目东软医疗HIS系统之住院入出转管理子系统7k546(java+VUE+Mybatis+Maven+Mysql)

springboot毕设项目东软医疗HIS系统之住院入出转管理子系统7k546(javaVUEMybatisMavenMysql) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,M…

九阵His系统总体介绍

目录 产品功能模块: 系统结构图: 门诊流程: 住院流程: 产品功能模块: 序号 模块名称 功能描述(出厂设置) 1 数据中心管理 医院各种档案管理,主要包括:往来单位、…

PHP如何接入医疗HIS系统发送短信

医疗信息系统HIS短信接口解决方案 为数字化医院系统提供可靠的短信通知服务 PHP对接验证码短信接口DEMO示例 本文为您提供了PHP语言版本的验证码短信接口对接DEMO示例 * 接口类型:触发短信接口,支持发送验证码短信、订单通知短信,节日祝福等…

ASP对接医疗HIS系统短信通知

ASP对接验证码短信接口DEMO示例 本文为您提供了ASP版本的验证码短信接口对接DEMO示例 * 接口类型:触发短信接口,支持发送验证码短信、订单通知短信,节日祝福等。 * 账户注册:请通过该地址开通账户 http://user.ihuyi.com/?exCla…

医疗HIS管理系统短信接入流程

医疗HIS管理系统在实际使用过程中,需要同病人进行大量的信息沟通,短信作为一种便捷且价格低廉的信息通知方式,是医疗HIS管理系统不可或缺的功能。 医疗信息管理系统HIS的短信应用场景主要有: 医院信息管理HIS系统接入短信通知功…