Author: dsetrakyan
Date: Fri Feb 6 18:24:57 2015
New Revision: 1657913
URL: http://svn.apache.org/r1657913
Log:
features patch.
Modified:
incubator/ignite/site/branches/sidenav/css/all.css
incubator/ignite/site/branches/sidenav/features.html
incubator/ignite/site/branches/sidenav/scss/all.scss
Modified: incubator/ignite/site/branches/sidenav/css/all.css
URL:
http://svn.apache.org/viewvc/incubator/ignite/site/branches/sidenav/css/all.css?rev=1657913&r1=1657912&r2=1657913&view=diff
==============================================================================
--- incubator/ignite/site/branches/sidenav/css/all.css (original)
+++ incubator/ignite/site/branches/sidenav/css/all.css Fri Feb 6 18:24:57 2015
@@ -7628,261 +7628,6 @@ p {
}
}
-.sidebar {
- display: block;
- padding: 100px 30px;
-}
-.sidebar .nav > li > a {
- padding: 7px 7px;
-}
-.sidebar a {
- display: block;
- font-size: 17px;
- font-weight: 900;
- color: #808080;
- padding-left: 10px;
-}
-.sidebar a:hover {
- color: #f00;
- background-color: transparent;
-}
-.sidebar h1 {
- position: relative;
- color: #fff;
- background-color: #f00;
- padding: 0 10px 0 10px;
-}
-
-.sidebar-sub-menu li {
- margin-top: 2px;
- margin-bottom: 2px;
-}
-.sidebar-sub-menu li a {
- margin-left: 25px;
- font-size: 16px;
- font-weight: 400;
- color: #999;
-}
-
-.main-content {
- display: block;
- padding-top: 30px;
- padding-left: 150px;
-}
-@media (max-width: 992px) {
- .main-content {
- margin: 0;
- padding: 30px 0 0;
- }
-}
-.main-content h1 {
- margin: 80px 0 10px;
-}
-.main-content h2 {
- margin: 0 0 10px;
-}
-.main-content li {
- padding: 0 0 0 20px;
- position: relative;
- position: relative;
- border-color: #373435;
-}
-.main-content li:before {
- position: absolute;
- content: "";
- width: 0;
- height: 0;
- border-color: #373435;
- top: 4px;
- left: 100%;
- margin-left: -1px;
- margin-top: -5px;
- border-top: 5px solid transparent;
- border-bottom: 5px solid transparent;
- border-left: 5px solid #373435;
- border-left-color: inherit;
-}
-.main-content li:before {
- left: 0;
- margin: 0;
-}
-
-.hpc {
- margin: -8px 0 0;
- padding: 80px 0 0;
- position: relative;
- z-index: 4;
-}
-@media (max-width: 992px) {
- .hpc {
- margin: 0;
- padding: 30px 0 0;
- }
-}
-.hpc h2 {
- position: relative;
- padding: 3px 0 12px 40px;
-}
-.hpc h2:after {
- width: 21px;
- height: 25px;
- position: absolute;
- content: "";
- top: 0;
- right: auto;
- bottom: auto;
- left: 0;
- background: url(../images/sprite.png) no-repeat;
-}
-@media (max-width: 767px) {
- .hpc h2 {
- margin: 0;
- }
-}
-
-.clustering {
- margin: -8px 0 0;
- padding: 80px 0 0;
- border-top: 2px solid #ebebeb;
- position: relative;
- z-index: 4;
-}
-@media (max-width: 992px) {
- .clustering {
- margin: 0;
- padding: 30px 0 0;
- }
-}
-.clustering h2 {
- position: relative;
- padding: 3px 0 12px 40px;
-}
-.clustering h2:after {
- width: 21px;
- height: 25px;
- position: absolute;
- content: "";
- top: 0;
- right: auto;
- bottom: auto;
- left: 0;
- background: url(../images/sprite.png) no-repeat;
-}
-@media (max-width: 767px) {
- .clustering h2 {
- margin: 0;
- }
-}
-
-.distributedmessaging {
- margin: -8px 0 0;
- padding: 80px 0 0;
- border-top: 2px solid #ebebeb;
- position: relative;
- z-index: 4;
-}
-@media (max-width: 992px) {
- .distributedmessaging {
- margin: 0;
- padding: 30px 0 0;
- }
-}
-.distributedmessaging h2 {
- position: relative;
- padding: 3px 0 12px 40px;
-}
-.distributedmessaging h2:after {
- width: 21px;
- height: 25px;
- position: absolute;
- content: "";
- top: 0;
- right: auto;
- bottom: auto;
- left: 0;
- background: url(../images/sprite.png) no-repeat;
-}
-@media (max-width: 767px) {
- .distributedmessaging h2 {
- margin: 0;
- }
-}
-
-.distributedevents {
- margin: -8px 0 0;
- padding: 80px 0 0;
- border-top: 2px solid #ebebeb;
- position: relative;
- z-index: 4;
-}
-@media (max-width: 992px) {
- .distributedevents {
- margin: 0;
- padding: 30px 0 0;
- }
-}
-.distributedevents h2 {
- position: relative;
- padding: 3px 0 12px 40px;
-}
-.distributedevents h2:after {
- width: 21px;
- height: 25px;
- position: absolute;
- content: "";
- top: 0;
- right: auto;
- bottom: auto;
- left: 0;
- background: url(../images/sprite.png) no-repeat;
-}
-@media (max-width: 767px) {
- .distributedevents h2 {
- margin: 0;
- }
-}
-
-.managedservices {
- margin: -8px 0 0;
- padding: 80px 0 0;
- border-top: 2px solid #ebebeb;
- position: relative;
- z-index: 4;
-}
-@media (max-width: 992px) {
- .managedservices {
- margin: 0;
- padding: 30px 0 0;
- }
-}
-.managedservices h2 {
- position: relative;
- padding: 3px 0 12px 40px;
-}
-.managedservices h2:after {
- width: 21px;
- height: 25px;
- position: absolute;
- content: "";
- top: 0;
- right: auto;
- bottom: auto;
- left: 0;
- background: url(../images/sprite.png) no-repeat;
-}
-@media (max-width: 767px) {
- .managedservices h2 {
- margin: 0;
- }
-}
-
-.tabs ul.nav.nav-tabs li a {
- color: black;
-}
-.tabs ul.nav.nav-tabs li a:hover {
- color: #f00;
-}
-
/*
âââ ââââââ âââ ââââââ
âââ ââ ââââââ âââ âââââ
ââââ â ââââââââââââââââââ
ââââââ ââââ âââââââââ
ââââ ââ ââââ âââââ â ââââ
âââ âââ ââ ââ â âââââ âââ ââââ
â
Modified: incubator/ignite/site/branches/sidenav/features.html
URL:
http://svn.apache.org/viewvc/incubator/ignite/site/branches/sidenav/features.html?rev=1657913&r1=1657912&r2=1657913&view=diff
==============================================================================
--- incubator/ignite/site/branches/sidenav/features.html (original)
+++ incubator/ignite/site/branches/sidenav/features.html Fri Feb 6 18:24:57
2015
@@ -90,21 +90,191 @@ under the License.
<td class="datagrid"><a href="#datagrid">Data
Grid</a></td>
<td class="computegrid"><a href="#computegrid">Compute
Grid</a></td>
<td class="servicegrid"><a href="#servicegrid">Service
Grid</a></td>
- <td class="streaming"><a
href="#streaming">Streaming</a></td>
+ <td class="streaming"><a
href="#datastreaming">Streaming</a></td>
<td class="hadoop"><a href="#hadoop">Hadoop
Acceleration</a></td>
</tr>
<tr>
- <td class="filesystem"><a
href="#clustering">Distributed File System</a></td>
+ <td class="filesystem"><a
href="#filesystem">Distributed File System</a></td>
<td class="clustering"><a href="#clustering">Advanced
Clustering</a></td>
<td class="messaging"><a href="#messaging">Distributed
Messaging</a></td>
- <td class="events"><a href="#clustering">Distributed
Events</a></td>
- <td class="datastructures"><a
href="#clustering">Distributed Data Structures</a></td>
+ <td class="events"><a href="#events">Distributed
Events</a></td>
+ <td class="datastructures"><a
href="#datastructures">Distributed Data Structures</a></td>
</tr>
</tbody>
</table>
- <p align="center">
- <img src="images/fabric.jpg" alt="image description"
class="img-responsive" width="550px" style="padding-top: 30px">
+ </section>
+
+ <section id="datagrid" class="feature-section">
+ <h2>Data Grid</h2>
+ <p>
+ Ignite In-Memory Data Fabric stores their data in-memory as
opposed to traditional
+ Database Management Systems that utilize disk as their primary
storage mechanism.
+ By utilizing system memory rather than disk, Ignite In-Memory
Data Fabric is orders
+ of magnitude faster than traditional DBMS systems.
</p>
+ <div class="features-heading">Features:</div>
+ <ul class="features-list">
+ <li>Distributed In-Memory Caching</li>
+ <li>Lightning Fast Performance</li>
+ <li>Elastic Scalability</li>
+ <li>Distributed In-Memory Transactions</li>
+ <li>Distributed In-Memory Queue and Other Data Structures</li>
+ <li>Web Session Clustering</li>
+ <li>Hibernate L2 Cache Integration</li>
+ <li>Tiered Off-Heap Storage</li>
+ <li>Distributed SQL Queries with Distributed Joins</li>
+ </ul>
+
+ <div class="code-examples">
+ <div class="examples-heading">Examples:</div>
+ <!-- Nav tabs -->
+ <ul id="datagrid-examples" class="nav nav-tabs">
+ <li class="active"><a href="#datagrid-example-basic"
aria-controls="home" data-toggle="tab">Basic Cache Operations</a></li>
+ <li><a href="#datagrid-example-transactions"
aria-controls="profile" data-toggle="tab">Distributed Transactions</a></li>
+ <li><a href="#datagrid-example-locks"
aria-controls="profile" data-toggle="tab">Distributed Locking</a></li>
+ <li><a href="#datagrid-example-queries"
aria-controls="profile" data-toggle="tab">Cache Queries</a></li>
+ </ul>
+
+ <!-- Tab panes -->
+ <div class="tab-content">
+ <div class="tab-pane active" id="datagrid-example-basic">
+ <br/>
+ <p>
+ Basic cache operations example
+ </p>
+ <pre class="brush:java">
+ try (Ignite ignite =
Ignition.start("examples/config/example-cache.xml")) {
+
+ final IgniteCache<Integer, String> cache
= ignite.jcache("partitioned");
+
+ final int keyCnt = 20;
+
+ // Store keys in cache.
+ for (int i = 0; i < keyCnt; i++)
+ cache.put(i, Integer.toString(i));
+
+ for (int i = 0; i < keyCnt; i++)
+ System.out.println("Got [key=" + i + ",
val=" + cache.get(i) + ']');
+
+ // Remove objects from cache.
+ for (int i = 0; i < keyCnt; i++)
+ cache.remove(i);
+ }
+ </pre>
+ </div>
+ <div class="tab-pane" id="datagrid-example-transactions">
+ <br/>
+ <p>
+ Transaction example demonstrating multiple reads
and puts done atomically
+ </p>
+ <pre class="brush:java">
+ // Clone every object we get from cache, so we can
freely update it.
+ IgniteCache<Integer, Account> cache =
Ignition.ignite().jcache("partitioned");
+
+ try (IgniteTx tx =
Ignition.ignite().transactions().txStart(PESSIMISTIC, REPEATABLE_READ)) {
+ Account acct = cache.get(acctId);
+
+ assert acct != null;
+
+ // Deposit $20 into account.
+ acct.setBalance(acct.getBalance() + 20);
+
+ // Store updated account in cache.
+ cache.put(acctId, acct);
+
+ tx.commit();
+ }
+ </pre>
+ </div>
+ <div class="tab-pane" id="datagrid-example-locks">
+ <br/>
+ <p>
+ Synchronously acquire and release lock by key
+ </p>
+ <pre class="brush:java">
+ final GridCache<String, Integer> cache =
Ignition.ignite.jcache("partitioned");
+
+ cache.lock("Hello");
+
+ try {
+ cache.put("Hello", 11);
+ cache.put("World", 22);
+ }
+ finally {
+ cache.unlock("Hello");
+ }
+ </pre>
+ </div>
+ <div class="tab-pane" id="datagrid-example-queries">
+ <br/>
+ <p>
+ Index definition example
+ </p>
+ <pre class="brush:java">
+ private static class Person implements
Serializable {
+ /** Person ID (indexed). */
+ @CacheQuerySqlField(index = true)
+ private long id;
+
+ /** Organization ID (indexed). */
+ @CacheQuerySqlField(index = true)
+ private long orgId;
+
+ /** First name (not-indexed). */
+ @CacheQuerySqlField
+ private String firstName;
+
+ ...
+ }
+ </pre>
+ <br/>
+ <p>
+ Simple distributed SQL query
+ </p>
+ <pre class="brush:java">
+ try (Ignite ignite =
Ignition.start("examples/config/example-cache.xml")) {
+ GridCache<Long, Person> cache =
ignite.jcache("partitioned");
+
+ // Create query which selects salaries based
on range.
+ CacheQuery<Map.Entry<Long,
Person>> qry =
+
cache.queries().createSqlQuery(Person.class, "salary > ? and salary <= ?");
+
+ // Execute queries for salary ranges.
+ print("People with salaries between 0 and
1000: ", qry.execute(0, 1000).get());
+
+ print("People with salaries between 1000 and
2000: ", qry.execute(1000, 2000).get());
+
+ }
+ </pre>
+ <br/>
+ <p>
+ Distributed query with SQL join between Person and
Organization
+ </p>
+ <pre class="brush:java">
+ try (Ignite ignite =
Ignition.start("examples/config/example-cache.xml")) {
+ GridCache<Long, Person> cache =
ignite.jcache("partitioned");
+
+ // Create query which joins on 2 types to
select people for a specific organization.
+ CacheQuery<Map.Entry<Long,
Person>> qry =
+
cache.queries().createSqlQuery(Person.class, "from Person, Organization " +
+ "where Person.orgId = Organization.id
" +
+ "and Organization.name = ?");
+
+ // Execute queries for find employees for
different organizations.
+ print("Following people are 'Ignite'
employees: ", qry.execute("Ignite").get());
+
+ print("Following people are 'Other' employees:
", qry.execute("Other").get());
+
+ }
+ </pre>
+ </div>
+ </div>
+ </div>
+
+ <div class="feature-links">
+ <a target=wiki
href="http://doc.gridgain.org/latest/Data+Grid">Learn More <i class="fa
fa-angle-double-right"></i></a>
+ <a href="#features">Top <i class="fa
fa-angle-double-up"></i></a>
+ </div>
</section>
<section id="computegrid" class="feature-section">
@@ -128,57 +298,194 @@ under the License.
<div class="examples-heading">Examples:</div>
<!-- Nav tabs -->
<ul id="compute-examples" class="nav nav-tabs">
- <li class="active"><a href="#compute-example-1"
aria-controls="home" data-toggle="tab">Example 1</a></li>
- <li><a href="#compute-example-2" aria-controls="profile"
data-toggle="tab">Example 2</a></li>
+ <li class="active"><a href="#compute-example-broadcast"
aria-controls="home" data-toggle="tab">Broadcast</a></li>
+ <li><a href="#compute-example-runnable"
aria-controls="profile" data-toggle="tab">Runnable</a></li>
+ <li><a href="#compute-example-closure"
aria-controls="profile" data-toggle="tab">Distributed Closure</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
- <div class="tab-pane active" id="compute-example-1">
+ <div class="tab-pane active"
id="compute-example-broadcast">
<pre class="brush:java">
- try (Grid grid =
GridGain.start("examples/config/example-compute.xml")) {
- // Add unordered message listener on all grid
nodes.
-
grid.message().remoteListen("MyUnorderedTopic", new GridBiPredicate<UUID,
String>() {
- @Override public boolean apply(UUID
nodeId, String msg) {
- println("Unordered message [msg=" +
msg + ", fromNodeId=" + nodeId + ']');
-
- return true; // Return true to
continue listening.
+ try (Ignite ignite =
Ignition.start("examples/config/example-compute.xml")) {
+ // Print out hello message on all nodes.
+ ignite.compute().broadcast(
+ new IgniteRunnable() {
+ @Override public void run() {
+ System.out.println(">>> Hello
Node! :)");
+ }
}
- }).get();
-
- // Send unordered messages to all remote nodes.
- for (int i = 0; i < 10; i++)
-
grid.forRemotes().message().send("MyUnorderedTopic", Integer.toString(i));
+ );
}
</pre>
</div>
- <div class="tab-pane" id="compute-example-2">
+ <div class="tab-pane" id="compute-example-runnable">
<pre class="brush:java">
- try (Grid grid = GridGain.start()) {
- // Add ordered message listener on all grid
nodes.
- grid.message().remoteListen("MyOrderedTopic",
new GridBiPredicate<UUID, String>() {
- @Override public boolean apply(UUID
nodeId, String msg) {
- println("Ordered message [msg=" + msg + ",
fromNodeId=" + nodeId + ']');
- return true; // Return true to
continue listening.
- }
- }).get();
+ try (Ignite ignite =
Ignition.start("examples/config/example-compute.xml")) {
+ Collection<IgniteFuture> futs = new
ArrayList<>();
+
+ // Enable asynchronous mode.
+ IgniteCompute compute =
ignite.compute().withAsync();
- // Send ordered messages to all remote nodes.
- for (int i = 0; i < 10; i++)
-
grid.forRemotes().message().sendOrdered("MyOrderedTopic", Integer.toString(i),
0);
+ // Iterate through all words in the sentence
and create callable jobs.
+ for (final String word : "Print words using
runnable".split(" ")) {
+ // Execute runnable on some node.
+ compute.run(new IgniteRunnable() {
+ @Override public void run() {
+ System.out.println(">>> Printing
'" + word + "' on this node from ignite job.");
+ }
+ });
+
+ futs.add(compute.future());
+ }
+
+ // Wait for all futures to complete.
+ for (IgniteFuture<?> f : futs)
+ f.get();
+ }
+ </pre>
+ </div>
+ <div class="tab-pane" id="compute-example-closure">
+ <pre class="brush:java">
+ try (Ignite ignite = Ignition.start() {
+ // Execute closure on all cluster nodes.
+ Collection<Integer> res =
ignite.compute().apply(
+ new IgniteClosure<String, Integer>()
{
+ @Override public Integer apply(String
word) {
+ System.out.println(">>> Printing
'" + word + "' on this node from Ignite job.");
+
+ // Return number of letters in the
word.
+ return word.length();
+ }
+ },
+
+ // Job parameters. Ignite will create as
many jobs as there are parameters.
+ Arrays.asList("Count characters using
closure".split(" "))
+ );
+
+ int sum = 0;
+
+ // Add up individual word lengths received
from remote nodes
+ for (int len : res)
+ sum += len;
}
</pre>
</div>
</div>
</div>
- <div class="screencasts">
- <div class="screencasts-heading">Screencasts:</div>
- <iframe
src="http://player.vimeo.com/video/107643054?title=0&byline=0&portrait=0"
width="650" height="365" frameborder="0" webkitallowfullscreen
mozallowfullscreen allowfullscreen></iframe>
+ <div class="feature-links">
+ <a target=wiki
href="http://doc.gridgain.org/latest/Distributed+Computations">Learn More <i
class="fa fa-angle-double-right"></i></a>
+ <a href="#features">Top <i class="fa
fa-angle-double-up"></i></a>
+ </div>
+ </section>
+
+ <section id="servicegrid" class="feature-section">
+ <h2>Service Grid</h2>
+ <p>
+ Service Grid allow developers to have complete control over
services being deployed on the cluster. It
+ allows you to control how many instances of your service
should be deployed on each grid node.</br><br/>
+ Ignite Service Grid is resilient to topology changes. It
guarantees continuous availability of all
+ deployed services in case of node failures. </br><br/>
+ Service Grid also allows for deployments of arbitrary
user-defined data structures on the grid.
+ </p>
+ <div class="features-heading">Features:</div>
+ <ul class="features-list">
+ <li>Automatically deploy multiple instances of any service on
the grid</li>
+ <li>Automatically deploy any service as a singleton for
cluster, nodes, or affinity key</li>
+ <li>Automatically deploy services on node start-up</li>
+ <li>Fault tolerant deployment of all services </li>
+ <li>Un-deploy any of the deployed services</li>
+ <li>Get information about service deployment topology within
the grid</li>
+ <li>Create service proxy for accessing remotely deployed
managed services</li>
+
+ </ul>
+ <div class="feature-links">
+ <a target=wiki
href="http://doc.gridgain.org/latest/Distributed+Services">Learn More <i
class="fa fa-angle-double-right"></i></a>
+ <a href="#features">Top <i class="fa
fa-angle-double-up"></i></a>
+ </div>
+ </section>
+
+ <section id="datastreaming" class="feature-section">
+ <h2>Streaming</h2>
+ <p>
+ Streaming processing addresses a large family of applications
for which traditional processing methods
+ and disk-based storages, like databases or file systems, fall
short. Such applications are pushing
+ the limits of traditional data processing
infrastructures.<br/><br/>
+ Streaming support allows to query into rolling windows of
coming data, and enable users to answer
+ such questions as âWhat are the 10 most popular products
over last 2 hours?â, or âWhat is the average
+ product price in a certain category for the past
day?â.<br/><br/>
+ Another most common use case for stream processing is the
ability to control and properly pipeline
+ distributed events workflow. As events are coming into the
system at high rates, the processing of
+ events is split into multiple stages and each stage has to be
properly routed within a
+ cluster for processing.
+ </p>
+ <div class="features-heading">Features:</div>
+ <ul class="features-list">
+ <li>Programmatic Querying</li>
+ <li>Customizable Event Workflow</li>
+ <li>At-Least-Once Guarantee</li>
+ <li>Sliding Windows</li>
+ <li>Data Indexing</li>
+ <li>Distributed Streamer Queries</li>
+ <li>Co-Location With In-Memory Data Grid</li>
+
+ </ul>
+ <div class="feature-links">
+ <a target=wiki
href="http://doc.gridgain.org/latest/Data+Streaming">Learn More <i class="fa
fa-angle-double-right"></i></a>
+ <a href="#features">Top <i class="fa
fa-angle-double-up"></i></a>
+ </div>
+ </section>
+
+ <section id="filesystem" class="feature-section">
+ <h2>Distributed File System</h2>
+ <p>
+ One of the unique capabilities of Ignite is a file system
interface to its in-memory data called
+ Ignite File System (IFS). IFS delivers similar functionality
to Hadoop HDFS, including the ability to
+ create a fully functional file system in memory. In fact, IFS
is at the core of
+ Igniteâs In-Memory Hadoop Accelerator. <br/><br/>
+ The data from each file is split on separate data blocks and
stored in cache.
+ Developers can access each fileâs data with a standard Java
streaming API. Moreover, for each part
+ of the file a developer can calculate an affinity and process
the fileâs content on corresponding
+ nodes to avoid unnecessary networking.
+ </p>
+ <div class="features-heading">Features:</div>
+ <ul class="features-list">
+ <li>Provides a typical file system âviewâ on a particular
in-memory cache</li>
+ <li>List directories or get information for a single path</li>
+ <li>Create/move/delete files or directories</li>
+ <li>Write/read data streams into/from files</li>
+ </ul>
+ <div class="feature-links">
+ <a target=wiki
href="http://doc.gridgain.org/latest/GGFS">Learn More <i class="fa
fa-angle-double-right"></i></a>
+ <a href="#features">Top <i class="fa
fa-angle-double-up"></i></a>
</div>
+ </section>
+ <section id="clustering" class="feature-section">
+ <h2>Advanced Clustering</h2>
+ <p>
+ Ignite In-Memory Data Fabric provides one of the most
sophisticated clustering technologies on
+ Java Virtual Machine (JVM).<br/><br/>
+ Ignite allows automatic discovery of nodes whenever they join
or leave the cluster.
+ New nodes become part of the cluster without having to
re-start the whole grid. Similarly, nodes
+ leaving the cluster automatically get disconnected from other
nodes. Auto Discovery helps to scale the
+ cluster when needed, without having to restart the whole
cluster.<br/><br/>
+ Developers can leverage from Igniteâs hybrid cloud support
that allows establishing connection
+ between private cloud and public clouds such as Amazon Web
Services, providing them with best of
+ both worlds.
+ </p>
+ <div class="features-heading">Features:</div>
+ <ul class="features-list">
+ <li>Dynamic topology management</li>
+ <li>Automatic discovery on LAN, WAN, and AWS</li>
+ <li>Automatic âsplit-brainâ (i.e. network segmentation)
resolution</li>
+ <li>Unicast, broadcast, and group-based message exchange</li>
+ <li>On-demand and direct deployment</li>
+ <li>Support for virtual clusters and node groupings</li>
+ </ul>
<div class="feature-links">
- <a target=wiki
href="http://doc.gridgain.org/latest/Distributed+Computations">Learn More <i
class="fa fa-angle-double-right"></i></a>
+ <a target=wiki
href="http://doc.gridgain.org/latest/Basic+Concepts">Learn More <i class="fa
fa-angle-double-right"></i></a>
<a href="#features">Top <i class="fa
fa-angle-double-up"></i></a>
</div>
</section>
@@ -198,7 +505,54 @@ under the License.
<li>Cluster-aware message listener auto-deployment </li>
</ul>
<div class="feature-links">
- <a target=wiki
href="http://doc.gridgain.org/latest/Distributed+Computations">Learn More <i
class="fa fa-angle-double-right"></i></a>
+ <a target=wiki
href="http://doc.gridgain.org/latest/Distributed+Messaging">Learn More <i
class="fa fa-angle-double-right"></i></a>
+ <a href="#features">Top <i class="fa
fa-angle-double-up"></i></a>
+ </div>
+ </section>
+
+ <section id="events" class="feature-section">
+ <h2>Distributed Events</h2>
+ <p>
+ Distributed events functionality allows applications to
receive notifications about cache events
+ occurring in distributed grid environment. Developers can use
this functionality to get notified
+ about remote tasks executions or any cache data changes within
the cluster.<br/><br/>
+ In Ignite, event notifications can be grouped together and
sent in batches and/or timely intervals.
+ Batching notifications helps attain high cache performance and
low latency.
+
+ </p>
+ <div class="features-heading">Features:</div>
+ <ul class="features-list">
+ <li>Subscribe local and remote listeners within grid</li>
+ <li>Enable and disable any event</li>
+ <li>Provide local and remote filters for fine-grained control
over notifications</li>
+ <li>Automatic batching of notifications</li>
+ </ul>
+ <div class="feature-links">
+ <a target=wiki
href="http://doc.gridgain.org/latest/Distributed+Events">Learn More <i
class="fa fa-angle-double-right"></i></a>
+ <a href="#features">Top <i class="fa
fa-angle-double-up"></i></a>
+ </div>
+ </section>
+
+ <section id="datastructures" class="feature-section">
+ <h2>Distributed Data Structures</h2>
+ <p>
+ Ignite allows for most of the data structures from
java.util.concurrent framework to be used
+ in a distributed fashion. For example, you can take
java.util.concurrent.BlockingDeque and add something
+ to it on one node and poll it from another node. Or have a
distributed Primary Key generator,
+ which would guarantee uniqueness on all nodes.
+ </p>
+ <div class="features-heading">Features:</div>
+ <ul class="features-list">
+ <li>Concurrent Map</li>
+ <li>Distributed Queues and Sets</li>
+ <li>AtomicLong</li>
+ <li>AtomicSequence</li>
+ <li>AtomicReference</li>
+ <li>ExecutorService</li>
+ <li>CountDownLatch</li>
+ </ul>
+ <div class="feature-links">
+ <a target=wiki
href="http://doc.gridgain.org/latest/Distributed+Data+Structures">Learn More <i
class="fa fa-angle-double-right"></i></a>
<a href="#features">Top <i class="fa
fa-angle-double-up"></i></a>
</div>
</section>
@@ -247,13 +601,43 @@ under the License.
}
</script>
<script type="text/javascript">
- $('ul#compute-examples a[href="compute-example-1"]').click(function (e) {
+ $('ul#compute-examples a[href="compute-example-basic"]').click(function
(e) {
+ e.preventDefault();
+
+ $(this).tab('show')
+ });
+
+ $('ul#compute-examples
a[href="compute-example-transactions"]').click(function (e) {
+ e.preventDefault();
+
+ $(this).tab('show')
+ });
+
+ $('ul#compute-examples a[href="compute-example-locks"]').click(function
(e) {
+ e.preventDefault();
+
+ $(this).tab('show')
+ });
+
+ $('ul#compute-examples a[href="compute-example-queries"]').click(function
(e) {
+ e.preventDefault();
+
+ $(this).tab('show')
+ });
+
+ $('ul#compute-examples
a[href="compute-example-broadcast"]').click(function (e) {
e.preventDefault();
$(this).tab('show')
});
- $('ul#compute-examples a[href="compute-example-2"]').click(function (e) {
+ $('ul#compute-examples a[href="compute-example-runnable"]').click(function
(e) {
+ e.preventDefault();
+
+ $(this).tab('show')
+ })
+
+ $('ul#compute-examples a[href="compute-example-closure"]').click(function
(e) {
e.preventDefault();
$(this).tab('show')
Modified: incubator/ignite/site/branches/sidenav/scss/all.scss
URL:
http://svn.apache.org/viewvc/incubator/ignite/site/branches/sidenav/scss/all.scss?rev=1657913&r1=1657912&r2=1657913&view=diff
==============================================================================
--- incubator/ignite/site/branches/sidenav/scss/all.scss (original)
+++ incubator/ignite/site/branches/sidenav/scss/all.scss Fri Feb 6 18:24:57
2015
@@ -773,207 +773,6 @@ p {
}
}
}
-.sidebar {
- display: block;
- padding: 100px 30px;
-
- .nav > li > a {
- padding: 7px 7px;
- }
- a {
- display: block;
- font-size: 17px;
- font-weight: 900;
- color: #808080;
- padding-left:10px;
-
- &:hover{
- color: $red;
- background-color: transparent;
- }
- }
- h1 {
- position: relative;
- color: $white;
- background-color: $red;
- padding: 0 10px 0 10px;
- }
-}
-.sidebar-sub-menu {
- li{
- margin-top: 2px;
- margin-bottom: 2px;
- a {
- margin-left: 25px;
- font-size: 16px;
- font-weight: 400;
- color: #999;
- }
- }
-}
-.main-content {
- display: block;
- padding-top: 30px;
- padding-left: 150px;
-
- @media (max-width: $tablet) {
- margin: 0;
- padding: 30px 0 0;
- }
-
- h1{
- margin: 80px 0 10px;
- }
- h2{
- margin: 0 0 10px;
- }
-
- li {
- padding: 0 0 0 20px;
- position: relative;
- @include arrow-lazy(right, 5px, $gray-dark, 4px);
-
- &:before{
- left: 0;
- margin: 0;
- }
- }
-}
-.hpc {
- margin: -8px 0 0;
- padding: 80px 0 0;
- position: relative;
- z-index: 4;
-
- @media (max-width: $tablet) {
- margin: 0;
- padding: 30px 0 0;
- }
- h2{
- position: relative;
- padding: 3px 0 12px 40px;
-
- &:after {
- @include size(21px,25px);
- @include after(0,auto,auto,0);
- background: url(../images/sprite.png) no-repeat;
- }
- @media (max-width: $mobile) {
- margin: 0;
- }
- }
-}
-.clustering {
- margin: -8px 0 0;
- padding: 80px 0 0;
- border-top: 2px solid $gray-light;
- position: relative;
- z-index: 4;
-
- @media (max-width: $tablet) {
- margin: 0;
- padding: 30px 0 0;
- }
- h2 {
- position: relative;
- padding: 3px 0 12px 40px;
-
- &:after {
- @include size(21px,25px);
- @include after(0,auto,auto,0);
- background: url(../images/sprite.png) no-repeat;
- }
- @media (max-width: $mobile) {
- margin: 0;
- }
- }
-}
-.distributedmessaging {
- margin: -8px 0 0;
- padding: 80px 0 0;
- border-top: 2px solid $gray-light;
- position: relative;
- z-index: 4;
-
- @media (max-width: $tablet) {
- margin: 0;
- padding: 30px 0 0;
- }
- h2 {
- position: relative;
- padding: 3px 0 12px 40px;
-
- &:after {
- @include size(21px,25px);
- @include after(0,auto,auto,0);
- background: url(../images/sprite.png) no-repeat;
- }
- @media (max-width: $mobile) {
- margin: 0;
- }
- }
-}
-.distributedevents {
- margin: -8px 0 0;
- padding: 80px 0 0;
- border-top: 2px solid $gray-light;
- position: relative;
- z-index: 4;
-
- @media (max-width: $tablet) {
- margin: 0;
- padding: 30px 0 0;
- }
- h2 {
- position: relative;
- padding: 3px 0 12px 40px;
-
- &:after {
- @include size(21px,25px);
- @include after(0,auto,auto,0);
- background: url(../images/sprite.png) no-repeat;
- }
- @media (max-width: $mobile) {
- margin: 0;
- }
- }
-}
-.managedservices {
- margin: -8px 0 0;
- padding: 80px 0 0;
- border-top: 2px solid $gray-light;
- position: relative;
- z-index: 4;
-
- @media (max-width: $tablet) {
- margin: 0;
- padding: 30px 0 0;
- }
- h2 {
- position: relative;
- padding: 3px 0 12px 40px;
-
- &:after {
- @include size(21px,25px);
- @include after(0,auto,auto,0);
- background: url(../images/sprite.png) no-repeat;
- }
- @media (max-width: $mobile) {
- margin: 0;
- }
- }
-}
-.tabs {
- ul.nav.nav-tabs li{
- a {
- color:black;
-
- &:hover{
- color: $red;
- }
- }
- }
-}
@import "ignite";