DSS简介

2023-11-12

原文链接 

去中心化软件服务(DSS)是一个基于CCR的轻量级.net运行时环境。DSS提供了一个轻量级的,状态导向的服务模型,它将REST概念和构造高性能高扩展性应用的系统级方法结合在一起。在DSS中服务被暴露为一种可以被程序和UI操作界面访问的资源。通过集成:状态隔离、结构化状态操作、事件通知和常规服务组合,DSS解决了编写运行在一个节点或者跨网络的高性能、可观察、松耦合的应用程序的需求。

DSS的主要设计目标是将性能、简单性和强壮性结合在一起。这使得DSS非常适合于创建由服务聚合而成的应用,无论服务是运行在同一个节点还是跨越网络。这个目标使得DSS成为一个灵活且简单的可以用于编写多种应用的平台。DSS使用去中心化服务协议(  Decentralized Software Services Protocol (DSSP))和HTTP协议作为服务间交互的基础。DSSP是一种轻量级的基于SOAP的协议,它提供了一个清晰、对称(symmetric)支持状态操作的状态转移应用程序模型和一个由状态变化驱动的事件模型。
DSS运行时提供了一个宿主环境(hosting environment),这个环境提供了内建的在同一个节点和跨越网络的对服务组合、发布/订阅、生命周期管理、安全、监控、日志等的支持。服务可以使用Visual Studio编写,也可以使用Microsoft Visual Programming Language(VPL)来编写。VPL可以通过简单的托拽服务到画布上,然后根据数据依赖关系把服务连接到一起来创建简单的服务组合应用。另外,DSS清单编辑器(DSS manifest editor)提供了一个图形化环境来连接(wiring up)、配置、部署和在一个节点或跨越网络运行DSS应用程序。

DSS覆盖的问题领域

下面我们讨论三个常见的应用程序设计的问题领域,以及DSS如何来解决它们:

壮性

在任何负责的系统中,系统一个部分的失败都有导致整个系统瘫痪的可能。这是因为部分失败如果不能被正确的隔离、检测和处理,将会导致灾难性的失败。松耦合是一种常见的用于限制部分失败影响的设计模式。然而,为了构造松耦合的系统,每个组件必须与其他组件隔离,并且与底层运行环境隔离。在系统失败中两种常见的隔离方法是数据隔离和运行隔离。缺少数据隔离会导致服务的内部状态被破坏,而缺少运行隔离则会导致组建失去响应。DSS同时在数据和运行上隔离服务。数据隔离是通过完整克隆所有服务(包括系统服务)间交换的消息来实现的。克隆代码作为编译的一部分来生成,它比完整序列化的速度快很多。

可组合性

强壮性的需求强制要求程序成为一批松耦合组件的组合。这引发了另外一个问题:如何识别、定位以及把这些组件组合到一个正在运行的应用程序中。大多数传统的系统把一个应用定义为一个单一的进程而不是一组共同工作的松耦合服务的组合,这就把组合的任务留给了应用的设计者。DSS提供了协议和运行时来支持创建、管理、部署和运行由松耦合服务组合而成的应用。服务在运行时被创建,并且为了功能的正确,根据它需要组合的其他服务的描述进行连接。这个模型允许应用程序在运行时配置每个服务的实力在哪里运行。而且,由于每个服务实例与其他服务实例的关系都可以通过DSSP暴露出来,这使得看到任意指定的服务实例所依赖的服务实例成为可能。

可观察性 

所有应用程序的一个重要的方面是:可以知道它正在做什么,它处于什么状态,以及它如何到达这个状态。简单的说:一个没有办法观测的系统就不可能知道它是否功能正常。通过将一个服务定义为一个由URI表达的资源标识以及暴露这个资源的状态(可能被服务内部行为或者通过与其他服务交互改变),DSS将可观察性概念放置于它应用程序模型的核心。然而,可观察性概念超越了只是通过侦测服务的状态来监控应用程序。通过根据服务的状态统一的暴露服务,DSS为处理管理、安全和基于状态操作的服务组合提供了简单且一致的解决方案。DSS还使得每个DSS服务都可以通过浏览器UI进行访问,以及非常容易的与各种常用的工具和平台集成。

起步

作为DSS的一部分,我们提供了大量不同的例子和指导,它们演示的范围涵盖了从开始编写“Hello world”之类的简单应用到可以平滑的运行在同一个节点或者跨越网络的复杂应用。 

转载于:https://www.cnblogs.com/ncindy/archive/2009/10/18/DSS_Introduction.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DSS简介 的相关文章

