Learn HazelCast Fundamentals - caching

I wanted to learn Hazelcast. Can someone please suggest me any good site or video to start with.
We wanted to use Hazelcast caching and locks with are .net applications

Here are some good resources:
Hazelcast Getting Started
Hazelcast .Net Client Documentation
Hazelcast .Net Client Feature List
Hazelcast Complete Documentation (Reference Manual)

Please see the resources I can recommend below. Hazelcast Training Center has very useful courses.
https://hazelcast.org/imdg/get-started/
https://training.hazelcast.com/hazelcast-imdg-overview
https://training.hazelcast.com/imap-course
https://github.com/hazelcast/hazelcast-csharp-client/tree/v3.12.3#748-using-lock

Related

What is the best alternative to Thrift API with Cassandra 3.X or AWS managed Cassandra?

Thrift API seems to be no longer supported with higher versions of Cassandra as well as AWS managed Cassandra.
Could someone please let me know what would be the best alternate option to go with?
Our application is built on Spring framework, tightly coupled with Thrift based data models at this point. So, trying to understand if there is any similar API design that could be used. Our plan is to migrate the application to AWS and use managed Cassandra on AWS.
You should absolutely be using CQL. Modern versions of Spring [Boot|Data] use and work very well with the CQL native binary protocol.
Here's a repo we built with Spring Boot that uses Spring Data underneath for access to DataStax Astra DB (managed Serverless Cassandra-as-a-Service). It should be a decent guide for you to see how the repositories and data objects are annotated, built and used.
https://github.com/datastaxdevs/workshop-ecommerce-app
To add to Aaron's response, enterprises definitely needed to get off Thrift years ago. The drivers based on Thrift API have not been maintained for 5-7 years or more so it is a massive risk to your organisation to still be using it. For example, Nate McCall (who was the Cassandra project Chair until this year) retired the Hector client in 2015 in preference for CQL. Netflix did the same for Astyanax in 2016.
For a bit of background, CQL was introduced in Apache Cassandra 0.8 all the way back to 2011 (CASSANDRA-1703) as a replacement for Thrift. It quickly evolved to CQL2 in Cassandra 1.0.
Cassandra 1.2 added CQL3 in 2012 (CASSANDRA-3761) and support for CQL2 was dropped and replaced by CQL3 in C* 2.0 in 2013 (CASSANDRA-5585). C* 2.2 stopped using Thrift in 2015 (CASSANDRA-8358, CASSANDRA-9319).
5 years after CQL was first introduced, Cassandra 4.0 completely removed Thrift in 2016 (CASSANDRA-11115). This should convince any enterprise to migrate to CQL. There hasn't been support for the Thrift API for at least 6 years and this alone should motivate organisations to get off it.
CQL has been around for 10 years now so you shouldn't have any concerns with its maturity. Cheers!
Here is an example of using Amazon Keyspaces with Spring Boot. It uses CQL and the latest drivers. Although spring is suppose to be an abstraction, you will most likely need to refactor your code.
https://github.com/aws-samples/amazon-keyspaces-examples/tree/main/java/datastax-v4/spring

Can Camunda provides same features as Zeebe for Microservices Orchestration?

