SCA导航3-创建一个分布式应用

Web安全实战:从攻击者视角到纵深防御体系构建 Web安全是保障在线业务和数据资产的核心技术领域,其本质是围绕信息系统的机密性、完整性和可用性展开的攻防对抗。从技术原理上看,攻击者遵循信息收集、漏洞探测与利用的系统化路径,而漏洞的产生往往源于开发中对用户输入的默认信任、安全知识的匮乏以及安全流程的滞后。在工程实践中,构建有效的防御体系需要采用纵深防御思想,从网络基础设施、应用自身代码到监控响应层层设防。例如,针对文件包含漏洞,需严格校验文件路径并禁用危险配置;对于SSRF漏洞,则应限制出站请求并隔离网络。掌握OWASP Top 10等核心漏洞模型,并熟练 阅读详情

 

3.   创建一个分布式应用

一个SCA装配可以运行在单个或多个节点(node)环境。这节我们将介绍Tuscany节点以及如何将计算器应用构建成跨多节点的分布式应用。

3.1. 节点

节点(node)是Tuscany特有的术语(specific term,OASIS SCA规范并没有定义)。节点封装了Tuscany运行时,运行时由在Tuscany SCA Java distribution的模块目录中在在的模块组成。就像你所能想到的功能,如读取XML文件,创建SCA装配的内存模型,创建构件并把它们联接在一起以便处理到达的消息。

节点运行由一个或多个composite文件描述的SCA装配。每个节点运行在单个JVM中。如果我们只是出于测试的目的,可以在单个JVM中启动一个或多个节点。我们前面介绍的计算器应用加,减,乘,除构件都是包含在单独的组合构件中。

图-11

组合构件使用下面的API运行

node=SCANodeFactory.newInstance().createSCANodeFromClassLoader("Calculator.composite", getClass().getClassLoader());

node.start();

它加载给定的组合构件以及相关的资源,开始节点以启动组合构件中的构件。

3.2. 配置节点

创建节点很简单,如

 

SCANode2 node = SCANodeFactory.newInstance().

createSCANodeFromClassLoader("calculator.composite", null);

参数“null”表示节点工厂将使用当前类加载器定位composite文件。当只有一个SCA contribution时,composite文件路径默认在SCA contribution路径中。

如果更多的contribution需要被加载到节点,可以使用下面的接口

SCANode2  node = SCANodeFactory.newInstance()

.createSCANode("file:/C:/CalculatorContribution1/Calculator.composite",

new SCAContribution("CalculatorContribution1","file:/C:/CalculatorContribution1"),

new SCAContribution("CalculatorContribution2","file:/C:/CalculatorContribution2"));

参数“file:/C:/CalculatorContribution1/Calculator.composite”明确指定要运行的composite文件的路径,

new SCAContribution("CalculatorContribution1",

                    "file:/C:/CalculatorContribution1")

展示如何提供contribution的细节。第一个参数表示给此contribution命名,第二个参数指出此contribution的路径,此参数表明contribution可以从本地系统或从网络获取。

使用多contribution很有用,比如你想把公共工件从具体的组合构件中分离出来,这个公共工件不用修改就可以应用于各个SCA应用。

3.3. 启动节点

节点一旦创建就可以按下面方式启动

node.start();

3.4. 定位服务

如果节点是从一块使用节点工厂接口的Java代码创建,本地引用服务可以按下面的方式

calculatorService = ((SCAClient)node).getService(CalculatorService.class

, "CalculatorServiceComponent");

一旦节点被启动,所有远程绑定将被激活,你可以使用此节点已经定义的任何远程绑定形式试问构件服务。

3.5. 停止节点

如果任务完成或者你想中止节点处理消息,可以按下面方式停止节点

node.stop();

 

3.6. SCA域

当单独运行一个节点时引用的构件服务范围可以按名称指定。SCA定义了术语SCA domain来描述这个范围。SCA装配规范第10章是这样定义SCA domain的,“the boundary of visibility for all SCA mechanisms”(所有SCA机制的可见边界)。

在单独的节点中引用只能连接运行在同一名称节点中的服务。然而运行在不同JVM中的节点可以通过配置以分布式的方式运行SCA装配,在这种方式下运行在一个节点中的构件可以引用其他节点中的构件。为了使这个配置生效,节点必须作为同一分布式SCA域中的一部分运行。在Tuscany中分布式SCA域由使用不同域管理器进程代表。

3.7. 创建跨节点运行的组合构件

前面介绍的计算器应用,你可以发现引用和服务间的连接,是通过设置构件target值为引用构件名称,这些都是在只有一个节点组成的域中完成的。

