Clay, This 3-years old blogging series talks about a recommended architecture for deployments with Ignite service grid:
- Part 1: https://dzone.com/articles/running-microservices-on-top-of-in-memory-data-gri - Part 2: https://dzone.com/articles/running-microservices-on-top-of-in-memory-data-gri-1 - Part 3: https://dzone.com/articles/microservices-on-top-of-an-in-memory-data-grid-par That was before Kubernetes, Spring Boot REST, Quarkus, etc. became de-facto standards for microservices architectures. - Denis On Mon, Jun 8, 2020 at 12:08 PM Denis Magda <dma...@apache.org> wrote: > Clay, > > I assume embedding jetty as an ignite service, i.e., as an ignite server >> node, is not desirable (still don't know the reason). > > > Let's suppose that your cluster has 3 server/data nodes with application > records distributed evenly - so that each node keeps ~33% of the whole data > set. Next, if to deploy Jetty as an ignite service on those 3 nodes and to > assume that all application records are accessed frequently, then for ~33% > of requests the service will serve local data of its node while for the > rest ~66% request it will getting it from the other 2 remote nodes. So, the > performance advantages of this deployment strategy are insignificant > (unless all the data is fully replicated). > > Also, if an Ignite service is deployed on a server node, then each time > you need to update service logic you'll restart the server node and trigger > cluster rebalancing that might be a time-consuming operation depending on > data size. This might be a more prominent implication that you would not > want to have in the production environment. > > > > - > Denis > > > On Sun, Jun 7, 2020 at 3:04 AM Clay Teahouse <clayteaho...@gmail.com> > wrote: > >> Denis -- Thank you for the recommendation. >> From what I read, embedded ignite servers has implications for >> scalability, and write performance and I cannot afford either. >> I assume embedding jetty as an ignite service, i.e., as an ignite server >> node, is not desirable (still don't know the reason). >> Yes, ultimatley my goal is to deploy the ignite services and data nodes >> as microservices. >> >> On Sat, Jun 6, 2020 at 11:25 PM Denis Magda <dma...@apache.org> wrote: >> >>> Clay, >>> >>> Probably, such frameworks as Quarkus, Spring Boot, Micronaut would work >>> as a better foundation for your microservices. As you know, those already >>> go with embedded REST servers and you can always use Ignite clients to >>> reach out to the cluster. >>> >>> Usually, Ignite servers are deployed in the embedded mode when you're >>> dealing with ultra-low latency use case or doing web-sessions clustering: >>> >>> https://www.gridgain.com/docs/latest/installation-guide/deployment-modes#embedded-deployment >>> >>> >>> - >>> Denis >>> >>> >>> On Sat, Jun 6, 2020 at 9:03 AM Clay Teahouse <clayteaho...@gmail.com> >>> wrote: >>> >>>> Hi Denis -- My main reason was for embedding jetty as an ignite service >>>> was to have ignite manage jetty instance, the same it does for any other >>>> kind of service. >>>> >>>> On Thu, Jun 4, 2020 at 3:30 PM Denis Magda <dma...@apache.org> wrote: >>>> >>>>> Clay, >>>>> >>>>> Do you have any specific requirements in mind for the ignite service + >>>>> jetty deployment? If possible, please tell us a bit more about your >>>>> application. >>>>> >>>>> Generally, I would deploy Jetty separately and use load balancers when >>>>> several instances of an application are needed. >>>>> >>>>> - >>>>> Denis >>>>> >>>>> >>>>> On Wed, Jun 3, 2020 at 3:20 PM Clay Teahouse <clayteaho...@gmail.com> >>>>> wrote: >>>>> >>>>>> Thank you, Denis. I'll research this topic further. >>>>>> >>>>>> Any recommendation for/against using jetty as an embedded servlet >>>>>> container, in this case, say, deployed as an ignite service? >>>>>> >>>>>> On Fri, May 29, 2020 at 11:22 PM Denis Magda <dma...@apache.org> >>>>>> wrote: >>>>>> >>>>>>> Clay, >>>>>>> >>>>>>> Just start your Jetty server and deploy as many instances of your >>>>>>> web app as needed. Inside the logic of those apps start Ignite server >>>>>>> nodes >>>>>>> instances. Then, refer to this documentation page for session clustering >>>>>>> configuration: >>>>>>> https://apacheignite-mix.readme.io/docs/web-session-clustering >>>>>>> >>>>>>> Also, there were many related questions related to this topic. Try >>>>>>> to search for specific by googling for "session clustering with ignite >>>>>>> and >>>>>>> jetty". >>>>>>> >>>>>>> Let us know if further help is needed. >>>>>>> >>>>>>> >>>>>>> - >>>>>>> Denis >>>>>>> >>>>>>> >>>>>>> On Fri, May 29, 2020 at 6:57 PM Clay Teahouse < >>>>>>> clayteaho...@gmail.com> wrote: >>>>>>> >>>>>>>> thank you Denis. >>>>>>>> If I want to go with the first option, how would I deploy jetty as >>>>>>>> embedded server? Do I deploy it as an ignite service? >>>>>>>> How would I do session clustering in this case? >>>>>>>> >>>>>>>> On Fri, May 29, 2020 at 3:18 PM Denis Magda <dma...@apache.org> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Hi Clay, >>>>>>>>> >>>>>>>>> I wouldn't suggest using Ignite's Jetty instance for the >>>>>>>>> deployment of your services. Ignite's Jetty primary function is to >>>>>>>>> handle >>>>>>>>> REST requests specific to Ignite: >>>>>>>>> https://apacheignite.readme.io/docs/rest-api >>>>>>>>> >>>>>>>>> Instead, deploy and manage your restful services separately. Then, >>>>>>>>> if the goal is to do a web session clustering, deploy Ignite server >>>>>>>>> nodes >>>>>>>>> in the embedded mode making the sessions' caches replicated. >>>>>>>>> Otherwise, >>>>>>>>> deploy the server nodes independently and reach the cluster out from >>>>>>>>> the >>>>>>>>> restful services using existing Ignite APIs. This tutorial shows how >>>>>>>>> to do >>>>>>>>> the latter with Spring Boot: >>>>>>>>> https://www.gridgain.com/docs/tutorials/spring/spring_ignite_tutorial >>>>>>>>> >>>>>>>>> - >>>>>>>>> Denis >>>>>>>>> >>>>>>>>> >>>>>>>>> On Fri, May 29, 2020 at 8:25 AM Clay Teahouse < >>>>>>>>> clayteaho...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> hello, >>>>>>>>>> I understand that ignite comes with embedded jetty server. >>>>>>>>>> 1) Can I utilize this jetty server to deploy my own restful >>>>>>>>>> services (using Jersey implementation)? If yes, can you please >>>>>>>>>> direct me to >>>>>>>>>> some examples. >>>>>>>>>> Further questions: >>>>>>>>>> 2)How does the ignite embedded jetty work with regard to load >>>>>>>>>> balancing? Are there multiple instances of the embedded jetty server >>>>>>>>>> running behind a load balancer? In other words, can I invoke multiple >>>>>>>>>> instances? >>>>>>>>>> 2) How does this scheme work with web session clustering? >>>>>>>>>> 3) Would the ignite node run in server mode? >>>>>>>>>> 4) I want the jetty sessions access ignite caches (on the server >>>>>>>>>> side) as the data source for the data returned from the restful >>>>>>>>>> services. >>>>>>>>>> >>>>>>>>>> Any help and advice would be much appreciated. Thank you >>>>>>>>>> >>>>>>>>>