Wednesday, 31 October 2018

Native JSON and Node 8.11 baseline in Node.js client 0.6.0!!

Infinispan Node.js client 0.6.0 is out now!! :)

As well as updating the client so that it understand the latest Hot Rod protocols in Infinispan 9.4.0.Final, this version comes with native JSON object support.

To make the Node.js client backwards compatible, the client still treats key/value pairs as String by default. If you want to use native JSON objects, you have to explicitly configure the Node.js client to do so (see example).

Starting with this version, we’ve upgraded the base Node version requirement to 8.11, which is the latest stable release branch at the time of writing. With such upgrade, the client no longer needs to use external promise dependency which was know to leak.

If you’re a Node.js user and want to store data remotely in Infinispan server instances, please give the client a go and tell us what you think of it via our forum, via our issue tracker or via Zulip on Infinispan channel.

Cheers Galder

Posted by Galder Zamarreño on 2018-10-31
Tags: release javascript node.js

Monday, 13 August 2018

Node.js client 0.5.0 released with improved stability and better OSX integration

Infinispan Node.js client 0.5.0 was released last week. It comes with much improved stability under heavy load conditions and hence it’s a recommended upgrade for any current users.

On top of that, a configuration option called topologyUpdates (true (default) / false) has been added to disable topology updates. This can be useful when trying to access Infinispan server running within a Docker container on MacOs. Without this option to disable topology updates, Node.js client receives internal Docker IP addresses on first contact which cannot be accessed from outside Docker on MacOs. See this previous blog post for more details.

If you’re a Node.js user and want to store data remotely in Infinispan server instances, please give the client a go and tell us what you think of it via our forum, via our issue tracker or via Zulip on Infinispan channel.

Cheers, Galder

Posted by Galder Zamarreño on 2018-08-13
Tags: release javascript js-client node.js mac

Thursday, 23 February 2017

Node.js client 0.4.0 released with encryption and cross-site failover

We’ve just released Infinispan Node.js Client version 0.4.0 which comes with encrypted client connectivity via SSL/TLS (with optional TLS/SNI support), as well as cross-site client failover.

Thanks to the encryption integration, Node.js Hot Rod clients can talk to Hot Rod servers via an encrypted channel, allowing trusted client and/or authenticated clients to connect. Check the documentation for information on how to enable encryption in Node.js Hot Rod client.

Also, we’ve added the possibility for the client to connect to multiple clusters. Normally, the client is connected to a single cluster, but if all nodes fail to respond, the client can failover to a different cluster, as long as one or more initial addresses have been provided. On top of that, clients can manually switch clusters using switchToCluster and switchToDefaultCluster APIs. Check documentation for more info.

On top of that, we’ve applied several bug fixes that further tighten the inner workings of the Node.js client.

If you’re a Node.js user and want to store data remotely in Infinispan Server instances, please give the client a go and tell us what you think of it via our forum, via our issue tracker or via IRC on the #infinispan channel on Freenode.

Posted by Galder Zamarreño on 2017-02-23
Tags: release security xsite javascript js-client node.js

Thursday, 30 June 2016

DevNation Live Blog: Building Reactive Applications with Node.js and Red Hat JBoss Data Grid

Last Tuesday I gave a talk at DevNation 2016 on building Reactive Applications with Node.js and Red Hat JBoss Data Grid. The slides for it will be uploaded to the DevNation site shortly, but for those who want to play around with the application demoed in the talk, you can find the code and instructions in this repository.

Please find below review as written by Rob Terzi:

DevNation Live Blog: Building Reactive Applications with Node.js and Red Hat JBoss Data Grid

Posted by Rob Terzi on June 29, 2016

At DevNation, Red Hat’s Galder Zamarreño gave a talk with a live demo, Building reactive applications with Node.js and Red Hat JBoss Data Grid. The demo consisted of building an event-based three tier web application using JBoss Data Grid (JDG) as the data layer, an event manager running on Node.js, and a web client. Recently, support for Node.js clients was added to JDG, opening up the performance of a horizontally scalable in-memory data grid, to reactive web and mobile applications.

