Hi All,
I have design question about Ignite web session clustering.
I have springboot app with UI. It clustered app ie multiple instance of
springboot app behind the load balancer. I am using
org.apache.ignite.cache.websession.WebSessionFilter()to intercept request and
create\manage session for any incoming request.
I have 2 option
1. Embed the ignite node inside springboot app. So have these embedded
ignite node (on each springboot JVM) be part of cluster. This way request
session is replicated across the entire springboot cluster. On load balancer I
don't have to maintain the sticky connection. The request can go to any app in
round robin or least load algorithm.
Few considerations
a. Architect is simple. I don't have worry about the cache being down etc.
b. Now the cache being embedded, its using CPU and memory from app jvm. It
has potential of starving my app of resources.
2. Have ignite cluster running outside of app JVM. So now I run client
node in springboot app and connect to main ignite cluster.
Few considerations
a. For any reason, if the client node cannot connect to main ignite
cluster. Do I have to manage the session manually and then push those session
manually at later point to the ignite cluster??
b. If I manage session locally I will need to have sticky connection on
the load balancer. Which I want to avoid if possible.
* I am leaning to approach 2, but want to make it simple. So if client
node cannot create session (override
org.apache.ignite.cache.websession.WebSessionFilter()) it redirects user to
page indicating the app is down or to another app node in the cluster.
Are there any other design approach I can take?
Am I overlooking anything in either approach?
If you have dealt with it, please share your thoughts.
Thanks in advance.
Shri
This e-mail and its contents (to include attachments) are the property of
National Health Systems, Inc., its subsidiaries and affiliates, including but
not limited to Rx.com Community Healthcare Network, Inc. and its subsidiaries,
and may contain confidential and proprietary or privileged information. If you
are not the intended recipient of this e-mail, you are hereby notified that any
unauthorized disclosure, copying, or distribution of this e-mail or of its
attachments, or the taking of any unauthorized action based on information
contained herein is strictly prohibited. Unauthorized use of information
contained herein may subject you to civil and criminal prosecution and
penalties. If you are not the intended recipient, please immediately notify the
sender by telephone at 800-433-5719 or return e-mail and permanently delete the
original e-mail.