blob: 4cb85d365a3ed888b675a2bc497311e1a23ea1d8 [file] [log] [blame]
extend ../_components/base.pug
block pagetitle
title Apache Ignite Services, Distributed Service Grid
meta(name="description", content="Apache Ignite Service Grid allows to deploy various types of singleton services in the cluster or multiple service instances. Build a fault-tolerant, scalable, high-performant, microservice-based solution with Apache Ignite.")
link(rel="canonical", href="https://ignite.apache.org/features/service-apis.html")
meta(property="og:title", content="Apache Ignite Services, Distributed Service Grid")
meta(property="og:type", content="article")
meta(property="og:url", content="https://ignite.apache.org/features/service-apis.html")
meta(property="og:image", content="/img/og-pic.png")
meta(property="og:description", content="Apache Ignite Service Grid allows to deploy various types of singleton services in the cluster or multiple service instances. Build a fault-tolerant, scalable, high-performant, microservice-based solution with Apache Ignite.")
block css
link(rel="stylesheet", href="../css/native-persistence.css?ver=" + config.version)
link(rel="stylesheet", href="../css/service.css?ver=" + config.version)
link(rel="stylesheet", href="../css/compute-apis.css?ver=" + config.version)
link(rel="stylesheet", href="../js/vendor/highlight/night-owl.css?ver=" + config.version)
script(src="../js/vendor/highlight/highlight.min.js")
script(src="../js/vendor/highlight/java.min.js")
script(src="../js/vendor/highlight/xml.min.js")
script(src="../js/vendor/highlight/csharp.min.js")
block main
- global.pageHref = "features"
- config.hdrClassName = "hdr__blue"
include ../_components/header.pug
section.innerhero
.container.innerhero__cont
.innerhero__main
.innerhero__pre.pb-3 Apache Ignite
h1.h1.innerhero__h1 Service APIs
.innerhero__descr.pt-2.h5.
Deploy your microservices straight on the cluster nodes and<br> trigger execution from the application code
.innerhero__action
a.button.innerhero__button(href="https://ignite.apache.org/docs/latest/index") Start Coding
img.innerhero__pic.innerhero__pic--servicegrid(src="/img/features/service/service-hero.svg", alt="Distributed In-Memory Cache")
// /.innerhero
section.service1
.container
h2.service1__h2 Apache Ignite Service APIs Overview
.fz20.service1__text With the services API, you can create and deploy arbitrary services on the cluster. For instance, you may want to implement custom counters, hierarchical maps, or anything that you treat as a microservice.
// /.service1
section.nativecode.container.jsTabWrap
header.blockheader.blockheader--spl.flexi
h2.h4.blockheader__left Use Contemporary Powerful Languages
.blockheader__right.service-subtextvideo.fz20
p Create scalable microservices in languages such as Java or C#
.nativecode__tabctrls.flexi
a(href="#", data-tablink="nativeTabJava").nativecode__link.active Java
.nativecode__tabs
.nativecode__tab(data-tab="nativeTabJava").active
pre.nativecode__codebox
code.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());
// /.nativecode
section.service2
.container
h2.service2__h2.h4 Services Deployment Modes
.service2__text Deploy single or many instances of a service on the cluster
.service2__block
.service2item.service2item__one.flexi
.service2item__info
h3.service2item__title Cluster Singleton
p.service2item__text The most commonly used feature is to deploy singleton services on the cluster.
p.service2item__text There is only one instance of the service in the cluster, and Ignite guarantees<br> that the instance is always available.
p.service2item__text In case the cluster node on which the service is deployed disconnects, Ignite automatically redeploys the instance to another node.
img.service2item__image1(src="/img/features/service/one-image.svg", alt="one-image")
.service2item.service2item__two.flexi
img.service2item__image2(src="/img/features/service/two-image.svg", alt="two-image")
.service2item__info.service2item__info2
h3.service2item__title Node Singleton
p.service2item__text You can specify your service as part of the node configuration and start<br> the service together with the node.
p.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.
section.compute2
.container
h2.compute2__h2 Benefits Of Apache Ignite Service APIs
.compute2__grid
.compute2item
.compute2-points__item.fz20
.compute2item__block
h3.fz20.compute2item__title Load balancing
p.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.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.
.compute2item
.compute2-points__item.fz20
.compute2item__block
h3.fz20.compute2item__title Fault Tolerance
p.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.
.compute2item
.compute2-points__item.fz20
.compute2item__block
h3.fz20.compute2item__title Hot Redeployment
p.compute2__text You can update the implementation of a service without stopping the cluster.
p.compute2__text Use Ignites DeploymentSpi configuration to re-deploy services without restarting the cluster.
// /.compute2
section.native-bottom.container
.native-bottom__grid
article.nativebotblock
.h4.nativebotblock__title
img(src="/img/features/native-rocket.svg", alt="").nativebotblock__icon
span Ready to Start?
p.nativebotblock__text Start coding with Ignite Service APIs
a.nativebotblock__link.arrowlink(href="https://ignite.apache.org/docs/latest/services/services#re-deploying-services", target="_blank") Performing Service APIs
article.nativebotblock.nativebotblock--learn
.h4.nativebotblock__title
img(src="/img/features/native-docs.svg", alt="").nativebotblock__icon
span Want to Learn More?
p.nativebotblock__text Check out a special tutorial that shows how to build and deploy microservices with Ignite Service APIs
a.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