当前位置: 首页 > news >正文

关于集群和分布式部署

EJB的RPC是同步调用可实现分布式计算,是SessionBean和EntityBean用的,而JMS是异步调用。RMI,和webservice也可以实现分布式计算。


举例说明,假设我们的系统有三个EJB组件:人事、财务、销售,都是开放远程接口,有A、B两台应用服务器,EJB分布式的概念就是可以在A上部署人事、财务的EJB包,在B上部署销售的EJB包,假如有一天用户发现负载不太均衡,就可能调整为在A上部署财务的EJB包,在B上部署人事、销售的EJB包,而程序不必修改。 

而应用服务器集群是这样的,在A、B上都部署全部EJB包,当然还需要在服务器上进行一些集群的设置,这样一来,负载均衡就完全交给应用服务器来管理了。 

至于集群是否足以替代分布式部署(注意:不是分布式计算),正是大家争论的焦点。

EJB解决的是分布式计算问题,不是群集问题,就算你用EJB,你照样无法做到缓存同步,Session同步,分布式和群集是两个不同的概念

主要看具体是什么集群。现在有些用F5之类的负载均衡器的应用也被叫做集群,还有双机热备(部分人也把它叫集群,其实只有一台机器在工作,另一台是备份机,平时不参与业务,只有主机不能提供服务的时候,备份机采工作)。还有用一些JVM集群缓存软件构件的集群。这些集群每台机器一般都需要单独部署。因为使用F5负载均衡和双机热备的,其实是一台台单机。JVM缓存我没有用过,不太清楚。不过估计应用服务器自己并不知道还有其他机器和自己同步。 

标准的JavaEE集群一般分两种,war集群及EJB集群。war因为考虑到Session复制的问题,一般不推荐做大集群。不过用来做2-3台的廉价入门集群还是可以的。 
EJB集群一般在上面部署的都是EJB组件。不同厂商用不同的办法来保证有状态SessionBean的集群复制。比如Weblogic采用双机结对、Sun使用特殊的数据库同步。一般有一台专门的代理管理服务器负责对整个集群的管理,所以在这台管理器上进行部署就可以了。 
应用在集群上面跑和在单机上面跑是完全不同的两个概念。很多单机上可以使用的框架和设计模式在集群环境下是绝对不能使用的。比如单例模式。集群环境下根本无法再集群中只有一个单例,每个服务器都会有自己的单例。还有就是Spring,Spring目前是不能用于标准的JavaEE集群环境下的(因为spring里应用了很多singleton模式)。当然,有人推出了Spring的集群框架,不过我不太清楚是否好用。AOP配置集群的话,估计会很复杂。

标准的JavaEE集群,一般情况下是这样的。 
入口是一个负载均衡器(有时候也用apache之类的),然后是若干台web服务器(如Tomcat),再后边是EJB集群。最后是数据库。 
这是JavaEE集群模型的标准构造。JavaEE集群的核心是EJB集群。但是如果应用没有达到足够大的规模,且设计不好的话,会产生很多问题。这也是当初为什么老EJB架构被人诟病的地方。 

单机应用是中小型项目的主流。我们在中小型项目中一般只用到事务处理,分布式、容灾等功能一般用不上。所以Spring才会发展这么快。但是企业在发展,当初用Spring开发的程序需要跑集群了,结果发现无法在集群上使用,所以才会出现用AOP方式对Spring添加集群和JVM分布式缓存来进行集群化的方案。但即使如此,很多单机下可以使用的代码,在集群下可能是根本无法跑的。单例、静态对象等等,在集群模式下会出现各种问题。 
所以,现在很多人都只用F5和Apache做分发器,后边跟一大堆互不往来的Tomcat之类的Web服务器。这么做最大的问题是无法使用缓存。因为如果使用缓存,那么其他机器更改了数据库的话,缓存无法刷新而形成脏数据。结果大大拖累了性能。 
如果你的应用是中小型低负载应用,那么可以只考虑单机。如果以后要使用集群,可以先用Spring集群(好像是叫Cluster4Spring)和JVM分布式缓存。如果应用大到必须分布式的程度,那么还是更换成EJB架构吧。

相关文章:

关于集群和分布式部署

EJB的RPC是同步调用可实现分布式计算,是SessionBean和EntityBean用的,而JMS是异步调用。RMI,和webservice也可以实现分布式计算。 举例说明,假设我们的系统有三个EJB组件:人事、财务、销售,都是开放远程接口…...

XIlinx提供的DDR3 IP与 UG586

DDR系统需要关注的三样东西:控制器、PHY、SDRAM颗粒,但这是实现一个DDR3 IP所需要的,如果只希望调用IP的话,则只需要调用IP即可,目前时间紧急,我先学一学如何使用IP,解决卡脖子的问题&#xff0…...

