前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >新一代企业应用平台的探究(上):只拿干货说话

新一代企业应用平台的探究(上):只拿干货说话

作者头像
魏新宇
发布2018-06-25 15:18:37
7930
发布2018-06-25 15:18:37
举报

一、EAP以及的两种模式

EAP,Enterprise Application Platform,目前的版本是7。

EAP6基于tomcat,EAP7基于Undertow。关于tomcat和undertow的性能对比,我们看一下github上的测速数据(https://github.com/arcadius/java-rest-api-web-container-benchmark):

Concurrent number of Users = 1 (并发用户数为1)

响应时间:Undertow优于tomcat;

吞吐量:Undertow优于tomcat;

Concurrent number of Users = 128(并发用户数为128)

响应时间:Undertow优于tomcat;

吞吐量:Undertow优于tomcat;

整体上看Undertow性能优于tomcat。因此EAP7的性能应比EAP6更强。

EAP有两种模式:单机模式和domain模式。

EAP单机模式部署、启动、停止都很简单方便。

启动EAP单机模式:

通过浏览器使用8080端口访问EAP:

接下来,我们在EAP中部署应用。

在EAP中部署应用,可以有两种格式。对于压缩的war/ear包,EAP检测到以后,可以直接部署,对于解压的war/ear目录,需要手工部署。

  1. 压缩的war/ear包
  2. 解压的war/ear目录

接下来,我们看看这两种部署方式。

在没用应用的情况下,$JBOSS_HOME/standalone/deployments/目录下没有内容:

我们将一个war压缩包拷贝到该目录下,应用会自动部署:

我们再次查看deployment目录:

example.war.deployed 就是被部署的应用。

我们通过浏览器访问这个应用:

在成功部署了一个war包以后,我们部署一个解压的war目录。

version.war是一个解压的war文件,是一个目录:

我们将这个目录拷贝到deployment下:

[org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) WFLYDS0004: Found version.war in deployment directory. To trigger deployment create a file called version.war.dodeploy

拷贝解压的war目录不会自动触发应用部署,需要手工触发。

手工创建一个version.war.dodeploy文件:

应用部署会被自动触发。通过浏览器访问部署好的应用:

在EAP中,删除应用的方法很简单,对于第一个应用,删除example.war文件即可。

对于第二个应用,删除version.war.dodeploy文件即可:

二、EAP的Domain模式

Domain模式是EAP的高可用模式,其架构见下图:

Host Controller管理同一台Host(可以是物理机或者虚拟机)上的Server

Domain Controller通过Host Controller管理Domain中的所有Server

同一个Domain中的一个或多个Server组成一个 Server Group

在本实验中,我们模拟三个服务器:host0、host1、host2(通过使用不同的端口,在一个虚拟机上模拟多个host)

host0上部署Domain Controller,Domain Controller不包含任何应用。

host1上部署第一个Host Controller,它包含两个应用服务器(Server11 and Server12) host2上部署第二个Host Controller,它包含三个应用服务器( Server21, Server22, and Server23)。

Server11 and Server12属于primary-server-group

Server12 and Server22 属于secondary-server-group

Server23属于ingleton-server-group

准备实验环境(在一个虚拟机上模拟三个host):

配置domain controller配置文件:

vi host0/domain/configuration/domain.xml,增加server group的配置信息:

修改host-master.xml配置文件:

vi host0/domain/configuration/host-master.xml

为web console增加账户:

启动domain controller:

然后通过浏览器访问console,已经可以看到server group和host0-master:

接下来,配置host1和host2,先配置host1

vi host1/domain/configuration/host-slave.xml

为了避免端口冲突,将native interface 从9999修改成 10999.

将domain master的IP设置成127.0.0.1(因为domain master在本地)

配置server group信息:

接下来,启动host1 master:

接下来,我们确认一下host1上的server11和server12是否已经启动:

接下来在console上进行查看,host1上的server11和server12已经启动:

接下来,配置host2:

vi host2/domain/configuration/host-slave.xml

将native interface 端口号设置成11999

将domain master配置成本地地址:

配置server group:

接下来,启动host2:

可以看到server21和server22、server23在启动:

确认三个server已经启动:

通过web console进行查看,截至到目前,5个server已经运行起来了:

三、基于Domain模式部署应用

实验环境:

一个domain master;

两个VM:servera和serverb;

两个server group:Group1、Group2

四个web server:servera.1、servera.2、serverb.1、serverb.2

Group1中包含:servera.1和serverb.2

Group2中包含:servera.2和serverb.1

将应用部署到Group1上:

接下来,可以看到,只有Group1上的两个server可以访问应用,Group2上的两个server无法访问:

五、配置JDBC

本实验继续第四节的实验:

实验环境:

一个domain master;

两个VM:servera和serverb;

两个server group:Group1、Group2

四个web server:servera.1、servera.2、serverb.1、serverb.2

Group1中包含:servera.1和serverb.2

Group2中包含:servera.2和serverb.1

为应用配置mysql数据源。

加载jdbc driver:

确认加载成功:

同样,在另外两个节点上也进行操作:

启动domain master、servera和serverb:

登录到domain master cli模式注册jdbc driver:

创建bookstore MySQL数据源:

检测数据源:

接下来,部署bookstore应用,部署到servergoup名称为Group1的组上:

然后,通过浏览器可以访问.10和.11两个server(属于Group1)。

为了验证数据源被加载,我在网站里注册一个账户:davidwei,并购书:

可以成功操作:

六、Log的管理

实验环境:

一个domain master;

两个VM:servera和serverb;

两个server group:Group1、Group2

四个web server:servera.1、servera.2、serverb.1、serverb.2

Group1中包含:servera.1和serverb.2

Group2中包含:servera.2和serverb.1

在domain模式下,log如下:

如果运行在standlone模式下,日志如下:

接下来,通过实验进行验证。

在实验中,我们会部署一个应用bookstore:

配置日志路径:

为应用配置日志:

确认配置:

接下来,为应用bookstore配置一个新的logger category:

将ROOT logger的级别修改为WARN:

重新加载Group1的配置:

查看log:

可以看到log是debug级别的,说明之前的配置是生效的。

七、消息子系统

实验环境:

一个domain master;

两个VM:servera和serverb;

两个server group:Group1、Group2

四个web server:servera.1、servera.2、serverb.1、serverb.2

Group1中包含:servera.1和serverb.2

Group2中包含:servera.2和serverb.1

JBoss A-MQ7产品,基于ActiveMQ项目。但未来会基于Artemis项目。

EAP7内嵌了一个messaging server,支持AMQP和STOMP等协议。

接下来,我们通过实验进行验证。

为了增加日志的数量,修改级别:

进入一个server的日志子系统:

查看cluster-connection对象的拓扑结构:

接下来,基于full-ha创建JMS Resources:

创建TestQueue:

接下来,在Group1中部署一个message producer:

在Group1中部署一个message consumer:

通过浏览器访问刚刚部署好的message producer应用:

发布一个测试消息:

很快Group1中的两个server已经收到了信息:

魏新宇

"大魏分享"运营者、红帽资深解决方案架构师

专注开源云计算、容器及自动化运维在金融行业的推广

拥有红帽RHCE/RHCA、VMware VCP-DCV、VCP-DT、VCP-Network、VCP-Cloud、ITIL V3、Cobit5、C-STAR、AIX、HPUX等相关认证。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大魏分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Concurrent number of Users = 1 (并发用户数为1)
  • Concurrent number of Users = 128(并发用户数为128)
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档