一个分布式的系统一般都会有很多的节点,节点和节点之间的通讯采用远程调用的方式,而当在实现业务逻辑的时候,我们可以通过客户端的实现方式实现,目前实现客户端的方式有两种方式,瘦客户端和富客户端。
第一种方式 瘦客户端:
所谓瘦客户端类似于之前EJB那种方式,瘦客户端本身不具有业务逻辑,瘦客户端通过业务接口调用服务端逻辑,这个时候逻辑运算还是跑那个被多个系统共用的服务器,这样当存在大量的请求的情况下,负责逻辑运算的服务器就会成为瓶颈,这个时候可以有两种方式来解决这种瓶颈问题:
第一水平伸缩负责逻辑运算的服务器,这个时候涉及到客户端请求的负载均衡,每次将远程调用采用负载均衡算法将其分配到逻辑端服务器,采用这种方式以后,可能就需要远程调用框架内部支持一些比如流量控制,负载均衡等的机制,这样使得调用方本身不需要关心服务器端的物理部署。
第二种方式 富客户端
富客户端是将运算逻辑以客户端包的形式提供给调用方来使用,这样可以分摊逻辑运算服务器的压力,将压力分担到调用方服务器。这种方式非常适合调用方服务器本身负责的逻辑很简单,运算量很小的情况下,采用富客户端以后可以合理利用调用方服务器的资源来分摊掉被调用方服务器的压力。另外一方面,富客户端也适用于当需要将一些非核心的业务从核心业务中剥离出来,然后让非核心的业务跑到调用方的服务器中,同时富客户端还可以做其它的一些事情,比如缓存调用结果,实现调用方的local cache等。
当然了采用富客户端也会带来一个明显的问题,那就是客户端的升级,假如逻辑有变化需要让调用方升级客户端包,当然这也有解决办法,就是将业务逻辑进行抽象,每一步都采用动态脚本的方式比如Groovy脚本去执行,每次客户端服务器启动的时候,中心服务器推送最新的Groovy脚本到web客户端服务器,这样客户端服务器就可以获取到最新的执行逻辑,当然这对客户端的设计要求严格,客户端可能要设计的具有插件式的灵活功能。
采用富客户端另外一个问题就是富客户端的状态和服务器端的如何进行同步,假如服务器端的一些数据变化了,而客户端需要感知这些变化怎么办?这也有解决办法,一种方式是拉模式,另外一种模式推模式。
拉模式就是每次服务端有变化的时候,给富客户端发条指令,然后富客户端会主动向服务器端来拉数据,这种方式对于客户端服务器量比较大的情况下比较方便,比如富客户端被前端数百台机器使用,这个时候可以显著减少服务端的工作量。
推模式就是当服务器端发生变化的时候,主动推送给每个客户端,这种情况适合客户端服务器数量不多的情况,当然无论是采用拉还是推模式都需客户端和服务端保持一定的联系,这可能需要客户端在启动的时候主动的向服务端去注册一下,客户端注册以后,中心服务器端可以监控客户端的一些运行状况等信息。
以上是在分布式应用中,多个应用之间如何通信的
分享到:
相关推荐
标题《集中分布式服务器-客户端架构在散货码头的应用》和描述中所涉及的知识点主要集中在集中分布式系统架构在特定行业的应用,以及人机界面系统与集中分布式服务器-客户端架构的结合对于港口装卸作业的优化。...
在客户端的设计中,实现多线程可以充分利用系统资源,同时在处理数据时,采用异步模式可以避免单线程阻塞问题,显著提高客户端的性能和响应速度。 2. 双缓冲队列:双缓冲队列是一种提高I/O操作性能的技术,能够实现...
《分布式存储系统中客户端的设计与实现》这篇论文主要探讨了在大规模分布式存储系统中的客户端设计问题,特别是针对名为BlueOcean的对象存储技术。文章首先强调了随着信息量的快速增长,传统的NFS等存储系统已无法...
在现代企业级应用中,尤其是在云计算和微服务架构盛行的今天,掌握Java分布式应用的设计原则和技术至关重要。下面将详细介绍Java分布式应用程序设计的相关知识点。 1. **分布式系统基础**: - 分布式系统的概念:...
在IT行业中,Java分布式应用程序设计是一项关键技能,尤其在大型企业级系统开发中不可或缺。本资源包含一本名为“JAVA分布式程序设计”的电子书以及相关的源码示例,旨在帮助开发者深入理解和实践Java在分布式环境中...
总的来说,"net.rar_java 服务器_net_socket 服务器_分布式_多客户端"的主题涵盖了网络服务器开发的核心要素,包括用Java实现的Socket服务器、处理多客户端的能力以及在分布式环境中的应用。理解并掌握这些知识点...
13. 云计算平台:如AWS、Azure、Google Cloud,提供了构建和运行分布式应用程序的基础设施和服务。 这份习题答案详细解析了上述知识点,可以帮助学习者深入理解分布式系统的设计与实现,巩固理论知识,提升解决实际...
为了克服这两种技术在实际应用中的局限性,本文深入探讨了它们各自的优缺点,并提出了一种基于.NET框架的新型分布式应用程序框架设计。此框架旨在通过结合WebService与.NET Remoting的优势来实现高效的信息处理,...
在探讨基于DotNet平台的分布式应用程序架构设计之前,首先需要对相关概念和基础技术有深入的了解。 ***平台架构综述 组件对象模型(COM)是微软推出的一套编程模型,它基于接口的编程方式为组件提供了统一的交互...
2. **分布式应用程序基础**:分布式应用程序涉及到客户端和服务器之间的交互,VB6.0通过DCOM技术允许对象在不同的进程中运行,实现了跨计算机的数据共享和功能调用。理解DCOM的工作原理和配置是开发分布式应用的基础...
2. **分布式智能客户端**:这是课程的核心,讨论的是如何在多台计算机之间分布式的环境中设计和管理客户端应用,确保其可扩展性、稳定性和安全性。 3. **应用程序开发**:课程关注的是实际的开发过程,包括设计原则...
本话题聚焦于一种特定的方法,即“基于消息的分布式平台的客户端反映任务进度的方法”,这种方法在设备装置领域具有广泛应用,特别是在大型系统集成和物联网(IoT)解决方案中。 首先,我们需要理解“基于消息的...
分布式应用程序是一种设计模式,它允许软件的各个部分在不同的网络计算机上运行,彼此之间通过网络进行通信和协作,以实现更高效、可扩展的系统。在这个“分布式应用程序简单例子”中,我们将关注微软的Remoting技术...
Smart Client系列课程的第六部分专注于分布式智能客户端应用程序的开发最佳实践,这意味着课程将涵盖如何设计、实现和优化这种复杂的应用程序,以确保它们能够在各种网络环境中高效、稳定地运行,并提供优秀的用户...
分布式应用程序是一种设计模式,它允许不同的软件组件在不同的网络计算机上运行,彼此之间进行通信和协作,以实现一个共同的目标。微软.NET Framework提供了一种强大的工具——Remoting,用于构建这样的分布式系统。...
在分布式应用中,客户端负责处理与用户的交互,中间层服务器处理客户端与数据层的关系,主要负责数据处理工作和数据库操作任务。 PowerBuilder是开发传统C/S结构应用的强有力工具,它也支持分布式应用的开发。Power...
C#语言作为.NET框架的主要编程语言,提供了丰富的工具和技术来支持分布式应用程序的构建。本教程"分布式智能客户端程序开发最佳实例"通过C#的应用,将深入探讨这一主题。 在分布式系统中,智能客户端是指具有本地...
分布式Java应用基础与实践是Java开发领域中的一个重要主题,它涉及到如何通过网络将多个独立的计算机节点连接起来,协同处理任务,以实现系统的高可用性、高性能和可伸缩性。在Java中,分布式系统主要依赖于一些核心...
这是因为Tuscany SCA框架提供了丰富的工具和API,使得开发者能够在较低的开发成本下,快速实现分布式应用的设计和开发。同时,这种便利性也有助于缩短研发周期,快速响应业务需求。 6. SCA规范下的分布式应用表现...