C++数据结构X篇_19_排序基本概念及冒泡排序(重点是核心代码)

文章目录 1. 排序基本概念2. 冒泡排序2.1 核心代码2.2 冒泡排序代码2.3 查看冒泡排序的时间消耗2.4 冒泡排序改进版减小时间消耗 1. 排序基本概念 现实生活中排序很重要,例如:淘宝按条件搜索的结果展示等。 概念 排序是计算机内经常进行的一种操作,其目…...

LeetCode LCR 179. 查找总价格为目标值的两个商品

和为 s 的两个数字 题目链接 LCR 179. 查找总价格为目标值的两个商品 购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况,返回任一结果即可。 示例 1: 输入:price [3, 9, 12, …...

上架用的SDK三方应用隐私

SDK名称:华为推送 使用目的:用于向华为手机用户推送消息 使用场景:用户账号相关促销活动、消息提醒更新时 信息收集类型:设备相关信息(Android_ID)使用的敏感权限:不涉及 使用的敏感权限&am…...

从REST到GraphQL:升级你的Apollo体验

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…...

Jupyter使用技巧-环境篇

不同于其他IDE,有时会出现找不到文件路径,通常是因为当前工作目录(working directory)不同所导致的。Jupyter Notebook 会在启动时选择一个初始的工作目录,而这个目录可能与你运行 .py 文件时所在的目录不同。 import…...

软件项目管理【UML-组件图】

目录 一、组件图概念 二、组件图包含的元素 1.组件(Component)->构件 2.接口(Interface) 3.外部接口——端口 4.连接器(Connector)——连接件 4.关系 5.组件图表示方法 三、例子 一、组件图概念…...

npm版本错误——npm ERR! code ERESOLVE 解决方法

起因 项目中echart版本过低,导致某些图表不能正确显示,所以大手一挥,将echart版本从4升级到了5, 再去运行项目的时候 就发现项目报错了 npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! …...

基于卷积神经网络的乳腺癌分类 深度学习 医学图像 计算机竞赛

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度,召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…...

模式识别——高斯分类器

模式识别——高斯分类器 需知定义特殊情况(方差一致)Sigmoid 需知 所有问题定义在分类问题下,基于贝叶斯决策 定义 条件概率为多元高斯分布,此时观测为向量 X X 1 , X 2 , . . . , X n X{X_1,X_2,...,X_n} XX1​,X2​,...,Xn​…...

LeetCode 15. 三数之和

三数之和 题目链接 15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 **注意:**答案…...

React-native-camera 在小米手机上拍照查看闪退

场景:为实现可拍照和录像的相机用react-native-camera这个库手写一个相机,发现了拍出来的图片在小米10上查看闪退 根据手机后台捕获的错误信息是什么玩意太大了(之前还以为是图片显示组件的问题) 改进:相机吊起的时候…...

nodejs+vue大学生社团管理系统

通过软件的需求分析已经获得了系统的基本功能需求,根据需求,将大学生社团管理系统平台功能模块主要分为管理员模块。管理员添加社团成员管理、社团信息管理,社长管理、用户注册管理等操作。 目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1…...

异步编程详解(.NET)

在之前写的一篇关于async和await的前世今生的文章之后,大家似乎在async和await提高网站处理能力方面还有一些疑问,很多网站本身也做了不少的尝试。今天我们再来回答一下这个问题,同时我会做一个async和await在WinForm中的尝试,并且…...

excel怎么固定前几行前几列不滚动?

在Excel中,如果你想固定前几行或前几列不滚动,可以通过以下几种方法来实现。详细的介绍如下: **固定前几行不滚动:** 1. 选择需要固定的行数。例如,如果你想要固定前3行,应该选中第4行的单元格。 2. 在E…...

elasticsearch完整学习

文章目录 elasticsearch一、概念二、ELK集群部署三、图形化界面 elasticsearch 一、概念 1、ELKStack简介(都是java架构,需要jdk底层) 什么是ELK?通俗来讲,ELK是由Elasticsearch、Logstash、Kibana 三个开源软件组成的…...

vscode Coder Runner 运行C++

1. 设置Code Runner 2. 防止输入读不到,把在终端运行勾上。 3. 设置minw/bin的环境变量 安装mingw教程:https://blog.csdn.net/fancy_male/article/details/133992000 4. 见图...

牛客网刷题-(2)

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…...

FreeRTOS基础(如何学好FreeRTOS?)

目录 基础知识 进阶内容 后期“摆烂” 基础知识 实时操作系统 (RTOS):FreeRTOS是一个实时操作系统,它提供了任务管理、调度和同步等功能,在嵌入式系统中有效地管理多个任务。 任务(Task):任务是在RTOS…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...