blob: 8c2473f7b2e1127077869c5f3d784ee9af44839b [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1" />
<title>Service APIs | Apache Ignite</title>
<link rel="stylesheet" href="/js/vendor/hystmodal/hystmodal.min.css" />
<link rel="stylesheet" href="/js/vendor/swiper/swiper-bundle.min.css" />
<link rel="stylesheet" href="/css/utils.css" />
<link rel="stylesheet" href="/css/site.css" />
<link rel="stylesheet" href="/css/media.css" media="only screen and (max-width:1199px)" />
<link rel="icon" type="image/png" href="/img/favicon.png" />
<link rel="stylesheet" href="../css/native-persistence.css" />
<link rel="stylesheet" href="../css/service.css" />
<link rel="stylesheet" href="../css/compute-apis.css" />
<link rel="stylesheet" href="../js/vendor/highlight/night-owl.css" />
<script src="../js/vendor/highlight/highlight.min.js"></script>
<script src="../js/vendor/highlight/java.min.js"></script>
<script src="../js/vendor/highlight/xml.min.js"></script>
<script src="../js/vendor/highlight/csharp.min.js"></script>
</head>
<body>
<!-- MOBILE MENU START -->
<div class="hystmodal" id="jsMenuModal" aria-hidden="true">
<div class="hystmodal__wrap">
<div class="hystmodal__window mobmenu" role="dialog" aria-modal="true">
<button data-hystclose class="hystmodal__close">Close</button>
<div class="mobmenu__wrap">
<a href="/" class="mobmenu__logo"><img src="/img/logo.svg" alt="Логотип" /></a>
<div class="mobmenu__menu">
<div class="mobmenu__h1 berlin">Navigation</div>
<ul>
<li>
<a href="/">Get started</a>
</li>
<li>
<a href="/features/">Features</a>
</li>
<li>
<a href="/community.html">Community</a>
</li>
<li>
<a href="/use-cases/provenusecases.html">Powered by</a>
</li>
<li>
<a href="https://ignite.apache.org/docs/latest/">Docs</a>
</li>
</ul>
</div>
<!-- //mobmenu__menu -->
</div>
<!-- //mobmenu__wrap -->
</div>
<!-- //mobmenu -->
</div>
</div>
<!-- MOBILE MENU END -->
<header class="hdr hdr__blue">
<div class="cmtyhero__wrap flexi">
<button class="hdr__burger" data-menumodal="#jsMenuModal"><img src="/img/menu.svg" alt="" /></button><a class="hdr__logo" href="/"><img class="hdr__logoimg" src="/img/logo-white.svg" alt="" /></a
><a class="button hdr__button" href="/download.html">Download Ignite 2.11 </a>
<nav class="hdrmenu">
<ul class="flexi">
<li><a href="/">Get started</a></li>
<li><a class="hdrmenu__current" href="/features">Features</a></li>
<li><a href="/community.html">Community</a></li>
<li><a href="/use-cases/provenusecases.html">Powered by</a></li>
<li><a href="///ignite.apache.org/docs/latest/">Docs</a></li>
</ul>
</nav>
</div>
</header>
<header class="hdrfloat">
<div class="cmtyhero__wrap flexi">
<button class="hdr__burger" data-menumodal="#jsMenuModal"><img src="/img/menu.svg" alt="" /></button><a class="hdr__logo" href="/"><img class="hdr__logoimg" src="/img/logo.svg" alt="" /></a
><a class="button hdr__button" href="/download.html">Download Ignite 2.11 </a>
<nav class="hdrmenu">
<ul class="flexi">
<li><a href="/">Get started</a></li>
<li><a class="hdrmenu__current" href="/features">Features</a></li>
<li><a href="/community.html">Community</a></li>
<li><a href="/use-cases/provenusecases.html">Powered by</a></li>
<li><a href="/docs.html">Docs</a></li>
</ul>
</nav>
</div>
</header>
<section class="innerhero">
<div class="container innerhero__cont">
<div class="innerhero__main">
<div class="innerhero__pre pb-3">Apache Ignite</div>
<h1 class="h1 innerhero__h1">Service APIs</h1>
<div class="innerhero__descr pt-2 h5">
Deploy your microservices straight on the cluster nodes and<br />
trigger execution from the application code
</div>
<div class="innerhero__action"><a class="button innerhero__button" href="https://ignite.apache.org/docs/latest/index">Start Coding</a></div>
</div>
<img class="innerhero__pic innerhero__pic--servicegrid" src="/img/features/service/service-hero.svg" alt="Distributed In-Memory Cache" />
</div>
</section>
<!-- /.innerhero-->
<section class="service1">
<div class="container">
<h2 class="service1__h2">Apache Ignite Service APIs Overview</h2>
<div class="fz20 service1__text">
With the services API, you can create and deploy arbitrary services on the cluster. Apache Ignite Service APIs Overview For instance, you may want to implement custom counters, hierarchical maps, or anything that you treat as a
microservice.
</div>
</div>
</section>
<!-- /.service1 -->
<section class="nativecode container jsTabWrap">
<header class="blockheader blockheader--spl flexi">
<h2 class="h4 blockheader__left">Use Contemporary Powerful Languages</h2>
<div class="blockheader__right service-subtextvideo fz20"><p>Microservices APIs supported by Java and С#/.NET</p></div>
</header>
<div class="nativecode__tabctrls flexi"><a class="nativecode__link active" href="#" data-tablink="nativeTabJava">Java</a><a class="nativecode__link" href="#" data-tablink="nativeTabNET">C#/.NET</a></div>
<div class="nativecode__tabs">
<div class="nativecode__tab active" data-tab="nativeTabJava">
<pre class="nativecode__codebox"> <code class="java">Ignite ignite = Ignition.start();
//get the services interface associated with all server nodes
IgniteServices services = ignite.services();
//start a node singleton
services.deployClusterSingleton("myCounterService", new MyCounterServiceImpl());
</code></pre>
</div>
<div class="nativecode__tab" data-tab="nativeTabNET">
<pre class="nativecode__codebox"> <code class="csharp">// Broadcast the task to server nodes only.
var compute = ignite.GetCluster().ForServers().GetCompute();
// Each remote server node will execute the custom PrintNodeIdAction task.
compute.Broadcast(new PrintNodeIdAction());
</code></pre>
</div>
</div>
</section>
<!-- /.nativecode-->
<section class="service2">
<div class="container">
<h2 class="service2__h2 h4">Services Deployment Modes</h2>
<div class="service2__text">Deploy single or many instances of a service on the cluster</div>
<div class="service2__block">
<div class="service2item service2item__one flexi">
<div class="service2item__info">
<h3 class="service2item__title">Cluster Singleton</h3>
<p class="service2item__text">The most commonly used feature is to deploy singleton services on the cluster.</p>
<p class="service2item__text">
There is only one instance of the service in the cluster, and Ignite guarantees<br />
that the instance is always available.
</p>
<p class="service2item__text">In case the cluster node on which the service is deployed disconnects, Ignite automatically redeploys the instance to another node.</p>
</div>
<img class="service2item__image1" src="/img/features/service/one-image.svg" alt="one-image" />
</div>
<div class="service2item service2item__two flexi">
<img class="service2item__image2" src="/img/features/service/two-image.svg" alt="two-image" />
<div class="service2item__info service2item__info2">
<h3 class="service2item__title">Node Singleton</h3>
<p class="service2item__text">
You can specify your service as part of the node configuration and start<br />
the service together with the node.
</p>
<p class="service2item__text">
The service is started on each node of the cluster. If the service is a cluster singleton, it is started in the first cluster node, and is redeployed to one <br />of the other nodes if the first node terminates.
</p>
</div>
</div>
</div>
</div>
</section>
<section class="compute2">
<div class="container">
<h2 class="compute2__h2">Benefits Of Apache Ignite Service APIs</h2>
<div class="compute2__grid">
<div class="compute2item">
<div class="compute2-points__item fz20"></div>
<div class="compute2item__block">
<h3 class="fz20 compute2item__title">Load balancing</h3>
<p class="compute2__text">In all cases, other than singleton service deployment, Ignite makes sure that an equal number of services are deployed on each node within the cluster.</p>
<p class="compute2__text">Whenever cluster topology changes, Ignite will re-evaluate service deployments and may re-deploy an already deployed service on another node for better load balancing.</p>
</div>
</div>
<div class="compute2item">
<div class="compute2-points__item fz20"></div>
<div class="compute2item__block">
<h3 class="fz20 compute2item__title">Fault Tolerance</h3>
<p class="compute2__text">Ignite always guarantees that services are continuously available, and are deployed according to the specified configuration, regardless of any topology changes or node crashes.</p>
</div>
</div>
<div class="compute2item">
<div class="compute2-points__item fz20"></div>
<div class="compute2item__block">
<h3 class="fz20 compute2item__title">Hot Redeployment</h3>
<p class="compute2__text">You can update the implementation of a service without stopping the cluster.</p>
<p class="compute2__text">Use Ignite’s DeploymentSpi configuration to re-deploy services without restarting the cluster.</p>
</div>
</div>
</div>
</div>
</section>
<!-- /.compute2-->
<section class="native-bottom container">
<div class="native-bottom__grid">
<article class="nativebotblock">
<h3 class="h4 nativebotblock__title"><img class="nativebotblock__icon" src="/img/features/native-rocket.svg" alt="" /><span>Ready to Start?</span></h3>
<p class="nativebotblock__text">Start coding with Ignite Service APIs</p>
<a class="nativebotblock__link arrowlink" href="https://ignite.apache.org/docs/latest/services/services#re-deploying-services" target="_blank">Performing Service APIs </a>
</article>
<article class="nativebotblock nativebotblock--learn">
<h3 class="h4 nativebotblock__title"><img class="nativebotblock__icon" src="/img/features/native-docs.svg" alt="" /><span>Want to Learn More?</span></h3>
<p class="nativebotblock__text">Check out a special tutorial that shows how to build and deploy microservices with Ignite Service APIs</p>
<a class="nativebotblock__link servicenativelink arrowlink" href="https://www.gridgain.com/resources/blog/implementing-microservices-apache-ignite-service-apis-part-iii" target="_blank"
>Implementing Microservices<br />
With Apache Ignite Service APIs</a
>
</article>
</div>
</section>
<a class="scrollTop" href="#"
><svg class="feather feather-chevron-up" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<polyline points="18 15 12 9 6 15"></polyline></svg
></a>
<script src="/js/vendor/hystmodal/hystmodal.min.js"></script>
<script src="/js/vendor/swiper/swiper-bundle.min.js"></script>
<script src="/js/vendor/waypoints.min.js"></script>
<script src="/js/main.js"></script>
</body>
</html>