SAP HANA XSA 微服务教程(二)

原文:Microservices in SAP HANA XSA

协议:CC BY-NC-SA 4.0

五、SAP XSA 的部署场景

一个软件系统在交付到生产环境中之前是不完整的。本书将展示并解释如何将版本控制分配给本书分享的练习中正在开发的微服务。本章还将解释如何在环境中执行软件部署,以及如何部署到 SAP 云平台。

MTA 项目和版本控制

软件开发的一个重要阶段是版本控制和发布周期。在软件产品生命周期的不同阶段,开发团队将为他们的产品分配版本,以符合审计和文档。在 SAP HANA 1.x 中,没有简单的方法来保持产品版本;但是,SAP HANA XSA 架构中的一些特性有助于软件的版本控制。

在 SAP HANA XSA 中,如前几章所述,mta yaml 文件包含与多目标应用相关的元数据属性。该文件还包含模块依赖关系,应用构建器使用它来配置模块之间的关系。这个文件的另一个特性是它可以将构建版本作为运行时属性保存。

在最新的应用构建之后,mta yaml 文件看起来如图 5-1 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-1

mta yaml 公司

很明显,名为 版本 的属性确实是 mta yaml 工件中提供该特性的属性。到目前为止,所提供的示例已经指导我们构建和运行模块来查看 REST API 的运行情况。

下一个构建演示将在应用级别进行(与模块级别的构建相反)。

选择项目,点击右键,选择 Build,如图 5-2 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-2

应用构建

由于应用构建器收集每个模块的信息并运行集体构建,因此这一步比独立构建模块需要更长的时间。请看 SAP Web IDE 的右下方。它显示应用构建正在进行。当应用级别的构建完成时,打开控制台,注意显示完整成功消息的日志,如图 5-3 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-3

应用生成控制台输出

从控制台验证 mta 构建后,在工作区层级内会显示一个新的文件夹,如图 5-4 所示,名为MTA _ archivesT5。此文件夹包含与工作区内构建的应用相匹配的子文件夹。每个文件夹将包含从每个应用级构建生成的归档文件。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-4

工作区下的 mta 存档

生成的多目标应用档案被称为 mtar 文件。存档文件以 mta yaml 文件中指定的版本作为其名称的一部分生成,如图 5-5 所示。确保 mta 文件中的版本和 mtar 名称中的版本匹配。如果重新构建应用,mtar 文件将被新的构建覆盖。在重新构建应用时要小心这个过程,以避免在应用构建中被覆盖。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-5

mtar 生成的文件

如果需要不同版本的应用,请更新 mta yaml 文件,根据所需版本将版本号从 0.0.1 增加到 0.0.2,如图 5-6 所示。

软件版本控制的最佳实践将版本模式描述为 X.Y.Z,其中

  1. X 代表主要版本号。一个主要的发布意味着各种各样的特性被添加到软件中并被发布。

  2. Y 代表次要版本号。次要版本是指在软件中添加了一个小功能并发布。

  3. Z 表示补丁号。补丁号意味着添加并发布了不同版本的软件。

在应用中,打开 mta yaml 文件并增加版本号以展示版本化过程,如图 5-6 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-6

mta yaml 版本更新

选择应用,右键单击,重新构建一次,如图 5-7 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-7

重建应用

返回 mtar 构建文件夹,注意新生成的 mta 归档文件。它与 mta yaml 文件中的更新版本相匹配。请注意,在同一文件夹中,初始的 0.0.1 和 0.0.2 归档文件都被保留。如果在 mta yaml 文件中继续更新 version 属性,情况也是如此。这次版本将根据需要更新到 0.0.3 等,如图 5-8 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-8

mta yaml 版本和生成的 mtar

SAP Web IDE 部署

通过从可用的 mtar 集中选择 mtar 文件,并从 SAP Web IDE 顶部菜单中选择菜单项 Deploy ,可以从 SAP Web IDE 进行部署。本章的这一节与开发任务无关;但是,了解如何在 XSA 环境中执行部署非常重要。开发人员和 XSA 驾驶舱管理人员都可能参与到前面描述的一系列任务中。

有两种类型的部署可用:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-16