JDG is capable of processing and storing real-time streams of data, while maintaining very fast response times. It does this by using the memory available from a dynamically scalable grid of machines. Galder described JDG as a four-in-one package capable of being:

  • a distributed cache.

  • a high performance NoSQL primary data store.

  • an event-driven data store, particularly for real time event processing.

  • a big data and Internet of Things (IoT) data store.

The three-tiered web app in the demo consisted of:

  • A web client written in Elm, which is a functional language that compiles to JavaScript.  It is statically typed, which the presenter feels leads to well architected code. Elm competes with platforms such as React and Angular. Any of those other platforms could be used, but Galder chose Elm for the live demo, particularly given the useful error messages the compiler generates as a virtue of using a statically typed language.

  • An event manager running on Node.js using Express.js.

  • JBoss Data Grid as the data store.  Three nodes were used, running on the same laptop. Each element was guaranteed to be stored in two nodes, providing redundancy for fail over.

Node.js based applications have become very popular. Many use JavaScript on all three tiers, including NoSQL data stores. However, most of those data stores can’t match the scalability and response times of JDG. Traditionally, developers have needed to use Java to take advantage of JBoss Data Grid. The new fully asynchronous Node.js interface to JBoss Data Grid should enable developers to build some truly interesting next-generation reactive applications.

You can download JBoss Data Grid from developers.redhat.com. If you’d like to get involved, join the open source community at infinispan.org.

Posted by Galder Zamarreño on 2016-06-30
Tags: conference javascript devnation

Monday, 20 June 2016

DevNation 2016: Galder Zamarreño on “Building reactive applications with Node.js and Red Hat JBoss Data Grid”

Earlier this month I did an interview with the DevNation 2016 organizers to talk about my talk on forthcoming talk on building reactive applications with Node.js and JBoss Data Grid, the Infinispan version for which Red Hat provides professional support, certified integration, patches…​etc.

The talk will be happen next Tuesday, 28th June at 3:30pm PDT, so if you’re in DevNation and want to find out more about Infinispan and our new Node.js Javascript client, make sure you join us then!

Building reactive applications with Node.js and Red Hat JBoss Data Grid

JBoss Data Grid is a distributed in-memory key/value data store from Red Hat, which can be used for caching, temporary and permanent storage. Although Java developers were its primary audience initially, the team has been expanding its appeal to C++, C# and even Javascript developers.

The latest JBoss Data Grid release includes a fully asynchronous Node.js client for interacting with JBoss Data Grid servers and my talk at DevNation is focused on how Javascript developers can make the most of the client to cache or store their data.

The talk has been designed around a web application that promotes JBoss Data Grid talks in forthcoming conferences, user groups… etc. The application will contain a Node.js component whose job will be to interact with the backend JBoss Data Grid servers to store and retrieve data, as well as receiving events when new information has been added to the backend. Through the live coding of this application, the audience will get an understanding of how to interact with the newly released Node.js JBoss Data Grid client, and after the talk they’ll have access to the code to be able to try it themselves.

Tuesday 3:30 p.m. to 4:30 p.m. Room 133

galder

About the presenter:

This will be my first time speaking at DevNation and I’m really excited about it because it brings together speaks and attendees not only from the Java/JVM space, but from other important developer communities such as Javascript.

Although I started as a Java developer, over the past decade I’ve become more and more interested in other programming languages, in particular functional programming languages such as Scala and Javascript, which I’ve been able to apply directly at my job.

These days I’m hugely interested by the purely functional ones such as Haskell, Elm or Purescript because the lack of mutability makes their solutions both elegant and easier to reason about. I’m also keeping a close eye as well on the Erlang ecosystem, e.g. Elixir, because I feel that the predictable latency offered by the Erlang VM is something that it’s not so easy to achieve in Java Virtual Machine.

I think learning other programming languages is one of the best things a developer can do, because it opens your mind to different points of view, different ways to solve problems, and widens the solution space.

Posted by Galder Zamarreño on 2016-06-20
Tags: conference javascript devnation

Monday, 06 June 2016

Node.js Javascript Client 0.3.0 out with improved stability and API docs