I have read that Zeebe (https://zeebe.io/) from Camunda is created specifically for Microservices Orchestration. I know there is some difference related to performance.
My question is "Can I achieve the same thing using Camunda what I can do with Zeebe?"
I noticed that Camunda enterprise provides many features that are not provided in the free version or in Zeebe like BPMN deployment, History of previous workflows. I want to get those features for microservice orchestration. My guess is that I will not get if I use Zeebe.
These are multiple questions in one.
Yes, you can do Microservice orchestration with Camunda BPM. As you pointed out correctly, the difference is the architecture of the workflow engine itself, not the use cases you can leverage it for.
Yes, there is a Camunda BPM enterprise edition that has features that are not in the community edition, see: https://camunda.com/enterprise/
Zeebe will provide the same capabilities eventually. Given that it is relatively young it does not have all features of Camunda BPM on this end. But to relate to your example, Operate can show history instances but is also not free for commercial use. Zeebe is also provided as managed service: https://camunda.com/products/cloud/

Are there any good alternatives to Apache Ignite as an In-Memory Data Grid used together with Spring as a distributed cache?

We have a solution which uses the Apache Ignite-provided In-Memory Data Grid as a distributed cache. For newer projects, we ended up using Spring, and as such we wished homogenize our software ecosystem and using Spring for the first solution as well. In addition, we do not use all the features of Ignite to excuse its use (discovery, caching).
Since we currently only use a limited subset of features from Ignite, we are basically looking for a self-managed application-level distributed cache solution (similar to what Ignite provides). This means that dedicated caching infrastructure like Redis, Memcached, etc. is not what we want.
I've researched the topic somewhat and found that there are some possible alternatives like:
Tayzgrid - Last update seems to be quite some time ago, not sure if still actively maintained
Druid - Still incubating, and I have also read that new releases being somewhat broken was not that uncommon
Hazelcast - Seems like the best choice given its maturity and the existence of Spring Data Hazelcast, though I am unsure what the level of support is here.
Has anyone has experience with integrating one of the above IMDGs (aside from Ignite) with Spring Cache? Any pointers in the right direction would be greatly appreciated.
You can use Redisson - Redis Java client with features of
In-Memory Data Grid. It also implements Spring Data support. Here is the documentation.
Hazelcast has official support for Spring Data Hazelcast and also this module has many users as now. I can also suggest you to have a look at the resources below:
Using Hazelcast with Spring Data
Getting Started with Microservices Using Hazelcast IMDG and Spring Boot

Making a simple invoice web app with Spring but which technologies is advisable?

I am going to teach myself some Java EE and making a simple web portal where people can generate their own invoices(pdf lib is needed). Not asking about any code but can you give advice (examples) which technologies I can make use of through the process? I have decided to use "Spring MVC" as the framework + java/Kotlin as a compiler. Some database + server + email+ some micro services?, are needed but which can it be? Thank you!
If you are trying to implement microservices, i prefer spring boot which has embedded tomcat with additional services, and for database you can use open source mysql
if you are also planning for UI stuff and new to it prefer basic Html,css and Bootstrap
If I am there here are my choices. All these choices are based on my past 4 complete end to end web application project experience.
Spring Boot
Using spring boot create micro services. As it has in built tomcat it will be easy to deploy any environment, either local laptop or on premise server or cloud server.
JPA with Hibernate
If you are looking for free you can choose MYSQL. As it has strong community support
almost all the issues you are going to face would have been asked and answered already under stack overflow or somewhere else in the internet. Another think is as you chose JPA you can switch to any database easily.
React
As of now the simplest and one of the fastest ui framework. Also it has strong user support. You can find answer to almost all questions you will have on internet.
Apart from all, you can extend any of these technologies. Happy Coding!!!
You may want to consider using Jaspersoft for generating your pdf files:
https://www.jaspersoft.com/reporting-software
https://community.jaspersoft.com/wiki/introduction-jaspersoft-studio
There may undoubtedly be other solutions out there, but this is the one I'm most used to.

Lucene integration with SDG

We are looking to use the newly added Lucene feature in Pivotal GemFire 9/Apache Geode.
For this, we would need to know if there are any examples for the Lucene integration with Spring Data GemFire?
My apologies. I have not had a whole lot of time to build more complete examples recently.
Although, I do have documentation on SDG's Pivotal GemFire / Lucene Integration support in the Spring Data GemFire Reference Guide here.
Until more detailed examples are added, you can refer to the SDG test suite for the GemFire / Lucene Integration support, here.
The o.s.d.g.search.lucene.LuceneOperationsIntegrationTests class is perhaps the best place to start.
Pivotal GemFire's documentation on "Apache Lucene Integration" starts here.
There is information on the Apache Geode Wiki here (concerning architecture) and here (new proposal for Lucene text searches on nested objects).
And finally, there was a recent blog post by Pivotal on "Using Pivotal GemFire/Apache Geode with Lucene Indexing for Application UI Typeahead", which uses Spring.
Hopefully this will get you started. Know that more is on its way and contributions are always appreciated.
Regards,
-John

Resources