{"id":84283,"date":"2018-12-07T10:00:12","date_gmt":"2018-12-07T08:00:12","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=84283"},"modified":"2018-12-06T13:38:44","modified_gmt":"2018-12-06T11:38:44","slug":"apache-ignite-baseline-topology-examples","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html","title":{"rendered":"Apache Ignite Baseline Topology by Examples"},"content":{"rendered":"<p>Ignite Baseline Topology or BLT represents a set of server nodes in the cluster that persists data on disk.<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n<a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/formula.png\"><img decoding=\"async\" class=\"aligncenter wp-image-84292 size-full\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/formula.png\" alt=\"Ignite Baseline Topology\" width=\"558\" height=\"54\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/formula.png 558w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/formula-300x29.png 300w\" sizes=\"(max-width: 558px) 100vw, 558px\" \/><\/a><\/p>\n<p>Where, N1-2 and N5 server nodes are the member of the Ignite clusters with native persistence which enable data to persist on disk. N3-4 and N6 server nodes are the member of the Ignite cluster but not a part of the baseline topology.<\/p>\n<p>The nodes from the baseline topology are a regular server node, that store&#8217;s data in memory and on the disk, and also participates in computing tasks. Ignite clusters can have different nodes that are not a part of the baseline topology such as:<\/p>\n<ul>\n<li>Server nodes that are not used Ignite native persistence to persist data on disk. Usually, they store data in memory or persists data to a 3rd party database or NoSQL. In the above equitation, node N3 or N4 might be one of them.<\/li>\n<li>Client nodes that are not stored shared data.<\/li>\n<\/ul>\n<p>To better understand the baseline topology concept, let\u2019s start at the beginning and try to understand its goal and what problem it helps us solve.<\/p>\n<p>The database like Ignite is designed to support massive data storage and processing. Ignite databases are highly scalable and fault-tolerant. This high scalability feature of the Ignite brings a few challenges for the database administrator, such as: how to manage a cluster? How to add\/remove nodes correctly or how to rebalance data after add\/remove nodes? Because Ignite cluster with a multitude of a node can significantly increase the complexity of the data infrastructure. Let\u2019s look at by the example of Apache Ignite.<\/p>\n<p>Ignite in-memory mode cluster concept is very simple. There are no master or dedicated node in the cluster, and every node is equal. Each node stores a subset of partitions and can be participated in distributed computing or deploy any services. In case of any node failures, user requests served by the other nodes, and the data of the failed nodes will be no longer available. The Ignite cluster management operations are very similar as follows:<\/p>\n<ul>\n<li>To run a cluster, start all nodes.<\/li>\n<li>To expand the cluster topology, add some nodes.<\/li>\n<li>To reduce the cluster topology, remove some nodes.<\/li>\n<\/ul>\n<p>Portions of this article were taken from the book\u00a0<a href=\"https:\/\/leanpub.com\/ignitebook\">The Apache Ignite book<\/a>. If it got you interested, check out the rest of the book for more helpful information.<\/p>\n<p>Data redistributes between nodes automatically. Depending on the backup copy configuration of the caches, data partitions moves from one node to another.<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure4-54.png\"><img decoding=\"async\" class=\"aligncenter wp-image-84293 size-full\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure4-54.png\" alt=\"Ignite Baseline Topology\" width=\"650\" height=\"727\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure4-54.png 650w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure4-54-268x300.png 268w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><\/p>\n<p>In the persistence mode, the node keeps their state even after the restart. During any read operation, data is read from the disk and restores the node state. Therefore, unlike in-memory mode, restart of a node in persistence mode does not need to redistributed data from one node to another. The data during node failure will be restored from the disk. This strategy opens up the opportunities to not only preventing moving a massive amount of data during node failure but also reduce the startup times of the entire cluster after a restart. So, we need to distinguish somehow these nodes that can save their state after restart. In other words, the Ignite baseline topology provides this capability.<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure4-55.png\"><img decoding=\"async\" class=\"aligncenter wp-image-84294 size-full\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure4-55.png\" alt=\"Ignite Baseline Topology\" width=\"647\" height=\"754\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure4-55.png 647w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure4-55-257x300.png 257w\" sizes=\"(max-width: 647px) 100vw, 647px\" \/><\/a><\/p>\n<p>In a nutshell, Ignite baseline topology is a collection of nodes that have been configured for storing persistence data on disk. Baseline topology tracks the history of the topology changes and prevents data discrepancies in the cluster during recovery. Let\u2019s resume the goals of the baseline topology:<\/p>\n<ul>\n<li>Avoid redundant data rebalancing if a node is being rebooted.<\/li>\n<li>Automatically activate a cluster once all the nodes of the baseline topology have joined after a cluster restart.<\/li>\n<li>Prevent the data inconsistencies in the case of split-brain.<\/li>\n<\/ul>\n<p>Apache Ignite provides a command line (CLI) tool that allows to monitor and manage a cluster Baseline topology. In this article, we will review several common scenarios of Baseline topology administration with this tool when Ignite persistence is used.<\/p>\n<p>The .\/control.sh command line script can be found under \/bin folder of an Apache Ignite distribution directory. The primary goal of this script (tool) is to activate\/deactivate and management of a set of nodes that represent the baseline topology. However, this tool is a multi-purpose tool and can be actively used for monitoring the cache states or detecting any transaction locks that could occur in the entire cluster.<\/p>\n<p><b>Preparing the sandbox.<\/b> As we stated before the script that runs the tool is located in the {Ignite_home}\/bin folder and called control.sh. There are versions of the script for Unix (control.sh) and Windows (control.bat). For demonstration purpose I will use the following configurations:<\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<th>Name<\/th>\n<th>Description<\/th>\n<\/tr>\n<tr>\n<td>OS<\/td>\n<td>MacOS, you can use Windows or Linux operating system by your choice.<\/td>\n<\/tr>\n<tr>\n<td>Ignite version<\/td>\n<td>2.6.0 or above.<\/td>\n<\/tr>\n<tr>\n<td>The number of Ignite nodes<\/td>\n<td>3 nodes in a single host.<\/td>\n<\/tr>\n<tr>\n<td>JVM<\/td>\n<td>1.8<\/td>\n<\/tr>\n<tr>\n<td>TCP discovery<\/td>\n<td>Multicast<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>Step 1<\/b>. We are going to run three Ignite nodes on persistence mode in a single host. By defaults, Ignite creates a WORK directory under the IGNITR_HOME folder for storing WAL archives and log files. Download the Ignite distribution and unarchive it in 3 different directories on your operating system, for example\/usr\/ignite\/2.6.0-s1, \/usr\/ignite\/2.6.0-s2, \/usr\/ignite\/2.6.0-s3. You should have a similar folder hierarchy as shown in figure 4.<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-3.png\"><img decoding=\"async\" class=\"aligncenter wp-image-84295 size-full\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-3.png\" alt=\"Ignite Baseline Topology\" width=\"437\" height=\"287\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-3.png 437w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-3-300x197.png 300w\" sizes=\"(max-width: 437px) 100vw, 437px\" \/><\/a><\/p>\n<p>Note that, it is the simplest way to run a few nodes with persistence enable in a single host without any extra configuration. However, you can configure Ignite such a way that allows you to run a few Ignite nodes with different WAL archive folders.<\/p>\n<p><b>Step 2<\/b>. To enable the persistence store, we use the Ignite data storage configuration through Spring. Create an XML file with name ignite-book-baseline.xml and copy the following content in it.<\/p>\n<pre class=\"brush:xml; wrap-lines:false\">&lt;beans xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xmlns=\"http:\/\/www.springframework.org\/schema\/beans\" xsi:schemalocation=\"\r\n        http:\/\/www.springframework.org\/schema\/beans\r\n        http:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd\"&gt;\r\n    &lt;bean class=\"org.apache.ignite.configuration.IgniteConfiguration\" id=\"ignite.cfg\"&gt;\r\n        &lt;property name=\"cacheConfiguration\"&gt;\r\n            &lt;list&gt;\r\n                &lt;bean class=\"org.apache.ignite.configuration.CacheConfiguration\"&gt;\r\n                    &lt;property name=\"name\" value=\"TestCache\"&gt;\r\n                    &lt;property name=\"atomicityMode\" value=\"ATOMIC\"&gt;\r\n                    &lt;property name=\"backups\" value=\"1\"&gt;\r\n                &lt;\/property&gt;&lt;\/property&gt;&lt;\/property&gt;&lt;\/bean&gt;\r\n            &lt;\/list&gt;\r\n        &lt;\/property&gt;\r\n        &lt;!-- Enabling Apache Ignite Persistent Store. --&gt;\r\n        &lt;property name=\"dataStorageConfiguration\"&gt;\r\n            &lt;bean class=\"org.apache.ignite.configuration.DataStorageConfiguration\"&gt;\r\n                &lt;property name=\"defaultDataRegionConfiguration\"&gt;\r\n                    &lt;bean class=\"org.apache.ignite.configuration.DataRegionConfiguration\"&gt;\r\n                        &lt;property name=\"persistenceEnabled\" value=\"true\"&gt;\r\n                        &lt;property name=\"metricsEnabled\" value=\"true\"&gt;\r\n                    &lt;\/property&gt;&lt;\/property&gt;&lt;\/bean&gt;\r\n                &lt;\/property&gt;\r\n            &lt;\/bean&gt;\r\n        &lt;\/property&gt;\r\n\r\n        &lt;property name=\"discoverySpi\"&gt;\r\n            &lt;bean class=\"org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi\"&gt;\r\n                &lt;property name=\"ipFinder\"&gt;\r\n\r\n                    &lt;bean class=\"org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder\"&gt;\r\n                        &lt;property name=\"addresses\"&gt;\r\n                            &lt;list&gt;\r\n                                &lt;value&gt;127.0.0.1:47500..47509&lt;\/value&gt;\r\n                            &lt;\/list&gt;\r\n                        &lt;\/property&gt;\r\n                    &lt;\/bean&gt;\r\n                &lt;\/property&gt;\r\n            &lt;\/bean&gt;\r\n        &lt;\/property&gt;\r\n    &lt;\/bean&gt;\r\n&lt;\/beans&gt;<\/pre>\n<p>Save the file somewhere in your filesystem.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p><b>Step 3<\/b>. We will be starting each Ignite server node one at a time starting with our first Ignite node. Open a terminal and change the IGNITE_HOME directory to the folder where you unarchive the Ignite distribution for the Ignite node 1.<\/p>\n<pre class=\"brush:java\">export IGNITE_HOME=PATH_TO_THE_IGNITE_NODE_ONE\/ignite\/2.6.0-s1<\/pre>\n<p>Now, start the first Ignite node with the following command:<\/p>\n<pre class=\"brush:java\">ignite.sh \/PATH_TO_THE_SPRING_CONFIG_FILE\/ignite\/ignite-book-baseline.xml<\/pre>\n<p>Your output on the console should resemble like this:<\/p>\n<pre class=\"brush:java\">ver. 2.6.0#20180710-sha1:669feacc\r\n2018 Copyright(C) Apache Software Foundation\r\nIgnite documentation: http:\/\/ignite.apache.org Quiet mode.\r\n^-- Logging to file '\/usr\/ignite\/2.6.0-s1\/work\/log\/ignite-f0ef6ecc.0.log'\r\nTopology snapshot [ver=1, servers=1, clients=0, CPUs=8, offheap=3.2GB, heap=1.\\\r\n^-- Node [id=F0EF6ECC-D692-4862-9414-709039FE00CD, clusterState=INACTIVE] Data Regions Configured:\r\n^-- default [initSize=256.0 MiB, maxSize=3.2 GiB, persistenceEnabled=true]<\/pre>\n<p>Inspect the logs displays on the console, log messages confirm that our first Ignite server is up and running and the persistence mode is enabled. Now do the same thing again for the second Ignite node.<\/p>\n<pre class=\"brush:java\">export IGNITE_HOME=PATH_TO_THE_IGNITE_NODE_ONE\/ignite\/2.6.0-s2 \r\nignite.sh \/PATH_TO_THE_SPRING_CONFIG_FILE\/ignite\/ignite-book-baseline.xml<\/pre>\n<p>At this moment, you can see that the 2nd Ignite node started on persistence mode and joined to the cluster. You should see very similar messages in the terminal as shown below.<\/p>\n<pre class=\"brush:java\">[16:13:35] &gt;&gt;&gt; Ignite cluster is not active (limited functionality available). Use contro\\ l.(sh|bat) script or IgniteCluster interface to activate.\r\n[16:13:35] Topology snapshot [ver=2, servers=2, clients=0, CPUs=8, offheap=6.4GB, heap=2.\\ 0GB]\r\n[16:13:35] ^-- Node [id=6DB02F31-115C-41E4-BECC-FDB6980F8143, clusterState=INACTIVE] [16:13:35] Data Regions Configured:\r\n[16:13:35] ^-- default [initSize=256.0 MiB, maxSize=3.2 GiB, persistenceEnabled=true]<\/pre>\n<p>Ignite also warned that the cluster is not activated yet and you have to activate the cluster by using control.sh script. Let\u2019s activate the cluster and creates a few tables for storing data.<\/p>\n<p><b>Step 4<\/b>. Before we activate the cluster, let&#8217;s consider specific features of the control.sh tool. The control.sh script currently supports the following commands:<\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<th>Command<\/th>\n<th>Description<\/th>\n<\/tr>\n<tr>\n<td>&#8211;activate<\/td>\n<td>This command switches the cluster into an active state. In this case, if there is no baseline topology exists in the cluster, a new baseline will be created during activation of the cluster. The new baseline topology will include all of the connected nodes in the cluster topology.<\/td>\n<\/tr>\n<tr>\n<td>&#8211;deactivate<\/td>\n<td>Deactivate the cluster. Limited functionality will be available in this state.<\/td>\n<\/tr>\n<tr>\n<td>&#8211;state<\/td>\n<td>Print the current cluster state.<\/td>\n<\/tr>\n<tr>\n<td>&#8211;baseline<\/td>\n<td>This command is designed to manage the baseline topology. When this command used without any parameters, it prints the current cluster baseline topology information. The following parameters can be used with this command: add, remove, set, and version.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>To invoke a specific command, use the following pattern:<\/p>\n<pre class=\"brush:java\">UNIX\/LINUX\/MacOS\r\n$IGNITE_HOME\/bin\/control.sh<\/pre>\n<p>Now, activate the cluster. Run the following command:<\/p>\n<pre class=\"brush:java\">$IGNITE_HOME\/bin\/control.sh<\/pre>\n<p>If the command succeeds, you should see the following messages in the console.<\/p>\n<pre class=\"brush:java\">Control utility [ver. 2.6.0#20180710-sha1:669feacc] 2018 Copyright(C) Apache Software Foundation\r\nUser: shamim \r\n-------------------------------------------------------------------------------- \r\nCluster activated<\/pre>\n<p>At this moment, you can also use the &#8211;state command to check the current cluster state. The&#8211;state command should return a message that the cluster is activated.<\/p>\n<p><b>Step 5<\/b>. Now, create a table and populate some data. We use the SQLLINE tool to connect to the cluster. Run the following command to start the SQLLINE tool:<\/p>\n<pre class=\"brush:java\">sqlline.sh --color=true --verbose=true -u jdbc:ignite:thin:\/\/127.0.0.1\/<\/pre>\n<p>Create a table named EMP and insert 1000 rows into the table. Use the following DDL script to create the EMP table as follows:<\/p>\n<pre class=\"brush:sql\">CREATE TABLE IF NOT EXISTS EMP\r\n(\r\n empno LONG, ename VARCHAR, job VARCHAR, mgr INTEGER, hiredate DATE,\r\nsal LONG,\r\ncomm LONG,\r\ndeptno LONG,\r\nCONSTRAINT pk_emp PRIMARY KEY (empno)\r\n) WITH \"template=partitioned,CACHE_NAME=EMPcache\";<\/pre>\n<p>Next, use the EMP_001.sql script from the GitHub repository to insert 1000 entries into the table.<\/p>\n<pre class=\"brush:java\">0: jdbc:ignite:thin:\/\/127.0.0.1\/&gt; !run \/PATH_TO_THE_FILE\/the-apache-ignite-book\/chapters\/\\ chapter-10\/baseline\/EMP_001.sql<\/pre>\n<p>The above command inserts 1000 entries into the EMP table or EMPcache. Use the visor CLI tools to see the size of the cache into the entire cluster. Run the command cache -a in the IgniteVisor console. The command should return the following output as shown in figure 5.<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-4.png\"><img decoding=\"async\" class=\"aligncenter wp-image-84296 size-full\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-4.png\" alt=\"Ignite Baseline Topology\" width=\"320\" height=\"94\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-4.png 320w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-4-300x88.png 300w\" sizes=\"(max-width: 320px) 100vw, 320px\" \/><\/a><\/p>\n<p>Take a look at the column named SIZE. This column clarifies the number of entries stored into each node. In our case, one of our nodes contains 504 entries, and the other one contains 496 entries into the EMPcache cache.<\/p>\n<p><b>Step 6<\/b>. So far, we have launched only 2 Ignite nodes and created a baseline topology in the cluster. Let&#8217;s start another Ignite node. Do the same thing again as before for the 3rd Ignite node.<\/p>\n<pre class=\"brush:java\">export IGNITE_HOME=PATH_TO_THE_IGNITE_NODE_ONE\/ignite\/2.6.0-s3 \r\nignite.sh \/PATH_TO_THE_SPRING_CONFIG_FILE\/ignite\/ignite-book-baseline.xml<\/pre>\n<p>Logs on the console should confirm you that the node is started on persistence mode successfully. Moreover, you should get a warning on the console that the local node is not included in Baseline Topology and will not be used for persistent data storage. Now we can play with the &#8211;baseline command. Let\u2019s run the command without any parameter as follows:<\/p>\n<pre class=\"brush:java\">$IGNITE_HOME\/bin\/control.sh --baseline<\/pre>\n<p>The output might be as follows:<\/p>\n<pre class=\"brush:java\">shamim:~ shamim$ control.sh --baseline\r\nControl utility [ver. 2.6.0#20180710-sha1:669feacc] 2018 Copyright(C) Apache Software Foundation\r\nUser: shamim -------------------------------------------------------------------------------- \r\n Cluster state: active\r\nCurrent topology version: 6\r\nBaseline nodes:\r\nConsistentID=1640f655-4065-438c-92ca-478b5df91def, STATE=ONLINE ConsistentID=d8b04bc3-d175-443c-b53f-62512ff9152f, STATE=ONLINE\r\n-------------------------------------------------------------------------------- \r\nNumber of baseline nodes: 2\r\nOther nodes: ConsistentID=3c2ad09d-c835-4f4b-b47a-43912d04d30e\r\nNumber of other nodes: 1<\/pre>\n<p>The above baseline information shows the cluster state, topology version, nodes with their consistent IDs that are part of the baseline topology as well as those that are not part of the baseline topology. Here, the number of baseline nodes is 2, and the baseline consists of our 1st and 2nd Ignite node.<\/p>\n<p>Sometime it may happen that, during the first cluster activation the baseline topology was not created. In such cases, the &#8211;baseline command will return a message like \u201cBaseline nodes not found.\u201d In this situation stop the 3rd node and waits for a few seconds. Then set the baseline topology manually by using the numerical cluster topology version as follows:<\/p>\n<pre class=\"brush:java\">control.sh --baseline version topologyVersion<\/pre>\n<p>In the above command, replace the topologyVersion with the actual topology version. You can find the topology version in any Ignite node console as shown below:<\/p>\n<pre class=\"brush:java\">Topology snapshot [ver=6, servers=3, clients=0, CPUs=8, offheap=9.6GB, heap=3.0GB]<\/pre>\n<p>Pick the latest topology snapshot version from the console.<\/p>\n<p>In this stage, our 3rd Ignite node is not the part of our baseline topology. This node will not be used for persistent data storage. It means, if we will create any new tables and insert data into it, the node will not store any data for the new table. Let\u2019s verify the concept.<\/p>\n<p><b>Step 7<\/b>. Create a new table DEPT with the following DDL script:<\/p>\n<pre class=\"brush:sql\">CREATE TABLE IF NOT EXISTS DEPT (\r\ndeptno LONG,\r\ndname VARCHAR,\r\nloc VARCHAR,\r\nCONSTRAINT pk_dept PRIMARY KEY (deptno)\r\n) WITH \"template=partitioned,CACHE_NAME=DEPTcache\";<\/pre>\n<p>Also, insert 100 departments by using the DEPT.SQL. The DEPT.SQL script is available at the\u00a0<a href=\"https:\/\/github.com\/srecon\/the-%20apache-%20ignite-%20book\/tree\/master\/chapters\/chapter-%2010\/baseline\">GitHub repository<\/a>.<\/p>\n<pre class=\"brush:java\">0: jdbc:ignite:thin:\/\/127.0.0.1\/&gt; !run \/PATH_TO_THE_FILE\/github\/the-apache-ignite-book\/ch\\ apters\/chapter-10\/baseline\/DEPT.sql<\/pre>\n<p>Now, run the command cache -a in the visor console which should print a similar output shown in figure 6.<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-5.png\"><img decoding=\"async\" class=\"aligncenter wp-image-84297 size-full\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-5.png\" alt=\"Ignite Baseline Topology\" width=\"620\" height=\"247\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-5.png 620w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-5-300x120.png 300w\" sizes=\"(max-width: 620px) 100vw, 620px\" \/><\/a><\/p>\n<p>The above figure confirms that the 3rd node does not contain any persistence data. However, the node that not a part of the baseline topology can participate in any in-memory computing.<\/p>\n<p><b>Step 8<\/b>. Next, let&#8217;s add the new empty node to the baseline topology to hold persistence data. Invoke the command &#8211;baseline add<\/p>\n<p>to add the new node to the existing baseline.<\/p>\n<pre class=\"brush:java\">control.sh --baseline add 3c2ad09d-c835-4f4b-b47a-43912d04d30e<\/pre>\n<p>In the above command, replace the consistent id 3c2ad09d-c835-4f4b-b47a-43912d04d30ewith your consistentId of the 3rd Ignite node. After completing the &#8211;baseline add command, a message will confirm that the new baseline topology contains 3 nodes.<\/p>\n<pre class=\"brush:java\">Cluster state: active\r\nCurrent topology version: 10\r\nBaseline nodes:\r\nConsistentID=1640f655-4065-438c-92ca-478b5df91def, STATE=ONLINE \r\nConsistentID=3c2ad09d-c835-4f4b-b47a-43912d04d30e, STATE=ONLINE \r\nConsistentID=d8b04bc3-d175-443c-b53f-62512ff9152f, STATE=ONLINE\r\n-------------------------------------------------------------------------------- Number of baseline nodes: 3\r\nOther nodes not found.<\/pre>\n<p>After forming the new baseline topology from 3 nodes, a data rebalancing will proceed immediately. The new empty node (in our case it\u2019s the 3rd node) will receive his portion of data from other nodes. If you run the cache -a command in Ignite Visor CLI again, you can confirm the data rebalancing. Figure 7 shows the result of the data rebalancing after adding the 3rd node in the baseline topology.<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-6.png\"><img decoding=\"async\" class=\"aligncenter wp-image-84298 size-full\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-6.png\" alt=\"Ignite Baseline Topology\" width=\"622\" height=\"247\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-6.png 622w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-6-300x119.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/figure10-6-620x247.png 620w\" sizes=\"(max-width: 622px) 100vw, 622px\" \/><\/a><\/p>\n<p>Now each node stores almost evenly partition of entries (about 300 entries) for cache EMPcache. However, what will happen if one of the baseline topology nodes will be restarted? Let\u2019s stop one node and try to insert some data into the table EMP.<\/p>\n<p><b>Step 9<\/b>. Stop the 2nd node by hitting the key CRTL+X. Execute the command &#8211;baseline without any parameter to print the state of the baseline topology.<\/p>\n<pre class=\"brush:java\">control.sh --baseline<\/pre>\n<p>The above command will display the current baseline topology status very similar to the next message:<\/p>\n<pre class=\"brush:java\">-------------------------------------------------------------------------------- \r\nCluster state: active\r\nCurrent topology version: 11\r\nBaseline nodes:\r\nConsistentID=1640f655-4065-438c-92ca-478b5df91def, STATE=OFFLINE \r\nConsistentID=3c2ad09d-c835-4f4b-b47a-43912d04d30e, STATE=ONLINE \r\nConsistentID=d8b04bc3-d175-443c-b53f-62512ff9152f, STATE=ONLINE\r\n-------------------------------------------------------------------------------- \r\nNumber of baseline nodes: 3\r\nOther nodes not found<\/pre>\n<p>One of the nodes in offline as expected. Now try to insert some data into the EMP table by SQLLINE tool as follows:<\/p>\n<pre class=\"brush:java\">insert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (2009, 'Sall\\ ie', 'Sales Associate', 96, null, 3619, 34, 78);\r\ninsert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (2010, 'Cori\\ ', 'Human Resources Manager', 65, null, 1291, 86, 57);\r\ninsert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (2011, 'Myrt\\ le', 'VP Quality Control', 88, null, 5103, 21, 48);\r\ninsert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (2012, 'Ches\\ ', 'Desktop Support Technician', 46, null, 6352, 29, 21);<\/pre>\n<p>You should notice that a few inserts statement failed with errors which shown in the next snippet.<\/p>\n<pre class=\"brush:java\">Caused by: class org.apache.ignite.internal.cluster.ClusterTopologyServerNotFoundExceptio\\ n: Failed to map keys for cache (all partition nodes left the grid).\r\nat org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSing\\ leUpdateFuture.mapSingleUpdate(GridNearAtomicSingleUpdateFuture.java:562)<\/pre>\n<p>This error occurred because we have no backup copies for our EMP table. The node that should store the data has been stopped, and Ignite cannot be able to store the data. To avoid such a situation, consider a cache\/table with one backup. If one node fails, it will lose no data. For now, we have a few options:<\/p>\n<ul>\n<li>Reboot the offline node as soon as possible with minimal downtime for preventing data loss.<\/li>\n<li>Remove the offline node from the baseline topology and rebalancing the data.<\/li>\n<\/ul>\n<p><b>Step 10<\/b>. Let&#8217;s remove the offline node from the baseline topology. Execute the following command:<\/p>\n<pre class=\"brush:java\">Caused by: class control.sh --baseline remove 1640f655-4065-438c-92ca-478b5df91def<\/pre>\n<p>After completing the remove command, the baseline topology changed excluding the stopped node. Note that, By removing a node from the baseline topology, you acknowledge that you will no longer be able to use the data stored on that node after its restart. At this moment, no error will occur during data manipulation into the cluster. You can insert new entries or update existing entries into the cache successfully.<\/p>\n<p>Note that, the node that you want to remove from the baseline topology should be disconnected from the cluster before removing from the baseline. Otherwise, the error \u201cFailed to remove nodes from baseline\u201d occurs, specifying the nodes that you have to stop before deleting from the baseline.<\/p>\n<p>In addition to topology management, control.sh script can also be used for monitoring and control a cluster state which is well documented in Ignite site. So, please refer to the control script section of the Ignite documentation for more information.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>Published on Java Code Geeks with permission by Shamim Bhuiyan, partner at our <a href=\"\/\/www.javacodegeeks.com\/join-us\/jcg\/\" target=\"_blank\" rel=\"noopener\">JCG program<\/a>. See the original article here: <a href=\"http:\/\/frommyworkshop.blogspot.com\/2018\/12\/apache-ignite-baseline-topology-by.html\" target=\"_blank\" rel=\"noopener\">Apache Ignite Baseline Topology by Examples<\/a><\/p>\n<p>Opinions expressed by Java Code Geeks contributors are their own.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Ignite Baseline Topology or BLT represents a set of server nodes in the cluster that persists data on disk. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Where, N1-2 and N5 server nodes are the member of the Ignite clusters with native persistence which enable data to persist on disk. N3-4 and N6 server nodes &hellip;<\/p>\n","protected":false},"author":957,"featured_media":112,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[1307],"class_list":["post-84283","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-apache-ignite"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Apache Ignite Baseline Topology by Examples - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Interested to learn about Ignite Baseline Topology? Check our article represents BLT a set of server nodes in the cluster that persists data on disk.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apache Ignite Baseline Topology by Examples - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Interested to learn about Ignite Baseline Topology? Check our article represents BLT a set of server nodes in the cluster that persists data on disk.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-07T08:00:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Shamim Bhuiyan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Shamim Bhuiyan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/apache-ignite-baseline-topology-examples.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/apache-ignite-baseline-topology-examples.html\"},\"author\":{\"name\":\"Shamim Bhuiyan\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/1685ad0945e2c2c7780a265a4174924f\"},\"headline\":\"Apache Ignite Baseline Topology by Examples\",\"datePublished\":\"2018-12-07T08:00:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/apache-ignite-baseline-topology-examples.html\"},\"wordCount\":2431,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/apache-ignite-baseline-topology-examples.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"keywords\":[\"Apache Ignite\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/apache-ignite-baseline-topology-examples.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/apache-ignite-baseline-topology-examples.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/apache-ignite-baseline-topology-examples.html\",\"name\":\"Apache Ignite Baseline Topology by Examples - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/apache-ignite-baseline-topology-examples.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/apache-ignite-baseline-topology-examples.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"datePublished\":\"2018-12-07T08:00:12+00:00\",\"description\":\"Interested to learn about Ignite Baseline Topology? Check our article represents BLT a set of server nodes in the cluster that persists data on disk.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/apache-ignite-baseline-topology-examples.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/apache-ignite-baseline-topology-examples.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/apache-ignite-baseline-topology-examples.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"width\":150,\"height\":150,\"caption\":\"java-interview-questions-answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/apache-ignite-baseline-topology-examples.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Apache Ignite Baseline Topology by Examples\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/1685ad0945e2c2c7780a265a4174924f\",\"name\":\"Shamim Bhuiyan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e704523cfc3333531913a51d8f2709a5e158d3c03dc0e26fe3f5747970a87895?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e704523cfc3333531913a51d8f2709a5e158d3c03dc0e26fe3f5747970a87895?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e704523cfc3333531913a51d8f2709a5e158d3c03dc0e26fe3f5747970a87895?s=96&d=mm&r=g\",\"caption\":\"Shamim Bhuiyan\"},\"description\":\"Dr. Shamim Ahmed Bhuiyan is an IT Architect, SOA solution designer, speaker and Big data evangelist. Independent consultant on BigData and HighLoad systems. Actively participates in development and designing high performance software for IT, telecommunication and banking industry.\",\"sameAs\":[\"http:\\\/\\\/frommyworkshop.blogspot.ru\",\"https:\\\/\\\/ru.linkedin.com\\\/in\\\/shamimbhuiyan\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/shamim-bhuiyan\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Apache Ignite Baseline Topology by Examples - Java Code Geeks","description":"Interested to learn about Ignite Baseline Topology? Check our article represents BLT a set of server nodes in the cluster that persists data on disk.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html","og_locale":"en_US","og_type":"article","og_title":"Apache Ignite Baseline Topology by Examples - Java Code Geeks","og_description":"Interested to learn about Ignite Baseline Topology? Check our article represents BLT a set of server nodes in the cluster that persists data on disk.","og_url":"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2018-12-07T08:00:12+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","type":"image\/jpeg"}],"author":"Shamim Bhuiyan","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Shamim Bhuiyan","Est. reading time":"17 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html"},"author":{"name":"Shamim Bhuiyan","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/1685ad0945e2c2c7780a265a4174924f"},"headline":"Apache Ignite Baseline Topology by Examples","datePublished":"2018-12-07T08:00:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html"},"wordCount":2431,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","keywords":["Apache Ignite"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html","url":"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html","name":"Apache Ignite Baseline Topology by Examples - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","datePublished":"2018-12-07T08:00:12+00:00","description":"Interested to learn about Ignite Baseline Topology? Check our article represents BLT a set of server nodes in the cluster that persists data on disk.","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","width":150,"height":150,"caption":"java-interview-questions-answers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/apache-ignite-baseline-topology-examples.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"Apache Ignite Baseline Topology by Examples"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/1685ad0945e2c2c7780a265a4174924f","name":"Shamim Bhuiyan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e704523cfc3333531913a51d8f2709a5e158d3c03dc0e26fe3f5747970a87895?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e704523cfc3333531913a51d8f2709a5e158d3c03dc0e26fe3f5747970a87895?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e704523cfc3333531913a51d8f2709a5e158d3c03dc0e26fe3f5747970a87895?s=96&d=mm&r=g","caption":"Shamim Bhuiyan"},"description":"Dr. Shamim Ahmed Bhuiyan is an IT Architect, SOA solution designer, speaker and Big data evangelist. Independent consultant on BigData and HighLoad systems. Actively participates in development and designing high performance software for IT, telecommunication and banking industry.","sameAs":["http:\/\/frommyworkshop.blogspot.ru","https:\/\/ru.linkedin.com\/in\/shamimbhuiyan"],"url":"https:\/\/www.javacodegeeks.com\/author\/shamim-bhuiyan"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/84283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/957"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=84283"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/84283\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/112"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=84283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=84283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=84283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}