Earlier today Infinispan Javascript client version 0.3.0 was released whose primary focus has been stabilising and tightening existing functionality, deprecating some older methods, and documentation:

  • Multiple fixes around remote execution, remote listeners and iteration.

  • Improved failover handling logic to correctly deal with socket error and remote disconnect situations.

  • Removed getVersioned, getBulk and getBulkKeys methods since these are deprecated in favour of getWithMetadata and getAll. The examples in the README file have been updated.

  • Added API documentation for Javascript client. Online API docs for Javascript client can be found here.

If you’re a Javascript user and want to store data remotely in Infinispan Server instances, please give the client a go and tell us what you think of it via our forum, via our issue tracker or via IRC on the #infinispan channel on Freenode.

Cheers,

Galder

Posted by Galder Zamarreño on 2016-06-06
Tags: release javascript nodejs

Wednesday, 23 March 2016

Javascript client 0.2.0 arrives with Cluster Topology support

Today Infinispan Javascript client version 0.2.0 was released, which includes:

  • Updated README file containing simpler individual examples on each main feature set.

  • Remote execution - Users can now load remote scripts into Infinispan Servers using the addScript method and these scripts can be remotely executed via the execute operation. An example of this can be found in the README file.

  • Server-side statistic can now be retrieved using the stats operation. Again, an example can be found in the README file.

  • The client now supports cluster topology updates, so it can handle remote notifications of server side topology changes, including addition or removal of server-side cluster nodes.

  • Using the cluster topology information and hashing algorithms, the client can now apply the same Consistent-Hash algorithm servers use to distribute data around the cluster, and hence can immediately locate the server where a particular key lives.

If you’re a Javascript user and want to store data remotely in Infinispan Server instances, please give the client a go and tell us what you think of it via our forum, via our issue tracker or via IRC on the #infinispan channel on Freenode.

Cheers,

Galder

Posted by Galder Zamarreño on 2016-03-23
Tags: release javascript js-client

Thursday, 18 February 2016

Infinispan Javascript client 0.1.0 is out!

Over the past few months we’ve been working on a Javascript client based on Node.js which can talk to Infinispan Server instances and today we can announce the first public release, version 0.1.0 which can easily be installed with the following command:

$ npm install infinispan

The client is still under heavy development but here’s a summary of its current capabilities:

  • Full CRUD operation support, e.g. put, get, remove, containsKey…​etc.

  • Compare-And-Swap operation support, e.g. putIfAbsent, getWithVersion/getWithMetadata, replace, replaceWithVersion, removeWithVersion…​etc.

  • Expiration with absolute lifespan or relative maximum idle time is supported. This expiration parameters as passed as optional parameters to create/update methods and they support multiple time units, e.g. \{lifespan: '1m', maxIdle: '1d'}.

  • Update and remove operations can optionally return previous values by passing in\{previous: true} option.

  • Bulk store/retrieve/delete operations are supported, e.g. putAll, getAll, getBulk, getBulkKeys, clear…​etc.

  • Cache contents can be iterated over using the iterator method.

  • Cache size can be determined using the size method.

  • Remote cache listeners can be plugged using the addListener method, which takes the event type (create, modify, remove or expiry) and the function callback as parameter.

Sample code showing how to use the Infinispan Javascript client can be found in the client’s README file.

In future versions we’ll be adding remote execution support as well as cluster topology handling, including consistent-hash based request routing.

If you’re a Javascript user and want to store data remotely in Infinispan Server instances, please give the client a go and tell us what you think of it via our forum, via our issue tracker or via IRC on the #infinispan channel on Freenode.

Cheers,

Galder

Posted by Galder Zamarreño on 2016-02-18
Tags: release javascript js-client

Friday, 16 October 2015

Stored Script Execution

One of the questions we get asked a lot is: when will I be able to run Map/Reduce and DistExec jobs over HotRod.

I’m happy to say: now !

Infinispan Server comes with Stored Script Execution which means that remote clients can invoke named scripts on the server. If you’re familiar with the concept of Stored Procedures of the SQL world, then you already have an idea of what this feature is about. The types of scripts you can run are those handled by Java’s scripting API. Out of the box this means Javascript (which uses either the Nashorn engine on JDK 8+), but you can add many more (Groovy, Scala, JRuby, Jython, Lua, etc). Scripts are stored in a dedicated script cache ("___scriptcache") so that they can be easily created/modified using the standard cache operations (put/get/etc.).