SAP 云平台

  1. SAP HANA XS 高级版(此处展示)

    如果执行内部部署,则使用此选项。部署应用需要了解(CF 体系结构)组织和空间。

    In the SAP Web IDE, select the mtar file. Follow by selecting the “Deploy” menu item from the navigation. Select “Deploy to XS Advanced” as shown in Figure 5-9.

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 5-9

    mtar 部署到 XSA

    After selecting the XS Advanced option from the Deploy menu, follow the prompt to specify the Organization and Space for the deployment as shown in Figure 5-10. The same application could be deployed to different Spaces if one Space is needed for development and another Space may be needed for testing purposes. Deploying to different Spaces will eventually generate a different URL: PORT where the application is deployed to.

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 5-10

    mtar 部署到组织/空间

    单击“部署”按钮。

    The deployment of the application may take a few minutes as the SAP Web IDE is using the mtar (binary file generated) to deploy the application to the on-premise XSA environment. Continue to monitor the console log for any issues or successful deployment messages as displayed in Figure 5-11.

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 5-11

    mtar 部署控制台消息

    The ui application is running on the host:51053 port which means that the deployed application will be launched from a different port than the same application that was used during the development exercise. Along the same lines, it is expected that developers/admins will be able to monitor these applications from the XSA Advanced Cockpit as shown in Figure 5-12.

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 5-12

    运行在开发空间中的 XSA 应用

    导航到 XSA 驾驶舱,进入组织和空间,并注意到部署的应用。

    从新绑定的端口运行应用应该会返回 API 的输出。

    Validate this deployment step by navigating to the URL and PORT where the ui module is running, and it will display the ui module as shown in Figure 5-13.

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 5-13

    从不同端口运行的(部署的)应用

    Similarly, validate the api module by changing the relative path to navigate to the /wpsvc url (displaying the “Hello wavepress!” message on the browser) as it was shown before and also in Figure 5-14.>

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 5-14

    已部署应用的浏览器输出

    Finally, validate the devices endpoint to retrieve the list of devices as shown in Figure 5-15 (which executes the CV_DEVICES view).

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 5-15

    /devices 端点的浏览器输出

    还可以验证插入、更新和删除设备的其他端点。由于本节遵循与第四章相同的步骤,验证第四章中的步骤,只需更新相对路径和 HTTP 方法并发送来自 POSTMAN 的请求即可验证其他 HTTP 方法。

    从 SAP Web IDE 到 XSA 本地环境的部署流程现已成功通过验证。

  2. 部署到 SAP 云平台云铸造环境

    使用此选项时,需要 SAP 云平台中的活动帐户(或 SAP 云平台中的免费试用帐户)才能部署 MTA 应用。

    此外,如 CF 小节中的第一章所述,已经有一个组织和一个将部署应用的空间是一个先决条件。如果不是这样,请继续创建本练习的组织和空间。

    登录 SAP 云账户(或试用账户),如图 5-16 所示。如果您需要在生产环境中运行应用,请务必咨询可用的 SAP 云许可证类型。

如图 5-17 所示,确保 CF 已启用(或点击“输入您的试用账户”后启用)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-17

在 SAP 云中启用 CF

CF 环境启用后,将如图 5-18 所示。请注意,CF 环境最初启用 30 天。如果环境需要启用超过 30 天,则需要请求延长试用期,以防止环境被停用并可能丢失任何更改。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-18

SAP 云平台–CF

单击内容部分中的单幅图块。

下一个屏幕显示了从 SAP Web IDE 部署应用所需的 CF 设置(API 端点、组织和空间)。如图 5-19 所示,目前还没有部署任何应用或服务。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-19

SAP 云平台 CF 组织/端点

尽管 REST API 是在本地场景中部署和测试的,但是在部署到 CF 环境时,MTA yaml 文件的相同部署配置可能不正确。请注意,在 CF 环境中,服务和应用共享资源。在构建这个 API 解决方案的过程中,附加设置被添加到 mta yaml 文件中,以符合 CF 部署。

添加的设置如下。

在 hdi-db 资源中,在 parameters 部分添加键值对:

  1. 服务:hanatrial

  2. 服务计划:人类发展倡议-共享

在 SAP Web IDE 中,选择一个 mtar 文件,点击右键,选择部署到 SAP 云平台,如图 5-20 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-20

部署到 SAP 云平台

SAP Web IDE 有一个需要 CF API 端点细节的接口,如图 5-21 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-21

SAP 云端点、组织、空间

提供 API 端点后,SAP Web IDE 将提示输入 CF 帐户的凭证,如图 5-22 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-22

CF 帐户的凭据

