Hi Ashish,

One other thought is that you could also use Geode like a messaging queue
using Async event listeners.

Your functions can put the details of the external call in a region with a
serial AsyncEventQueue for a listener to pick up.
For serial event queues, there will be one active listener to make the
external calls. You can have multiple backups in data nodes for HA.

See
https://geode.apache.org/docs/guide/11/developing/events/implementing_write_behind_event_handler.html
*----*
*Gregory Green | Advisory Solutions Architecture - DataTx*
*--*
*Articles/Videos*
Monoliths to Microservices? Don’t Forget to Transform the Data Layer
<https://content.pivotal.io/engineers/moving-from-monoliths-to-microservices-don-t-forget-to-transform-the-data-layer-here-s-how>
How to Build Modern Data Pipelines with GemFire and SCDF
<https://content.pivotal.io/blog/how-to-build-modern-data-pipelines-with-pivotal-gemfire-and-spring-cloud-data-flow>
GemFire AWS Quickstart <https://youtu.be/QqWKzZ2MeOY>





On Wed, Sep 18, 2019 at 10:18 AM Alberto Gomez <alberto.go...@est.tech>
wrote:

> Hi Ashish,
>
> If you use onRegion, the function will be executed on all nodes hosting
> data for the region. If you use withFilter, the nodes would be narrowed
> down to the ones hosting the set of keys passed.
>
> If you want the function to be run in one node you have the two options
> already proposed: either use onRegion plus withFilter passing one key or
> use onServer.
>
> Do you really need to pass a set of keys to the function? Is it a function
> dependent data? If not, onServer should work for you.
>
> -Alberto
>
>
> On 18/9/19 15:30, aashish choudhary wrote:
>
> Any thoughts?
>
> With best regards,
> Ashish
>
> On Tue, Sep 17, 2019, 12:19 PM aashish choudhary <
> aashish.choudha...@gmail.com> wrote:
>
>> Thanks Mike,Dan,Anil for your suggestions.
>>
>> We do use withFilter but we pass Set of keys not a single key while
>> executing functions and we also have the optimizeforwrite set to true as
>> best practices. We have redundancy of 3.With that primaries are basically
>> split among 12 data nodes. We basically want to reduce calls to external
>> http service. May be what Dan is suggesting something we can do.
>>
>> With best regards,
>> Ashish
>>
>> On Tue, Sep 17, 2019, 12:39 AM Anilkumar Gingade <aging...@pivotal.io>
>> wrote:
>>
>>> Ashish, can you give more detail on your usecase/requirement...Is your
>>> requirement is to execute the function on all the nodes that host the
>>> region? If thats the case, what is expected to happen by calling the
>>> external service? Is only one node suppose to use the data/info from the
>>> external service.
>>> If your requirement is not to execute on all nodes; you can use the
>>> options as suggested by Dan and Mike.
>>>
>>> -Anil.
>>>
>>>
>>>
>>> On Mon, Sep 16, 2019 at 10:55 AM Dan Smith <dsm...@pivotal.io> wrote:
>>>
>>>> When you call FunctionService.onServer, you can pass it a ClientCache
>>>> or a Pool. It will find a running server and execute on that. So you never
>>>> pass it an individual server name.
>>>>
>>>> -Dan
>>>>
>>>> On Mon, Sep 16, 2019 at 10:22 AM Michael Stolz <mst...@pivotal.io>
>>>> wrote:
>>>>
>>>>> If you execute onRegion withFilter and a single filter key it will
>>>>> only be executed on the server who would host that key.
>>>>>
>>>>> --
>>>>> Mike Stolz
>>>>> Principal Engineer, Pivotal Cloud Cache
>>>>> Mobile: +1-631-835-4771
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Sep 16, 2019 at 12:49 PM aashish choudhary <
>>>>> aashish.choudha...@gmail.com> wrote:
>>>>>
>>>>>> We use onRegion call to make http request to external service inside
>>>>>> function. Because of that it gets executed on multiple servers. So
>>>>>> basically we will have to make nested call to another function using
>>>>>> onServer to avoid multiple calls? But what if that node is down?
>>>>>>
>>>>>> With best regards,
>>>>>> Ashish
>>>>>>
>>>>>> On Mon, Sep 16, 2019, 9:59 PM Dan Smith <dsm...@pivotal.io> wrote:
>>>>>>
>>>>>>> Hi Ashish,
>>>>>>>
>>>>>>> How are you executing your function? If you execute a function from
>>>>>>> the client with Function.onServer, it should only be executed on a 
>>>>>>> single
>>>>>>> running server.
>>>>>>>
>>>>>>> -Dan
>>>>>>>
>>>>>>

Reply via email to