图-12

在这节中我们将把计算器应用构建成分布式SCA应用。一个组合构件必须运行在一个单独的节点中,所以为了把计算器应用构建成分布式SCA应用,我们需要把它分解成多个组合构件。我们把CalculatorServiceComponent构件所引用的服务之一的AddServiceComponent构件构建在另一组合构件中。此时原来的Calculator.composite文件内容改为

<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"

           targetNamespace="http://sample"

           xmlns:sample="http://sample"

           name="Calculator">

    <component name="CalculatorServiceComponent">

        <implementation.java class="calculator.CalculatorServiceImpl"/>

        <reference name="addService" target="AddServiceComponent" />

        <reference name="subtractService" target="SubtractServiceComponent" />

        <reference name="multiplyService" target="MultiplyServiceComponent" />

        <reference name="divideService" target="DivideServiceComponent" />

    </component>

 

    ...

</composite>

新增Add.composite文件

<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"

           targetNamespace="http://sample"

           xmlns:sample="http://sample"

           name="Add">

 

    <component name="AddServiceComponent">

        <implementation.java class="calculator.AddServiceImpl"/>

    </component>

 

    ...

</composite>

这二个组合构件运行在同一域上下文的不同节点中,calculator的addService引用仍然能够找到运行在不同节点上的AddServiceComponent。所以分布式SCA域能够由多个节点/组合构件组成,可以把定义在不同组合构件中的构件连接起来。

图-13

3.8. 启动域

由一个加载器启动域,如

public static void main(String[] args) throws Exception {

        DomainManagerLauncher.main(args);

}

在分布式计算器应用中这样的代码包含在node.LaunchDomain.java类中,运行这个就可以运行域管理器。

 

接下来我们将介绍Tuscany提供的基于web的域管理UI,管理域及如何用它部署由SCA构件组成的SOA应用。

3.9. 通过域管理Web接口配置域

一旦域启动就可以通过在浏览器地址栏输入http://localhost:9990/ui使用默认域提供的Web接口。它有一系列不同的页面以提供下面这些功能

l         添加contributions到域中

l         添加节点配置到域中

l         配置运行在具体节点上的组合构件

l         启动本地节点实例以便测试配置

3.9.1.    从文件系统中配置域

在域管理web应用背后有三个存储配置的文件

workspace.xml-存储添加到域中的contribution的ID各路径

domain.composite-虚拟域组合构件。它是一个代表包含了运行在此域中的所有组合构件虚拟域的SCA组合构件。uri用于指明组合构件来自于那个contribution。最后SCANode实例将启动包含在虚拟域中的每个组合构件。每个SCANode实例可以运行在单独或分布式处理器中,所以虚拟域是你的分布式应用的综合描述。

cloud.composite-描述被用于运行SCA应用的云计算(分布式SCANode实例的集合)。每个节点都指定一个组合构件,并且拥有节点运行时所有绑定的详细配置,例如设置根URI。这些文件相同之处就是都用.composite文件格式,但是这样方便因为首先我们并没有创建新的文件格式,其次以后我们重现作为管理目的的SCA服务网络的网络节点时可以更加方便,虽然我们还没这么做。

当你使用域管理web应用接口更新时,这些文件会被更新。它们都是XML格式,可以手工编辑或由程序自动编辑。分布式计算器应用中,你可以发现这些文件都位于根目录下。

3.9.2.    连接非SCA服务

为了连接SCA域以外的服务(不管此服务是SCA方式还是其他方式提供),你仍然可以配置明确的绑定,例如,假设计算器应用中的DivideServiceComponent是一个网络任何地方的非SCA web service,像这种SCA域外部的服务,我们可以用明确的远程绑定形式引用。

<component name="CalculatorServiceComponent">

        <implementation.java class="calculator.CalculatorServiceImpl"/>

        <reference name="addService" ></reference>

        <reference name="subtractService" target="SubtractServiceComponent"></reference>

        <reference name="multiplyService" target="MultiplyServiceComponent"></reference>

        <reference name="divideService" target="DivideServiceComponent">

            <binding.ws uri="http://localhost:8080/sample-calculator-ws-webapp/AddServiceComponent"/>

        </reference>

 </component>

 

3.9.3.    从分布式域中启动节点