如果 CF 帐户使用针对 CF 端点提供的凭证进行身份验证,则在从 CF 帐户中检索后,提示将显示组织和空间的详细信息,如图 5-23 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-23

在 CF 中选择组织和空间

要验证 SAP 云平台 CF 部署,请回到现场,注意应用和服务的数量。

要从 Linux 终端验证部署和 CF 环境,请运行以下命令:

  1. cf 登录-a <end_point_uri>t</end_point_uri>

    The Organization details are displayed if login is successful as shown in Figure 5-24.

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 5-24

    使用 CF CLI 连接到 CF 端点

  2. cf services are shown in Figure 5-25.

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 5-25

    检索 CF 帐户内的服务

    如果需要从 SAP 云平台帐户检索其他信息,请从 CF/XS CLI 测试其他命令。可以在 SAP 官方文档网站上找到可用的命令:

    https://help.sap.com/viewer/4505d0bdaf4948449b7f7379d24d0f0d/2.0.03/en-US/8bb90c8be912431dab74877a492a3f5a.html#loio8bb90c8be912431dab74877a492a3f5a__section_xkm_5k2_ys

通过 SAP HANA cockpit 为 XSA 扩展微服务

软件系统的可伸缩性是云环境提供的重要特性之一。根据 CF 原则构建的 SAP HANA XSA 也支持此类特性。扩展软件系统意味着一个应用或服务可能有多个实例同时运行,以满足软件系统的容量需求。扩展应用或微服务需要开发者和 XSA 驾驶舱管理员共同努力。

随着应用的增长,并逐渐从开发环境提升到质量系统,并最终进入生产环境,一些因素可能会降低软件系统的性能。通常,质量环境模拟同一公司的生产环境,系统在这种环境中进行更彻底的测试,在进入生产之前预测打嗝。通常,生产环境中用户数量和数据量的增加会导致应用性能下降。其他因素,如网络带宽、与业务相关的事件,或许还有以前没有遇到的其他未知因素。应用或服务如何满足这种需求?这就是可伸缩性在 XSA 应用的地方。

在当前练习中,一个应用和一个服务被创建为一个单实例应用。从图 5-26 中的 SAP XSA 驾驶舱可以看到。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-26

从 XSA 驾驶舱看到的 XSA 应用

从 Linux 终端使用 xs apps 命令可以从 XS CLI 读取相同的信息,如图 5-27 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-27

从 XS CLI 看到的 XSA 应用

请注意,系统中只有一个可用实例在运行。如果要对应用或服务进行压力测试,在某个时候,如果在一段时间内向系统发送 X 个请求,就会显示性能下降。

增加分配给应用的内存以满足这种需求是完全有意义的;但是,开发人员或 SAP XSA cockpit 管理员也可以为同一应用创建额外的实例,以便将进入应用或服务的请求负载平衡到多个实例中,而不是由一个实例处理所有请求。

问题变成了应用何时应该增加内存,而应用何时应该运行多个实例?内存增长与实例增长的行业术语称为水平和垂直可伸缩性。

水平可伸缩性意味着应用的实例会更多/更少。水平扩展有利于系统负载平衡请求,并将这些请求平均分配给任何可用的实例。运行的实例越多意味着使用的资源越多,因此这种保持活动实例运行的方法是有代价的。如果将实例放置在不同的地理区域,以确保响应应用请求时的低延迟,或者如果预期的事件将会发生,并且业务知道它将会暂时承受沉重的负载,则可能需要这种方法,如图 5-28 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-28

微服务实例表示

垂直可扩展性意味着额外的内存限制将根据系统的需要而增加/减少。随着内存资源的增加,垂直可伸缩性将导致额外的成本。应该对可伸缩性进行适当的规划,以分析内存需求。

根据所提供的信息,这两种情况演示如下。

增加应用的内存(垂直扩展)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-29

从 mta yaml 文件扩展微服务

  1. 从 SAP Web IDE 中,在图形编辑器中打开 mta yaml 文件。

  2. 确定需要增加内存限制的应用模块。

  3. 导航至参数部分,并在模块内添加内存属性及其期望值(图 5-29 )。

  4. 保存并重建模块。

从控制台验证模块是否已成功构建。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-30

(之前)验证扩容微服务,如图 5-30 所示

重新启动应用应该会生效。注意在图 5-31 中服务被重新启动。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-31

扩展微服务的(后)验证

