<!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>