域管理器用于预处理每个部署到节点运行的组合构件的组合优先级。Contribution被加到域中,配置要告诉域管理器要运行组合构件的节点在哪里以及哪些组合构件需被运行。基于这些信息域管理器为每个部署到节点中的组合构件提供atom feed。组合构件附属的节点必须正确读取这些atom feed,下载运行组合构件必备工件。节点工厂提供了以域管理器暴露的atom feed URL为参数创建节点的API,如下

SCANode2 node = SCANodeFactory.newInstance().

createSCANodeFromURL("http://localhost:9990/node-config/NodeA");

 

参数http://localhost:9990/node-config/NodeA就是域管理器提供的atom feed URL。

域管理器处理组合构件间构件间的关系,提供每个节点中组合构件的完全配置,如绑定URIs就是在基本的预处理阶段正确填充的。

 

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 11 算法篇 在百万级虚拟机、百万级租户的超大规模云环境中,核心算法挑战包括:挑战维度具体问题算法需求技术复杂度规模性​百万级对象并发管理分布式算法、分区算法极高(NP-hard问题)多租户​租户间隔离与资源共享公平性算法、隔离算法高(多目标优化)动态性​资源需求实时变化自适应算法、在线算法高(实时决策)异构性​硬件/负载/需求差异分类算法、匹配算法中高(多维度优化)经济性​资源利用率与成本平衡优化算法、博弈论算法高(多目标博弈)以下是按领域分类的详细算法列表:算法名称数学建模表达核心思想时间复杂度适用场景推理步骤首次适 阅读详情

相关推荐

SOA之SCA导航-Apache Tuscany篇

SOA之SCA导航-Apache Tuscany篇,Apache Tuscany入门指南。

SCA导航1-Apache Tuscany SCA入门

本文根据Apache Tuscany 1.x文档翻译编写1.   Build Calculator Using Command Line1.1. 前言这篇导航文章使用基于命令行的方式开始Apache Tuscany Java SCA。Tuscany提供了许多样例,其中最简单之一的就是计算器样例(The Calculator Sample)。我们将使用此样例,所以请确保已经正确下载Tus

java619 2712

获取气体传感器温度调制响应数据并转换为NumPy数组

本任务旨在获取气体传感器在温度调制条件下的响应数据,将其处理为结构化数据格式(NumPy数组),以便用于机器学习模型训练。整个过程包含数据采集、预处理、特征工程和格式转换等关键步骤。

huanghm88的专栏 1207

SCA软件架构设计理念分析

SCA软件架构设计理念分析  

elimago的专栏 5432

ANSYS Fluent DPM实战:从单点到锥形注入的粒子模拟全流程解析

本文深度解析了ANSYS Fluent中离散相模型(DPM)的粒子注入(Injection)设置全流程。从单点注入到锥形喷雾,详细阐述了不同注入类型的物理本质、参数逻辑与适用场景,并提供了粒径分布、湍流扩散等高级参数设置技巧与实战避坑指南,帮助工程师精准模拟喷雾、粉尘等粒子运动行为。

weixin_29276847的博客 654

Windows 11下ROS2 Humble与PyCharm无缝集成实战(避坑指南+完整配置流程)

本文详细介绍了在Windows 11系统下如何实现ROS2 Humble与PyCharm的无缝集成,包括环境准备、ROS2 Humble安装、PyCharm配置以及C++与Qt5混合开发的实战技巧。通过避坑指南和完整配置流程,帮助开发者高效搭建稳定的机器人开发环境,特别适合Windows平台的ROS2开发者。

weixin_28710999的博客 366

SCA/Tuscany的一些使用心得(二) -DefaultSCADomain与组合构件(composite)

DefaultSCADomain是多数用于测试使用域,上回SCADomain的源码,默认就会走此实现, 此类针对贡献包,复合组件,组件进行初始化至内存之中; SCADomain调用: // 创建默认的实现domain = new DefaultSCADomain(runtimeClassLoader, applicationClassLoader, domainURI, co...

weixin_30411819的博客 149

YOLOv8改进策略【YOLO和Mamba】| 2024 VM-UNet,高效的特征提取模块VSS block 二次创新提高精度

VM-UNet模型设计的出发点是解决现有CNN-based和模型在医学图像分割中的局限性,利用(SSMs)的优势,提出一种更有效的医学图像分割模型。具体来说,CNN-based模型在捕捉长距离信息方面存在不足,而模型由于自注意力机制的二次复杂度导致计算负担较重。SSMs模型如Mamba不仅在建模长距离依赖方面表现出色,还具有线性计算复杂度,这为VM-UNet的设计提供了理论基础。

Limiiiing的博客 616

Apache Tuscany SCA入门