如果应用重新启动,但没有显示更新的内存值,可能是由于系统覆盖了这些值,如图 5-32 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-32

扩展微服务–应用重启

如果应用内存没有按照 mta yaml 文件的指示分配内存值,继续从 Linux 终端执行 xs scale 命令,如图 5-33 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-33

从 xs cli 扩展微服务

返回 XSA 驾驶舱,刷新显示分配给应用的内存的同一屏幕,查看并验证应用的内存确实从原来的 512MB 扩展到了 1GB(或 1024MB),如图 5-34 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-34

扩展应用后的 xsa 驾驶舱

添加同一应用的其他实例(水平扩展)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-35

XSA 座舱应用实例操作

  1. 在 SAP XSA 驾驶舱中,单击应用名称以进入应用详细信息屏幕。

  2. 在屏幕顶部附近,有可以对应用执行的操作(重启、重新登台、启动、停止、+实例、–实例、删除)(图 5-35 )。

  3. 选择“+ Instance”按钮添加同一微服务的实例。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-36

XSA 驾驶舱向应用添加实例

  1. 系统立即添加一个实例,如图 5-36 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-37

XSA 驾驶舱显示添加的实例运行

  1. 几秒钟后,系统将显示两个实例中的两个在运行,一旦它们可用。该操作的结果显示两个实例正在运行,并且每个实例都有 1024MB (1GB)的内存,导致服务(api 模块)在图 5-37 中是可伸缩的。

  2. 可选–针对端点运行额外的请求,以查看服务是否仍在运行(在系统中运行压力测试可能会展示一个实例与两个实例的比较,它们的响应时间将有助于查看运行中的可伸缩性)。

当一个应用或服务存在多个实例时,请求仍然被发送到同一个 URL : PORT,然后系统内部知道如何检查每个实例上的负载,并智能地决定将下一个请求发送到哪里。这就是负载平衡过程。

可伸缩性并不意味着应用只能增长并能够响应压力负载。可扩展性还意味着当不需要资源时,可以缩小微服务的规模(以节省资源和资金——因为云服务对其资源/内存的消耗收费)。

从 XS CLI (Linux 终端),使用以下命令将应用缩小到 512 MB:xs scale-m 512 MB。

回到 XSA 驾驶舱,验证应用(api 模块)已成功缩减到 512MB。请注意,即使应用内存缩减,仍有两个应用实例在运行,如图 5-38 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-38

XSA 驾驶舱显示 2 选 2 应用正在运行

要删除其中一个实例并将应用设置回单个实例,请执行以下步骤(图 5-39 ):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5-39

正在删除应用实例

  1. 在 SAP XSA 驾驶舱中,选择应用。

  2. 进入应用详细信息屏幕后,请注意“–Instance”按钮并单击它。

  3. 系统将执行销毁(删除)其中一个实例的操作。几秒钟后,它将显示正在运行的实例的新数量。

  4. Navigate back to the Space screen to show the applications running, displaying the number of instances and the memory values set.

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 5-40

    XSA 驾驶舱显示删除一个后的应用实例

结论

请记住,当事件发生时,可伸缩性功能非常强大,企业需要能够对事件做出反应,以满足消费者的需求。

虽然许多公司都在想办法升级他们的 SAP HANA 系统并迁移到 XS 高级架构,但这本书解释了启动这一过程所需的基础架构和架构变化。本书的所有示例都与 SAP HANA 数据库进行交互,该数据库是读取和存储数据的基础。此外,本书涵盖了试图在 SAP HANA XSA 环境中实施 Node JS 微服务的开发人员的主题。

在整个章节中,我们学习了 CF 架构、实现 OAuth 授权的 UAA 服务、JSON 令牌生成和验证,以及它如何在 SAP HANA XSA 环境中工作。理解这种架构及其安全性的重要性是构建和部署在 XS 高级版上运行的 Node JS 微服务的基础。在将 XSA 架构与 Cloud Foundry 的架构进行比较后,这本书深入研究了 SAP HANA 数据库中几个组件的开发。利用经典的模式表,为 API 的后端提供了设计时对象,如计算视图、同义词和存储过程。在 XSA 环境中以 NodeJS 微服务的形式消费和公开数据是本书的重点。最后,展示了这些微服务的部署过程和软件版本控制步骤。这本书以应用的可扩展性和在云环境中部署这些微服务的步骤作为结尾。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值