Quality of Service Provisioning

The Dydra service provides a quality of service settings in order to isolate graph store service requests from other processing and to guarantee and/or limit resource for applications by identity and class. These provisions are governed by settings in the account settings repository

https://dydra.com/<account>/system

The repository includes two graphs are present to contain the quality of service settings:

<http://dydra.com/quality-of-service>
<http://dydra.com/quality-of-service/views>

As this is an internal repeository, managing these settings is mediated through another account repository

https://dydra.com/<account>/quality-of-service

Its contents correspond to a simple schema

<http://dydra.com/quality-of-service/class>
  rdf:type rdf:Property ;
  rdfs:domain <urn:dydra:View> ;
  rdfs:domain  <http://dydra.com/quality-of-service/class>;
  rdfs:range <http://dydra.com/quality-of-service/class> .

For example (with qos: <http://dydra.com/quality-of-service/> )

<http://dydra.com/quality-of-service/views> {
  <http://dydra.com/accounts/nxp/repositories/plm__rev/views/ebi_lz> qos:class qos:class/EBI  .
  <http://dydra.com/accounts/nxp/repositories/plm__rev/views/getListOfItemsForType> qos:class qos:class/PLM-VIEWS  .
  <http://dydra.com/accounts/nxp/repositories/plm__rev/views/plm_die_search> qos:class qos:class/PLM-VIEWS .
  <http://dydra.com/accounts/nxp/repositories/plm__rev/views/ebiz_select_sales_item> qos:class qos:class/EBIZ .
  <http://dydra.com/accounts/nxp/repositories/plm__rev/views/vcp_wafertestsheet-teststage-udm_redline> qos:class qos:class/VCP .
}
<http://dydra.com/quality-of-service> {
  qos:class/EBI qos:class qos:class/Application .
  qos:class/PLM-VIEWS qos:class qos:class/Application .
  qos:class/VCP qos:class qos:class/HighResource .
  qos:class/EBIZ qos:class qos:class/Application .

  qos:class/HighResource qos:quality qos:class/Queued .
  qos:class/Reporting qos:quality qos:class/Scheduled .
  qos:class/Application qos:quality qos:class/SPARQL .
}

The quality-of-service repository is available through the standard service API. This permits update query operations and imports through the graph store protocol.

https://dydra.com/<account>/quality-of-service/service

PUT

A PUT operation to this repository replaces all view service quality settings.

A PATCH operation propagates changes to the repository content to the respective <account>/system repository, from where they are used to generate the nginx request routing locations which determine service response priority.

Headers

Content-Type: text/csv

Among the alternative is TARQL import via the repository qos-import view:

  ## this is a csv import view for qos settings
  construct {
   graph <http://dydra.com/quality-of-service/views> {
    ?view qos:class ?class .
   }
  }
  where {
   { select ?Classification ?APPLICATION ?ViewName ?FREQUENCY ?SAMPLE_URL
     where {} }
   bind(uri(concat('http://dydra.com/accounts/nxp/repositories/plm__rev/views/', ?ViewName)) as ?view)
   bind(uri(concat('http://dydra.com/quality-of-service/class/', replace(if(contains(?APPLICATION, '('), strbefore(?APPLICATION, '('), ?APPLICATION), ' ', '-'))) as ?class)
  }

| Content-Type: application/n-quads, application/trig

The standard quad media types can be used to import content into the repository.

POST

A POST request contributes additional view classifications or augments the classification hierarchy.

GET

A GET operations retrieves

The repository also backs a SPARQL endpoint, to which standard queries can be set.

These view settings are combined with the specifications for available service resources are described in the system configuration, in the system/system``repositors, where entries in the ``<http://dydra.com/quality-of-service> graph follow the schema

qos:server>
  rdf:type rdf:Property ;
  rdfs:domain qos:class ;
  rdfs:range rdfs:Literal .

These combined settings translate into a configuration which governs the operation of the service interface proxy by specifying routing locations and associating each with processing resources. These appear, for example, as

location ~ ^/nxp/plm__rev/vcp_wafertestsheet-teststage-udm_redline $ {
  limit_req zone=api burst=8;
  proxy_pass       http://Queued;
  proxy_set_header Host      $host;
  proxy_set_header X-Real-IP $remote_addr;
  client_max_body_size 256m;
}

upstream Queued {
  server 127.0.0.1:8101;
}
upstream Administration {
  server 127.0.0.1:8199;
}
upstream SPARQL {
  least_conn;
  server 127.0.0.1:8104;
  server 127.0.0.1:8103;
  server 127.0.0.1:8102;
}
upstream Scheduled {
  least_conn;
  server 127.0.0.1:8106;
  server 127.0.0.1:8105;
}
upstream Service {
  least_conn;
  server 127.0.0.1:8107;
}