SCA导航1-Apache Tuscany SCA入门 分类: SOA2009-04-29 16:38 1123人阅读 评论(0) 收藏 举报 目录(?)[+] 本文根据Apache Tuscany 1.x文档翻译编写 1.   Build Calculator Using Command Line 1.1. 前言 这篇导航文章使用基于命令行的方式开始Apache Tu

cuixiang1022的专栏 1074

【100%通过率】华为OD机试真题 Python 实现【网上商城优惠活动 / 模拟商场优惠打折II】

某网上商场举办优惠活动,发布了满减、打折、无门槛3种 优惠券,分别为: 1:每满100元优惠10元,无使用数限制,如100~199元可以使用1张减10元,200~299可使用2张减20元,以此类推; 2:92折券,1次限使用1张,如100元,则优惠后为92元, 3:无门槛5元优惠券,无使用数限制,直接减5元。

MISAYAONE的博客 9371

Access查询中的Dlookup函数的妙用

在Microsoft Access中,处理和分析数据的过程中,常常会遇到需要根据条件从其他记录中提取特定数据的情况。这时候,Dlookup函数就成了开发者和数据分析师的得力助手。今天我们将通过一个具体的实例,详细探讨如何利用Dlookup函数来解决复杂的查询问题。

m0_62153576的博客 294

基于HarmonyOS API 24咖啡品鉴记录应用当CoffeeRecord实例任意属性(如 rating、note 或 flavors 数组元素)发生变更时,状态管理系统追踪到变更路径

在移动互联网与智能穿戴设备高度普及的今天,"习惯养成"已经从一个模糊的自我管理理念,演变为一个可量化、可追踪、可视化的数字化产品赛道。越来越多的人希望借助手中的智能终端,把"早起、冥想、阅读、运动"这些抽象的自律行为,转化为一条条清晰的数据曲线和一张张可触摸的打卡卡片。而鸿蒙生态(HarmonyOS)凭借其跨设备协同、分布式软总线以及声明式 UI 开发框架 ArkUI,为这类注重"轻量化交互 + 即时反馈"的生活方式类应用提供了极为理想的生长土壤。本应用正是一款面向"晨间场景"深度打磨的习惯追踪工具。它聚焦

2301_79516720的博客 273

2024年数字IC秋招-华为机试-数字芯片-实习笔试题

笔试题目:40个选择题A.综合时不同文件列表内的宏定义仅在本列表生效B.宏定义会覆盖,不需要单独undefC.仿真时出现宏定义冲突以最后一次值为准D.宏定义最好在各文件中随用随定义A.4/9B.4/6C.01D.0/6。

qq_42135020的博客 2892

SCA导航2-用Tuscany构建你的第一个web service

2.   用Tuscany构建你的第一个web service这篇导航文章将一步步地介绍如何使用Tuscany构建web service。第一部分将介绍如何将Tuscany运行环境添加到Eclipse开发环境,第二部分将介绍如何利用Tuscany简单地创建web service。2.1. 安装最新的Tuscany的Eclipse插件本节将介绍Tuscany的Eclipse插件安装方法,

java619 2343

Python爬虫零基础入门【第九章:实战项目教学·第17节】内容指纹去重:URL 变体/重复正文的识别!

我长期专注 Python 爬虫工程化实战,主理专栏 👉 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 824

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Tuscany SCA案例分析(二)(连载中...)

今天给大家讲的是calculator的分布式版本,在这个案例中,我们先来看看其设计图,如下:从图中可以明显地看出有3个节点nodeA,nodeB,nodeC,而nodeA上有三个组件,nodeB和nodeC上分别有一个组件。这3个节点在同一个domain中。服务引用的关系在这里就不多说了。那么我们下面进入开发过程了。先建立一个普通的java project,项目名叫"MyDistributedCa

oracle1000g的专栏 3072

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SCA 之Tuscany 7 ——helloworld use ZIP format contributions

一、说明 在实际部署的时候,我们是先打包文件,然后在server上install start invoke…… 而卸载的话就可以stop,uninstall等,更新的时候就是update。 因为在新版本的Tuscany充分的借照了原来在SCA Newton中使用的OSGi框

Chatopera 1459

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Sentine

Sentinel 第1章 Sentinel概述 1.1 Sentinel下载地址以及官方文档 下载地址: https://github.com/alibaba/Sentinel/releases 官方文档: https://github.com/alibaba/Sentinel 1.2 Sentinel主要特征 1.3 Sentinel的作用 防止服务雪崩 服务降级 服务熔断 服务限流 1.4 Sentinel的两个部分 核心库(Java客户端)不依赖任何框架/库,能够运行于Java所有运行时环境,

