Tuesday, 5 November 2019
Infinispan blog migration
The Infinispan blog has a new home. This site will no longer be updated.
Labels:
blogger
Monday, 15 July 2019
Infinispan 10.0.0.Beta4
Dear Infinispan users,
it has been a while since our last release and quite a few things have been cooking in the Infinispan furnace. Bear in mind that the list below should just serve as a summary and that dedicated blogs, documentation and examples will appear in the near future.
The new server deserves its own dedicated post, but its main features are:
The Persistence marshaller is now based on ProtoBuf allowing for long-term compatibility of data stored in memory and in cache stores.
The Store Migrator has been updated to allow migration from Infinispan 8.x/9.x cache stores to the new format (ISPN-10276)
The new API includes a new API module and a new KeyValueStore Hot Rod client where search, continuous search and Key Value store methods are included.
If you are curious you can read the detailed release notes including all fixed issues.
As usual you can ask questions on the forum, StackOverflow and interactively on our Zulip Chat.
Please report any bugs you find on our Issue Tracker.
Going back to our three-week schedule, our next release will be Beta5, three weeks from now.
it has been a while since our last release and quite a few things have been cooking in the Infinispan furnace. Bear in mind that the list below should just serve as a summary and that dedicated blogs, documentation and examples will appear in the near future.
Server
Since 5.3, our server has been built on top of WildFly (JBoss AS7 at the time). WildFly gave us a very solid base, including integration with a lot of useful components (security, datasources, management etc) but it also forced us to maintain a large amount of integration code. We have therefore decided to start from a much leaner base to build the new server which, internally we've been calling ServerNG, but which we're now releasing as "Infinispan Server". The old WildFly-based server is still available, but it should be considered "legacy" and will no longer receive any feature enhancements.The new server deserves its own dedicated post, but its main features are:
- smaller size (36MB vs 130MB)
- smaller memory footprint (20MB heap usage at boot vs 40MB)
- single-port: the Hot Rod, REST and management endpoint are now served through a single-port (11222) with automatic protocol detection between HTTP/1.1, HTTP/2 and Hot Rod. The memcached endpoint is handled separately since we don't implement the binary protocol yet.
- security implemented using WildFly Elytron currently supporting PLAIN, DIGEST-MD5, SCRAM, EXTERNAL mechs for Hot Rod, BASIC, DIGEST, CLIENT_CERT for REST/HTTP (OAuth/JWT/GS2/GSSAPI/SPNEGO will be coming in the next releases)
- the server configuration extends the embedded configuration scheme
- caches/counters are created and managed dynamically through Hot Rod / REST.
Marshalling
Infinispan's marshalling has received a significant overhaul and it is now split into three distinct marshallers: Internal, Persistence and User (ISPN-7409 ISPN-9621)The Persistence marshaller is now based on ProtoBuf allowing for long-term compatibility of data stored in memory and in cache stores.
The Store Migrator has been updated to allow migration from Infinispan 8.x/9.x cache stores to the new format (ISPN-10276)
Core changes
Infinispan's internal dependency-injection has been completely rewritten so that factories, components and dependencies are discovered and resolved at compile time instead of using runtime reflection. This, together with the marshalling changes and recent JGroups changes, paves the way for usage and native compilation with Quarkus.REST
The REST API is continuing its overhaul with the following additions to the v2 API- Cluster Resource (ISPN-10268)
- Cache Resource (ISPN-9772 ISPN-10392)
- Counter Resource (ISPN-10151 ISPN-10152)
Reactive API
The first implementation of our new Reactive API have been merged. This is still work in progress and the API will receive major changes until the Final release.The new API includes a new API module and a new KeyValueStore Hot Rod client where search, continuous search and Key Value store methods are included.
Cross-Site Replication
Async mode cross-site replication received 2 major improvements:- async mode is now able to detect disconnections between sites and bring the site offline based on <take-offline> configuration (ISPN-10180)
- track and exposes the average replication times for asynchronous requests (ISPN-9457)
Non-blocking
- Non-blocking Hot Rod authentication (ISPN-9841)
- Non-blocking REST endpoint (ISPN-10210)
- Update internal remote listener code to support non blocking (ISPN-9716)
- Update internal embedded listeners to be non blocking (ISPN-9715)
Removal/deprecations
A new major release is also an opportunity to do some house cleaning.Deprecations
- Deprecate GridFileSystem and org.infinispan.io stream implementations (ISPN-10298)
- Deprecated Total Order transaction mode (ISPN-10259)
Removals
- AtomicMap implementations removed (ISPN-10230)
- Remove deprecated org.infinispan.io classes (ISPN-10297)
- Remove org.infinispan.tools.ConfigurationConverter (ISPN-10231)
- Remove compatibility mode (ISPN-10370)
If you are curious you can read the detailed release notes including all fixed issues.
As usual you can ask questions on the forum, StackOverflow and interactively on our Zulip Chat.
Please report any bugs you find on our Issue Tracker.
Going back to our three-week schedule, our next release will be Beta5, three weeks from now.
Friday, 12 July 2019
Infinispan Operator 0.3.0 expands container and security configuration!
Infinispan Operator 0.3.0 is now available with expanded configuration and security options:
With this release of the Infinispan Operator, you can configure explicit CPU and memory limits for individual containers. The defaults are 0.5 CPUs and 512Mi of memory.
The Operator also lets you pass extra JVM options, which is useful for tracking native memory consumption or extra GC logging parameters.
Starting with 0.3.0, credentials are automatically generated for data connector and management users when you instantiate the Infinispan Operator.
The default usernames are developer and admin for the data connector user and management user, respectively.
Generated passwords are stored in Kubernetes Secret instances. You can extract the passwords as follows:
For convenience, the default usernames are also stored in the secret. Using the jq command line tool, you can inspect both the username and password values with a single command:
If you want to set custom credentials for the data connector and management users, create Kubernetes Secret instances as follows:
When using a Credentials type authentication, the referenced secrets must contain username and password fields.
The easiest way to get started with the Infinispan Operator is via the simple tutorial. The Operator is compatible with vanilla Kubernetes environments, such as Minikube, as well as Red Hat OpenShift.
Install the Infinispan Operator directly from the Operator Hub, which is available out of the box on all OpenShift 4 versions. If you're using a vanilla Kubernertes environment, you might need to install the Operator Lifecycle Manager before you can install via the Operator Hub.
The Infinispan Operator is also included in the community for Kubernetes Operators is available from operatorhub.io.
The Operator configuration does not yet provide all capabilities available for Infinispan servers. We're working through a process of configuration specification that distills the server configuration into a simple, easy to use, set of configuration options. The current proposal is being discussed openly here.
Infinispan 10 brings a brand new server that's no longer based on WildFly. The Operator 0.x series will remain focused on Infinispan 9.x server, with Operator 1.x series focusing on Infinispan 10 and onwards.
Cheers,
Galder
Container Configuration
With this release of the Infinispan Operator, you can configure explicit CPU and memory limits for individual containers. The defaults are 0.5 CPUs and 512Mi of memory.
The Operator also lets you pass extra JVM options, which is useful for tracking native memory consumption or extra GC logging parameters.
Security Configuration
Starting with 0.3.0, credentials are automatically generated for data connector and management users when you instantiate the Infinispan Operator.
The default usernames are developer and admin for the data connector user and management user, respectively.
Generated passwords are stored in Kubernetes Secret instances. You can extract the passwords as follows:
For convenience, the default usernames are also stored in the secret. Using the jq command line tool, you can inspect both the username and password values with a single command:
If you want to set custom credentials for the data connector and management users, create Kubernetes Secret instances as follows:
When using a Credentials type authentication, the referenced secrets must contain username and password fields.
Trying It Out!
The easiest way to get started with the Infinispan Operator is via the simple tutorial. The Operator is compatible with vanilla Kubernetes environments, such as Minikube, as well as Red Hat OpenShift.
Available via Operator Hub
Install the Infinispan Operator directly from the Operator Hub, which is available out of the box on all OpenShift 4 versions. If you're using a vanilla Kubernertes environment, you might need to install the Operator Lifecycle Manager before you can install via the Operator Hub.
The Infinispan Operator is also included in the community for Kubernetes Operators is available from operatorhub.io.
What's Next?
The Operator configuration does not yet provide all capabilities available for Infinispan servers. We're working through a process of configuration specification that distills the server configuration into a simple, easy to use, set of configuration options. The current proposal is being discussed openly here.
Infinispan 10 brings a brand new server that's no longer based on WildFly. The Operator 0.x series will remain focused on Infinispan 9.x server, with Operator 1.x series focusing on Infinispan 10 and onwards.
Cheers,
Galder
Labels:
kubernetes,
openshift,
operator,
release
Monday, 15 April 2019
Infinispan on tour, March-April 2019
Infinispan has been on tour!!
Breizh Camp 2019 the 22th March, Rennes (France)
Greach Conf 2019, 29th March, Madrid (Spain)
Voxxed Days Milano 2019, 13th April, Milan (Italy)
Breizh Camp
2019 has been BreizhCamp's 9th - Code Busters - edition and they sold-out the conference in a matter of hours (wow).
I did not have the time to attend any talk. Unfortunately, due to my personal schedule, I arrived on Thursday night, and I was presenting on Friday after lunch. This was the second time I was giving this presentation, but I did lot's of changes since the first time, including:
I did not have the time to attend any talk. Unfortunately, due to my personal schedule, I arrived on Thursday night, and I was presenting on Friday after lunch. This was the second time I was giving this presentation, but I did lot's of changes since the first time, including:
- Big upgrades to my presentation look and feel
- Harry-Potterize my Vert.x Clustered + Infinispan Embedded. An original demo containing more examples of Vert.x and Infinispan can be found here.
- Creating and live-coding an Infinispan Client/Server + Quarkus Demo
- Using Infinispan Operator to create an Infinispan Cluster in Openshift 4
On Friday morning I was stressed and I ran my presentation at the hotel. I arrived at the venue, delivered my talk and headed back to Paris. I deeply regretted not spending more time hanging out with other speakers and attendees, but I really couldn't make it this time :(
Greach Conf
Greach Conf is a lovely conference held in Madrid (Spain) for several years now. A 100% international conference, it has been organized by the Groovy community.
This year they have changed the conference lineup adding an Android/Testing track and focusing on a bigger spectrum of technologies around the JVM.
I learned a bunch of new things, including content related to SDKMan!, Gradle, the future of Grails and of course, Micronaut. As the principal maintainer of Spring-Boot and Infinispan integration, Micronaut felt new and familiar at the same time. I really enjoyed the workshop delivered by Alvaro Sánchez who will be in Devoxx France this week. The framework is really impressive. Give it a try!
You will find on Twitter a complete thread about my Greach Conf impressions:
Coming back to Paris after 3 amazing days in Madrid as speaker and attendee at @greachconf #greach opening a thread 👇🏻— Katia Aresti (@karesti) 30 mars 2019
Voxxed Days Milano
Voxxed Days Milano (Italy) was organizing the first edition this year and I really loved this conference in every aspect of it! Thanks, Mario Fusco and all the team involved for making it possible!Voxxed Days Milano - Photo credit Sanne Grinovero |
I've written a full thread on Twitter with my impressions. You can find it attached to the tweet where I share all the content I've used in Greach Conf, BreizhCamp and Voxxed Days Milano:
My presentation content #VDM19 is available! @VoxxedMilano ! Thanks for attending!— Katia Aresti (@karesti) 13 avril 2019
The code of @vertx_project and @Infinispan embeddedhttps://t.co/KYNUJRzauU
The code of @QuarkusIO and @Infinispan client/serverhttps://t.co/9TV9tPBaeI
Deck: https://t.co/HR8nMR7xlL
Thanks to Breizh Camp, Greach Conf and Voxxed Days Milano for the opportunity to share around distributed caches and for the amazing time I've had during this month in each of the conferences.
Devoxx France
Devoxx France is taking place this week in Paris. I will be there, so if you want to chat about Distributed caches, Datagrids, NoSQL Key-Value databases, or integration with your favorite framework feel free to reach me on twitter!There are lot's of new features and Reactive APIs to be done for Infinispan 10, so my main focus will be there for a bit.
Stay Tuned And Happy Coding!
Monday, 8 April 2019
Operator 0.2.1 out with DNS ping and expanded customizations
We've just completed the release of the Infinispan Operator version 0.2.1. In this second minor release, we've added the following features:
Cluster nodes now discover each other using DNS ping, which uses name lookups. Each node publishes a headless service which they use to locate each other. Previously, Kubernetes APIs were queried to discover other nodes, but this required administrator rights. DNS ping does not require admin permissions.
The Infinispan server image used by the operator is now configurable, e.g.
You can now provide their own custom Infinispan server XML referencing an existing ConfigMap:
Note that this example requires a ConfigMap with the XML file to be created before hand.
We're already working on version 0.3.0, and in parallel we've been working on our first OperatorHub submission. We hope to have some news for you very soon :)
Cheers,
Galder
DNS Cluster Discovery
Cluster nodes now discover each other using DNS ping, which uses name lookups. Each node publishes a headless service which they use to locate each other. Previously, Kubernetes APIs were queried to discover other nodes, but this required administrator rights. DNS ping does not require admin permissions.
Configurable Image
The Infinispan server image used by the operator is now configurable, e.g.
Configurable XML
You can now provide their own custom Infinispan server XML referencing an existing ConfigMap:
Note that this example requires a ConfigMap with the XML file to be created before hand.
Next Steps
We're already working on version 0.3.0, and in parallel we've been working on our first OperatorHub submission. We hope to have some news for you very soon :)
Cheers,
Galder
Labels:
beta release,
openshift,
operator,
release
Friday, 5 April 2019
Infinispan Spring Boot Starter 2.1.5.Final and 1.0.7.Final are out!
Dear Infinispan and Spring Boot users,
We have just released Infinispan Spring Boot Starter 2.1.5.Final and 1.0.7.Final.
2.1.5.Final
2.1.5.Final is using Infinispan 9.4.11.Final and Spring-Boot 2.1.4.RELEASE.
Important Spring-Boot bug fix
Previous versions of Spring-Boot 2.1.x contained a bug related to the multi-release jars. Infinispan contains multi-release jars, in consequence, we could not run our applications using java -jar with Java 11 (Java 8 worked fine). For additional explanations, read here.Spring-Boot team has fixed this bug and released the correction in Spring-Boot 2.1.4.RELEASE, along with many other features and bug fixes, so consider upgrading soon.
Statistics on Client/Server mode and Actuator
Statistics configuration in client/server mode for the client evolved in the latest Infinispan versions. As a remainder, to activate actuator statistics in client/server mode :- Configure 'infinispan.remote.statistics=true' in the application.properties
or
- Configure ''infinispan.client.hotrod.statistics=true" in the hotrod-client.properties
or
- Configure by code, for example:
@Bean
public InfinispanRemoteConfigurer infinispanRemoteConfigurer() {
return () -> new ConfigurationBuilder().statistics().enable().build();
}
JMX
If you want to use Infinispan and JMX, for example on Client/Server mode, set the 'jmx' property 'true' as explained above with the 'statistics' property. However, you might get a javax.management.InstanceAlreadyExistsException because both Infinispan and Spring will try to register the MXBean.
The correction will land on the next starter release. If you need to avoid this error today, you can tell Spring-Boot not to register the bean with the following code (Thanks Stéphane Nicoll for the tip!):
The correction will land on the next starter release. If you need to avoid this error today, you can tell Spring-Boot not to register the bean with the following code (Thanks Stéphane Nicoll for the tip!):
Testcontainers
This version includes an integration test using Testcontainers, JUnit5 and the Infinispan Server. Grab a look here if you are curious.1.0.7.Final
1.0.7.Final upgrades to 1.5.19.RELEASE and Infinispan 9.4.11.Final.
⭐ Don't forget to star the project in GitHub if you like the starter! ⭐
Please report any issues in our issue tracker and join the conversation in our Zulip Chat to shape up our next release.
Enjoy,
The Infinispan Team
Labels:
minor release,
spring-boot,
spring-boot starters
Thursday, 7 March 2019
Subatomic Infinispan Client
Today, the Quarkus project was released as a public beta. https://quarkus.io/ For those of you not familiar, Quarkus allows you to write your enterprise apps as you have done in the past with Hibernate/JAX-RS, but also to compile these applications to a Graal-VM native image. Running in a native image allows for the application to be started up in mere milliseconds, depending upon the app, all while using much less memory.
The Infinispan team is proud to announce that you can use the HotRod Java client in Quarkus and supports being compiled to a native image as well. This can allow you to startup and connect to a remote Infinispan server faster than ever before.
If you want a quick and simple example of how you can get this working you can take a look at the quick start which can be found at https://github.com/quarkusio/quarkus-quickstarts/tree/master/infinispan-client. This example covers configuring the client connection, cache injection and simple get/put operations as a basis.
The Infinispan Client Quarkus extension in addition to providing an easy way to create a Graal-VM native image with Infinispan Client also provides the following features to help the user get stuff done quicker.
More details for these features as well as how to configure them can be found at https://quarkus.io/guides/infinispan-client-guide
Please let us know of any questions, concerns or suggestions at the usual places: forum or chat. We expect to continue enhancing this extension and would love to have any feedback.
The Infinispan team is proud to announce that you can use the HotRod Java client in Quarkus and supports being compiled to a native image as well. This can allow you to startup and connect to a remote Infinispan server faster than ever before.
If you want a quick and simple example of how you can get this working you can take a look at the quick start which can be found at https://github.com/quarkusio/quarkus-quickstarts/tree/master/infinispan-client. This example covers configuring the client connection, cache injection and simple get/put operations as a basis.
The Infinispan Client Quarkus extension in addition to providing an easy way to create a Graal-VM native image with Infinispan Client also provides the following features to help the user get stuff done quicker.
- Automatically Inject Important Resources
- RemoteCache (named)
- RemoteCacheManger
- CounterManager
- User based ProtoStream Marshalling
- Querying (Indexed / Non Indexed)
- Continuous Query
- Near Cache
- Authentication/Authorization
- Encryption
- Counters
More details for these features as well as how to configure them can be found at https://quarkus.io/guides/infinispan-client-guide
Please let us know of any questions, concerns or suggestions at the usual places: forum or chat. We expect to continue enhancing this extension and would love to have any feedback.
Subscribe to:
Posts (Atom)