内容简介:我的一位客户让我帮助其实现一个简单的仪表板概念,该概念将显示 IBM Dedicated Cloud 上公开的各种数据服务的 CRUD(创建、读取、更新、删除)操作的一系列可用性和响应时间。正好,这也是一个很好的示例,能展示如何在这些数据服务上运用 CRUD 操作,这些服务既可以从本地机器上的 Java Open Liberty 服务器访问,也可以通过 VCAP 配置文件绑定到云中。本教程将指导您检查 IBM Cloud 上托管的服务的响应时间。这是一个简单的工具,它可以展示如何在使用 Cloudant、I
我的一位客户让我帮助其实现一个简单的仪表板概念,该概念将显示 IBM Dedicated Cloud 上公开的各种数据服务的 CRUD(创建、读取、更新、删除)操作的一系列可用性和响应时间。正好,这也是一个很好的示例,能展示如何在这些数据服务上运用 CRUD 操作,这些服务既可以从本地机器上的 Java Open Liberty 服务器访问,也可以通过 VCAP 配置文件绑定到云中。
免费试用 IBM Cloud
利用IBM Cloud Lite 快速轻松地构建您的下一个应用程序。您的免费帐户从不过期,而且您会获得 256 MB 的 Cloud Foundry 运行时内存和包含 Kubernetes 集群的 2 GB 存储空间。了解所有细节并确定如何开始。如果您不熟悉 IBM Cloud,请查阅 developerWorks 上的 IBM Cloud Essentials 课程 。
本教程将指导您检查 IBM Cloud 上托管的服务的响应时间。这是一个简单的工具,它可以展示如何在使用 Cloudant、IBM Message Hub、 MongoDB 、Elastic Search 等战略数据源上的 Java 应用程序/微服务中执行基本的 CRUD 操作。
这篇操作技巧文章通过示例展示了如何使用 IBM Cloud 上托管和管理的 Compose for MongoDB。这里展示的方法是,利用通过访问 CRUD 操作获得的报告,生成一个 JSON 响应文件,它将提供访问每个操作所需的时间,以及总操作时间。您将尝试创建的响应文件示例如下所示。
{ "service" : "mongodb" , "operations" : [{ "type" : "create" , "response_time" : 30 , "response_code" : 200 , "desc" : { "visitor id" : "594ddeee34a639002645674d" } }, { "type" : "read" , "response_time" : 25 , "response_code" : 200 , "desc" : { "visitor id" : "594ddeee34a639002645674d" } }, { "type" : "update" , "response_time" : 49 , "response_code" : 200 , "desc" : { "visitor id" : "594ddeee34a639002645674d" } }, { "type" : "delete" , "response_time" : 28 , "response_code" : 200 , "desc" : { "deleted visitor id" : "594ddeee34a639002645674d" } }, { "response_code" : 200 , "desc" : "operations implemented CRUD/CRUD" }
学习目标
学完本教程后,读者将会了解如何:
- 跟踪服务响应时间
- 在本地和云中运行 Java Open Liberty 服务器
- 将 Java Open Liberty 服务器连接到公开的服务
前提条件
在开始之前,您的机器上需要有以下软件:
您还需要:
- 一个IBM Cloud 帐户(请注意,我们将使用非 Lite 版服务)
- 一个 IDE。在本例中,我使用 Eclipse with Bluemix 插件 将应用程序部署到云中。
预估时间
若是第一次设置环境,完成整个实验大约需要 20 分钟到 60 分钟。
步骤
第 1 步. 克隆样本应用程序
- 克隆 https://github.com/blumareks/BluemixTestDashboard GitHub 存储库。
git clone https://github.com/blumareks/BluemixTestDashboard
- 将目录更改为 MongoDB 样本应用程序所在的目录。为此,请使用以下指令:
cd BluemixTestDashboard/GetStartedJavaMongoDb
目前做到这里已经足够。我们接下来将在 IBM Cloud 上配置一些资源,然后返回到克隆的存储库。
第 2 步. 创建云服务
- 登录到IBM Cloud 控制台。
- 在 Catalog 中搜索 Compose for MongoDB 和 Liberty for Java。
- 创建 Liberty for Java 样本应用程序和 Compose for MongoDB 服务。
- 创建它们后,将 MongoDB 服务与 Liberty for Java 应用程序绑定在一起。
- 单击 Liberty for Java 服务的 Connections 选项卡,然后单击 Create connection 按钮。
- 选择 Compose for MongoDB 服务。
- 单击 Connect 按钮。
- 单击 Liberty for Java 服务的 Connections 选项卡,然后单击 Create connection 按钮。
此操作将会启动 Liberty for Java 服务的重新载入过程。
第 3 步. 将 TLS/SSL 的 JVM 系统属性连接到 Compose MongoDB
- 转到 Compose for MongoDB 服务中的 Manage 选项卡。
- 向下滚动,可以注意到该连接已启用 SSL。确认连接 URL 和证书,您很快需要使用它们。
此外,您可以使用 VCAP 文件:
- 选择 Connection 选项卡。
- 从三点式选项菜单中,选择 View Credentials 。
{ "compose-for-mongodb" : [{ "credentials" : { "db_type" : "mongodb" , "maps" : [], "instance_administration_api" : { "instance_id" : "6d1dd5bf-9274-4373-aab1-5bcace1d1e5c" , "root" : "https://composebroker-dashboard-public.eu-gb.mybluemix.net/api" , "deployment_id" : "5aec531b7852900026da6301" }, "name" : "bmix-lon-yp-6d1dd5bf-9274-4373-aab1-5bcace1d1e5c" , "uri_cli" : "mongo --ssl --sslAllowInvalidCertificates sl-eu-lon-2-portal.9.dblayer.com:26135/compose -u admin -p <your password will be here> --authenticationDatabase admin" , "ca_certificate_base64" : "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURtekNDQW9PZ0F3SUJBZ0lFV3V4VEpUQU5CZ2txaGtpRzl3MEJBUTBGQURCUE1VMHdTd1lEVlFRRERFUmkKYkhWbGJXbDRMbXhwZEdWQWNtOWliM1Jw" , "deployment_id" : "5aec531b7852900026da6301" , "uri" : "mongodb://admin:<your password will be here>@sl-eu-lon-2-portal.9.dblayer.com:26135,sl-eu-lon-2-portal.10.dblayer.com:26135/compose?authSource=admin&ssl=true" }, "syslog_drain_url" : null , "volume_mounts" : [], "label" : "compose-for-mongodb" , "provider" : null , "plan" : "Standard" , "name" : "Compose for MongoDB-fg" , "tags" : [ "big_data" , "data_management" , "ibm_created" , "ibm_dedicated_public" , "eu_access" ] }] }
我们需要在应用程序中设置多个 JVM 系统属性,以确保客户端能验证服务器提供的 TLS/SSL 证书:
- javax.net.ssl.trustStore :包含签名权威机构证书的信任库路径。
- javax.net.ssl.trustStorePassword :访问此信任库的密码。
注意,此信任库通常是使用 JDK 中提供的 keytool 命令行程序创建的。例如:
keytool -importcert -trustcacerts -file <path to certificate authority file> -keystore <path to trust store> -storepass<password>
- 返回到 Compose for MongoDB 控制台,获取 Overview 页面上提供的 SSL 证书。单击 SSL certificate 按钮显示该证书,然后复制它。
- 将 SSL 证书保存到一个文件中:
cat > mongodbcert.crt
证书内容应该类似于:-----BEGIN CERTIFICATE----- LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURtekNDQW9PZ0F3SUJBZ0lFV3V4VEpUQU5CZ2txaGtpRzl3MEJBUTBGQURCUE1VMHdTd1lEVlFRRERFUmkKYkhWbGJXbDRMbXhwZEdWQWNtOWliM1Jw [... removed couple lines ...] VFqMG14WGtCOWkvODFzQ01JCkYxaTd5SzUzZW1WRkt0dlN5bVNkQk9jUzFVVitYN241SmI4WU9oUHF5KzJtR3dWREpLMmJHclV2RTNnTTlLa3kKSVdDVUlJL21HdUt2RzVncElPRXQKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo -----END CERTIFICATE-----
- 使用 keytool 命令为您的系统创建 MongoDB 密钥库。请注意,您可能需要考虑将该密码更改为更合适的密码。
keytool -importcert -trustcacerts -file ./mongodbcert.crt -keystore ./mongoKeyStore -storepass aftereight
- 完成上述操作后,将 mongoKeyStore 放在克隆的存储库的这个路径中:
GetStartedJavaMongoDb/src/main/resources/mongoKeyStore
- 在项目根目录中,在一个终端运行 Maven(运行 mvn --version 来确保它已安装):
mvn install
mvn install 后的文档将存储在本地的这个位置:
/your-path-to-the-target/GetStartedJavaMongoDb/target/TestJavaMongo-1.0-SNAPSHOT/WEB-INF/classes/mongoKeyStore
或者 IBM Cloud 上(在 cf push 命令后):
/home/vcap/app/wlp/usr/servers/defaultServer/apps/myapp.war/WEB-INF/classes/mongoKeyStore
典型的应用程序还需要设置一些 JVM 系统属性,以确保客户端向 MongoDB 提供一个 TLS/SSL 证书:
- javax.net.ssl.keyStore :包含客户端 TLS/SSL 证书的密钥库路径。
- javax.net.ssl.keyStorePassword :访问此密钥库的密码。
第 4 步.通过 IBM Cloud 中的 Compose for MongoDB 在本地运行 Open Liberty
为了在本地测试并运行该服务,可能需要在本地服务器上安装 JAXRS-2.0 功能。我将使用 Eclipse IDE 来实现此目的。添加了 JAXRS-2.0 的服务器配置屏幕如下图所示:
Eclipse IDE 管理的本地 Liberty 服务器的源代码如下所示:
< server description = "new server" > <!-- Enable features --> < featureManager > < feature >localConnector-1.0</ feature > < feature >servlet-3.1</ feature > < feature >jaxrs-2.0</ feature > </ featureManager > < applicationMonitor updateTrigger="mbean" /> < webApplication contextRoot="TestJavaMongo" id="GetStartedJavaMongoDb" location="TestJavaMongo.war" name="GetStartedJavaMongoDb" /> </ server >
使用 mvn install 命令构建该项目后,就可以在上面配置的本地服务器上运行它了。
下图显示了在本地调用该服务后的结果:
首次调用大约用了 5 秒的往返时间(我们需要创建数据库并远程运行所有内容),此时间不是非常可观。但下一步将介绍如何在 IBM Cloud 中运行相同的服务,那时的响应速度至少快 10 倍。以下是我的结果,但请记住,以后的调用会更快,因为我们的服务已经配置好并建立了连接。
{ "service" : "mongodb" , "operations" : [{ "type" : "create" , "response_time" : 386 , "response_code" : 200 , "desc" : { "visitor id" : "5aec8faf17683ad076f4fc58" } }, { "type" : "read" , "response_time" : 303 , "response_code" : 200 , "desc" : { "visitor id" : "5aec8faf17683ad076f4fc58" } }, { "type" : "update" , "response_time" : 579 , "response_code" : 200 , "desc" : { "visitor id" : "5aec8faf17683ad076f4fc58" } }, { "type" : "delete" , "response_time" : 164 , "response_code" : 200 , "desc" : { "deleted visitor id" : "5aec8faf17683ad076f4fc58" } }, { "response_code" : 200 , "desc" : "operations implemented CRUD/CRUD" }
第 5 步.通过 IBM Cloud 中的 Compose for MongoDB 运行 Open Liberty
至少可通过两种方式在云中部署和运行此服务。您可以手动调节 Cloud Foundry 文件并使用 Cloud Foundry CLI 运行它,或者使用适用于 Eclipse 的 IBM Cloud 连接器。在本教程中,我们使用了 Cloud Foundry CLI。
- 从 IBM Cloud 下载 CLI。
- 转到该 Liberty 服务。
- 选择 Getting started 选项卡。
- 下载命令行接口:
- 安装 CLI 后,就可以运行 version 命令:
ibmcloud --version ibmcloud version 0.6.6+d4d59ab5-2018-03-20T07:49:59+00:00
- 设置您的访问点。(请注意,API 访问点取决于云在美国、欧盟、澳大利亚等国所在的位置。)
ibmcloud api https://api.<your access point here>
- 登录到服务。(请注意,如果使用联合登录,请使用 ibmcloud login -sso 代替。)
ibmcloud login -u <your-email>
- 登录后,可以交互式地选择要使用的组织和空间。
ibmcloud target --cf
- 现在编辑 Cloud Foundry 配置文件 manifest.yml。该文件应包含应用程序(您的 Liberty 服务)的名称和绑定的 Compose for MongoDB 服务。
在本例中,该文件如下所示:
applications : - name : <your service name> random-route : true path : target/TestJavaMongo.war memory : 256M instances : 1 name : test-java-mongodb host : test-java-mongodb
- 在 Java 类文件中更新 MongoDB 密钥库在云中的位置:
MongoDbVisitorStore.java
- 您现在可以使用 Maven 构建适用于云的应用程序:
mvn clean mvn install
mvn 命令成功完成运行后,您就可以将应用程序推送到云了。这将花费几分钟时间 - 足够喝一杯咖啡了。:-)
ibmcloud app push <your service name>
可以考虑查看一下该文档的日志 - 在该服务的仪表板上(参见 Logs 选项卡)或在终端使用 CLI:
ibmcloud app logs <your service name>
但是请注意,CRUD 操作比第一次调用快 100 倍,比来自本地机器的远程调用快 10 倍。
{ "service" : "mongodb" , "operations" : [{ "type" : "create" , "response_time" : 12 , "response_code" : 200 , "desc" : { "visitor id" : "5aecb5b0705978002421614a" } }, { "type" : "read" , "response_time" : 18 , "response_code" : 200 , "desc" : { "visitor id" : "5aecb5b0705978002421614a" } }, { "type" : "update" , "response_time" : 11 , "response_code" : 200 , "desc" : { "visitor id" : "5aecb5b0705978002421614a" } }, { "type" : "delete" , "response_time" : 8 , "response_code" : 200 , "desc" : { "deleted visitor id" : "5aecb5b0705978002421614a" } }, { "response_code" : 200 , "desc" : "operations implemented CRUD/CRUD" }
结束语
希望您喜欢阅读本教程!我的下一篇教程将介绍如何添加一个应用程序来读取、分析和存储结果。请保持关注,可以在 Twitter @blumareks 或在 Medium @blumareks 上关注我,了解更多的更新信息!
本文翻译自: Monitor response times of cloud Java microservices with Compose for MongoDB (2018-12-10)
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法设计与应用
迈克尔 T. 古德里奇(Michael T. Goodrich)、罗伯特·塔马契亚(Roberto Tamas / 乔海燕、李悫炜、王烁程 / 机械工业出版社 / 2017-11-20 / CNY 139.00
本书全面系统地介绍算法设计和算法应用的各个领域,内容涵盖经典数据结构、经典算法、算法分析方法、算法设计方法以及算法在各个领域的应用,还包含一些高级主题。本书采用应用驱动的方法引入各章内容,内容编排清晰合理,讲解由浅入深。此外,各章都附有巩固练习、创新练习和应用练习三种类型的题目,为读者理解和掌握算法设计和应用提供了很好的素材。 本书可作为高等院校计算机及相关专业“数据结构和算法”课程的本科生......一起来看看 《算法设计与应用》 这本书的介绍吧!