随机推荐

  • 高德地图实现点聚合功能的详细步骤加截取地图图片 (附源码)

    目录 介绍 准备工作 1 注册并登录高德地图开放平台 申请密钥 2 在Vue项目中安装高德地图的相关库 插件 一 点聚合 1 引入高德地图API font color purple initializeMap font color purp
  • Codeforces ZeptoLab Code Rush 2015

    Codeforces ZeptoLab Code Rush 2015 比赛链接 http codeforces com contest 526 A King of Thieves time limit per test 1 second m
  • python不能创建字典的是_python字典key不能是可以是啥类型

    python中字典的key不能是可变类型 字典可存储任意类型对象 其中值可以取任何数据类型 但键必须是不可变的 如字符串 数字或元组 语法格式 d key1 value1 key2 value2 字典是另一种可变容器模型 且可存储任意类型对
  • c++的类与对象(下)

    1 初始化列表 在创建对象时 编译器通过调用构造函数 给对象中各个成员变量一个合适的初始值 构造函数体中的语句只能将其称作为赋初值 而不能称作初始化 因为初始化只能初始化一次 初始化的本质就是只能初始化一次 而构造函数体内可以多次赋值 以一
  • 漫话算法[二分查找]:不用背你也能写出漂亮的二分查找框架并秒杀至少5道题!

    快来和叮当学习算法吧 B站同步更新 同步到开源项目Github传送门 Easy Programming及微信公众号 CVBear 项目内含Leetcode五杀刷题指南 致力于通过5个问题带你入门掌握算法套路 漫话算法 二分查找 算法模板 一
  • VT系列二:检测是否支持虚拟化

    本文只是学习此视频后的一些总结 不当之处还请指出 视频作者 小宝来了 视频连接 http bbs pediy com showthread php t 211973 约定 本文中出现的名词 虚拟机 客户机 GUEST 都是被监控的操作系统或
  • Python第一课:print()函数、变量与赋值

    Python第一课 print 函数 变量与赋值 所有的符号输入 必须是英文状态 一 print 函数的用法 单刀赴会 不带引号 数据 黄袍加身 单引号 双引号 三引号 单引号与双引号效果一致 当括号内有的语句有单引号或双引号时 三引号可以
  • 初级1 题目一 时间复杂度及示例

    1 什么是时间复杂度 常数时间的操作 一个操作如果和数据量没有关系 每次都是固定时间内完成的操作 叫做常数操作 一个算法流程中 常数操作数量的指标 就是常数操作在算法里总共有多少次 称为时间复杂度 常用O 读作big O 来表示 具体来说
  • 如何选择一款趁手的光纤测试仪

    光纤测试仪是一种用于物理学 电子与通信技术领域的物理性能测试仪器 于1996年11月1日启用 常用光纤测试表有 光功率计 光万用表 稳定光源 光时域反射仪 OTDR 和光故障定位仪 如何选择合适的光纤测试仪 选择光纤测试仪表 一般需考虑以下
  • 虚拟化原理以及应用(8)课堂笔记-第三章KVM的概述第四章-课堂笔记-virt-manager默认方式创建虚拟机(1)

    一 KVM的概念 重点 KVM关键词 1 基于Linux内核的全虚拟化解决方案 运行在支持硬件虚拟化功能的X86平台 Intel VT 或AMD V 基于LINUX内核的全虚拟化的解决方案 运行在支持硬件虚拟化功能的x86平台 intel
  • RNN(循环神经网络)

    文章目录 RNN概述 RNN模型 RNN前向传播算法 RNN反向传播算法推导 RNN小结 DNN的特例CNN的模型和前向反向传播算法 这些算法都是前向反馈的 模型的输出和模型本身没有关联关系 今天我们就讨论另一类输出和模型间有反馈的神经网络
  • Vue.config.productionTip = false 是什麽意思

    阻止启动生产消息 常用作指令 阻止启动生产消息 這又是什麽意思 看下效果 Vue config productionTip false Vue config productionTip true 感覺多了一行信息
  • python3(二)Numpy

    这两个库都是基于C语言的 所以这两个库的计算速度相比python的list或dict来说很快 pandas又是基于numpy的库 相当于numpy的升级版本 并且用到了矩阵的计算 计算速度相比利用单个数据或字典 列表来说 快很多 1 基本
  • CAD+开发小结+交互+选择集+深度拷贝AcDbObjectId中指向的实体集+读取其他DWG文件

    深度拷贝将数组中的实体ID指向的实体拷贝至blockId为ID的块中 AcDbIdMapping adimIdMap AcApDocument pDoc acDocManager gt curDocument acDocManager gt
  • 【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.27.0版本

    文章目录 一 集群规划及架构 二 系统初始化准备 所有节点同步操作 三 安装并配置cri dockerd插件 四 安装kubeadm 所有节点同步操作 五 初始化集群 六 Node节点添加到集群 七 安装网络组件Calico 八 测试Cor
  • sqli labs less 25

    按照常规输入id 1 提示报错信息如下 一个很常见的报错 可以看出是单引号闭合的语句 输入 id 1 or 1 报出的错误信息不明显 加入一个括号进行试探能不能报出更多的语句错误 输入 id 1 or 1 从上图看出来or 被屏蔽了 经过更
  • ubuntu搭建android编译环境

    本文来自linux与嵌入式技术Q群52240781 ubuntu12 04 14 04安装后搭建android编译环境 注安装的是64位ubuntu系统12 04或14 04 请安装ubuntu的LTS版即12 04或14 04 每2年发布
  • 87_BigDecimal的doubleValue()、toString()、toPlainString()与科学计数法

    主题 BigDecimal toPlainString 可以避免出现科学计数法格式的数据 项目上面有个小伙伴在用Bigdecimal进行数值计算时 用return num doubleValue 的方式将结果送到前台 测试数值较小时无问题
  • 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

    报错如下 检查npm目录下是否还有node exe文件如果没有复制过来 我复制过来问题解决 首先我是node和npm版本和项目版本不适应 需要更换版本 所以重新安装node js在重新安装的过程中将安装的位置改变了 所以造成了这个可能
  • DSS简介

    原文链接 去中心化软件服务 DSS 是一个基于CCR的轻量级 net运行时环境 DSS提供了一个轻量级的 状态导向的服务模型 它将REST概念和构造高性能高扩展性应用的系统级方法结合在一起 在DSS中服务被暴露为一种可以被程序和UI操作界面