ww55123793的博客 485

SCA(Service Component Architecture)编程模型入门

2006 年 1 月 04 日本文将介绍SCA编程模型中的基本概念,并以一个简单的例子来说明它的一些基本用法,期待能够抛砖引玉,并为读者以后深入了解SCA打下基础。概览目前业界主要的软件厂商都在大力推广面向服务的架构(Service Oritented Architecture,SOA)的概念,但是对于很多客户来说,SOA的概念还是显得相对抽象的。为了使客户能够更加简单的实现向这种面向

笨笨熊的专栏 1491

SCA 之Tuscany 10 ——SCA模型的理解

和前面几篇实践的例子不同,本片偏重于理解,如果前面是怎么做,那么这篇是属于为什么这么做的吧。         What is SCA?  SCA为构建基于SOA的应用和解决方案提供了编程模型。它基于这样的理念:将业务功能作为一系列的服务而提供,并由这一系列的 服务组装起

Chatopera 1986

SOA标准之----SCA架构思想

SOA标准之----SCA架构思想   SOA在Java领域有两套标准:一个是SUN推出的JBI(没有得到BEA和IBM的承认),另外一个是:IBM和BEA等公司推出的SCA和SDO标准。   JBI之关注Java组件只处理Java组件的集成。 SCA实现了业务组件和传输协议的分离,可以处理各种平台组件的集成。 SDO可以的自由读取各种不同数据源的数据。 另外,BPEL本质上是一种集...

weixin_34415923的博客 339

内存数据库SQLite

本文以“黑板”比喻内存数据库,对比传统硬盘数据库,详解 SQLite 使用 :memory: 实现高速临时存储的原理与优势。通过动态占位符生成、executemany 批量操作等技巧,实现毫秒级数据读写,适用于单元测试、临时计算与隐私保护场景。强调其瞬时性与内存限制,提醒开发者注意数据量控制与安全防护,突出参数化查询防注入的核心价值。

看了都说刑的博客 322

11-01-演进-.NET GC发展史

.NET GC发展史映射硬件演进:从单核STW到多核并发,再到区域化细粒度回收。历经分代管理、ServerGC、BackgroundGC、LOH自动压缩、POH隔离、DATC自适应线程数及Region-based管理等关键革新,代码量从5000行增至4万+,复杂度指数上升。每一步优化均在暂停时间、吞吐量与资源开销间权衡,体现“实用主义”哲学。核心启示:GC演进由硬件驱动,方向明确——更短暂停、更高效率,但代价是工程复杂性持续攀升。

设计 AI 玩游戏🎮 359

深入理解 JVM 垃圾回收:GC 是什么、如何判定垃圾、四大回收算法全解析

本文深入解析JVM垃圾回收机制,涵盖GC核心概念、垃圾判定(基于可达性分析)、四大回收算法(标记清除、复制、标记整理、分代回收)及其应用场景。重点说明GC主要作用于堆内存,通过根对象遍历识别不可达对象,避免循环引用问题;并结合新生代与老年代特性,阐述分代回收如何提升效率,实现高效内存管理。

qq_61228769的博客 648

SQLite 是什么?和 MySQL、Redis 有什么区别,项目中应该怎么选?

SQLite 是轻量级嵌入式关系型数据库,无需独立服务,直接通过文件存储数据,适合本地工具、桌面应用、移动端离线数据及单机轻量业务。与 MySQL 相比,它部署简单但并发写入受限;与 Redis 不同,它支持完整 SQL 与事务,适用于结构化数据持久化。三者可协同使用:MySQL 处理核心业务,Redis 实现高速缓存与计数,SQLite 降低部署复杂度。选型应基于场景需求,而非技术偏好。

栈外手记|2018 年起深耕后端开发。跳出代码栈,分享技术、项目踩坑与行业思考,看见技术之外更多可能。 334

JVM 核心机制

JVM 是运行时抽象层,核心机制包括类加载(双亲委派)、运行时数据区(堆、元空间、栈帧)、分代垃圾回收(新生代复制、老年代标记-整理)及JIT编译(解释器与C1/C2分层优化)。通过可达性分析识别GC Roots,避免循环引用问题。常见故障如OOM、StackOverflow源于内存或线程资源耗尽,需结合GC日志与堆转储排查。

2401_89855466的博客 298
上一篇: SCA导航2-用Tuscany构建你的第一个web service
下一篇: SCA导航4-创建Store企业应用
java619
博客等级 码龄20年 12粉丝 31原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值