Here’s an example of a very simple script:

The script above just obtains the default cache, retrieves the value with key 'a' and returns it (the Javascript script engine uses the last evaluated expression of a script as its return value). The first line of the script is special: it looks like a comment, but, like the first line in Unix shell scripts, it actually provides instructions on how the script should be run in the form of properties.

The mode property instructs the execution engine where we want to run the script: local for running the script on the node that is handling the request and distributed for running the script wrapped by a distributed executor. Bear in mind that you can certainly use clustered operations in local mode.

Scripts can also take named parameters which will "appear" as bindings in the execution scope.

Invoking it from a Java HotRod client would look like this:

Server-side scripts will be evolving quite a bit in Infinispan 8.1 where we will add support for the broader concept of server-side tasks which will include both scripts and deployable code which can be invoked in the same way, all managed and configured by the upcoming changes in the Infinispan Server console.

Posted by Tristan Tarrant on 2015-10-16
Tags: hotrod remote scripting javascript server nashorn

News

Tags

JUGs alpha as7 asymmetric clusters asynchronous beta c++ cdi chat clustering community conference configuration console data grids data-as-a-service database devoxx distributed executors docker event functional grouping and aggregation hotrod infinispan java 8 jboss cache jcache jclouds jcp jdg jpa judcon kubernetes listeners meetup minor release off-heap openshift performance presentations product protostream radargun radegast recruit release release 8.2 9.0 final release candidate remote query replication queue rest query security spring streams transactions vert.x workshop 8.1.0 API DSL Hibernate-Search Ickle Infinispan Query JP-QL JSON JUGs JavaOne LGPL License NoSQL Open Source Protobuf SCM administration affinity algorithms alpha amazon anchored keys annotations announcement archetype archetypes as5 as7 asl2 asynchronous atomic maps atomic objects availability aws beer benchmark benchmarks berkeleydb beta beta release blogger book breizh camp buddy replication bugfix c# c++ c3p0 cache benchmark framework cache store cache stores cachestore cassandra cdi cep certification cli cloud storage clustered cache configuration clustered counters clustered locks codemotion codename colocation command line interface community comparison compose concurrency conference conferences configuration console counter cpp-client cpu creative cross site replication csharp custom commands daas data container data entry data grids data structures data-as-a-service deadlock detection demo deployment dev-preview development devnation devoxx distributed executors distributed queries distribution docker documentation domain mode dotnet-client dzone refcard ec2 ehcache embedded embedded query equivalence event eviction example externalizers failover faq final fine grained flags flink full-text functional future garbage collection geecon getAll gigaspaces git github gke google graalvm greach conf gsoc hackergarten hadoop hbase health hibernate hibernate ogm hibernate search hot rod hotrod hql http/2 ide index indexing india infinispan infinispan 8 infoq internationalization interoperability interview introduction iteration javascript jboss as 5 jboss asylum jboss cache jbossworld jbug jcache jclouds jcp jdbc jdg jgroups jopr jpa js-client jsr 107 jsr 347 jta judcon kafka kubernetes lambda language learning leveldb license listeners loader local mode lock striping locking logging lucene mac management map reduce marshalling maven memcached memory migration minikube minishift minor release modules mongodb monitoring multi-tenancy nashorn native near caching netty node.js nodejs non-blocking nosqlunit off-heap openshift operator oracle osgi overhead paas paid support partition handling partitioning performance persistence podcast presentation presentations protostream public speaking push api putAll python quarkus query quick start radargun radegast react reactive red hat redis rehashing releaase release release candidate remote remote events remote query replication rest rest query roadmap rocksdb ruby s3 scattered cache scripting second level cache provider security segmented server shell site snowcamp spark split brain spring spring boot spring-session stable standards state transfer statistics storage store store by reference store by value streams substratevm synchronization syntax highlighting tdc testing tomcat transactions tutorial uneven load user groups user guide vagrant versioning vert.x video videos virtual nodes vote voxxed voxxed days milano wallpaper websocket websockets wildfly workshop xsd xsite yarn zulip

back to top