+1 to this approach, since IMO this is a great feature for the andes-client
itself to have, not a wrapper around it. We can allow several
load-balancing methods additional to round robin, and the user will be able
to set the load-balancing method through the initial properties (JNDI or
properties).


Regards,
Chamila de Alwis
Committer and PMC Member - Apache Stratos
Senior Software Engineer | WSO2
Blog: https://medium.com/@chamilad



On Fri, Aug 26, 2016 at 4:58 AM, Sidath Weerasinghe <sid...@wso2.com> wrote:

> Hi all,
>
> *-UPDATE-*
>
> Instead off writing OSGI component; modify Andes client and write a
> plug-able discovery class.  When the user configured, this class is
> activated.
>
> *Dynamic Discovery*
>
> There are two use cases for discovering IP address.
>
> 1. When the connecting MB clients are on the same network as the server.
>
> The above would be the most typical case since, most often clients (ESB,
> DAS) would be on the same network and in the above case, only the list of
> private IPs would be required. I believe achieving this is straightforward.
>
> 2. When connecting MB clients are outside the network
>
> In this case, we might have to call an API which will be provided by the
> IaaS provided i.e EC2, OpenStack to get the public IPs of the nodes. so the
> implementation should be extensible and allow folks to write adapters for
> each new IaaS implementation and retrieve the list of public IPs. For the
> start, we could write for EC2 and gradually add depending on the time.
>
>
> Basic idea......
>
> [image: Inline image 1]
>
>
>
> This Static, SameNetwork, AWS types can be configurable. The default can
> be static.
>
> Static - provide IP List
> SameNetwork - Broker nodes are in local network with the client and can
> discover IP address
> AWS - get IP list by calling API
>
>
> *Load Balancing*
>
> In load balancing case I'm going to modify Andes client.
>
> There is an interface called "BrokerDetails" and there is a java classed
> called "AMQBrokerDetails" Which is implements using BrokerDetails. Inside
> that class host and the port is set.
> I'm going insert some mechanism to inside those class for load balance.
>
> The mechanism should be capable of providing host and the port when
> creating the connection.
>
> [image: Inline image 1]
>
>
>
>
> Need further discussion ...
>
> On Fri, Aug 26, 2016 at 8:50 AM, Sidath Weerasinghe <sid...@wso2.com>
> wrote:
>
>> Hi Chamila,
>>
>> As we discussed,  I am writing separate OSGI component by using Andes
>> client as a dependency.  I'm not going to compose failover list, I get the
>> IP address by calling admin service and according to that load balance the
>> client per connections. The periodical task can be configurable.
>>
>> On Fri, Aug 26, 2016 at 12:15 AM, Chamila De Alwis <chami...@wso2.com>
>> wrote:
>>
>>> Hi Sidath,
>>>
>>> I'm a bit confused on the use of an OSGi component. AFAIU this "has" to
>>> be handled by the Andes client. Please correct me if I'm wrong. With this
>>> approach,
>>>
>>>    1. One broker URL will be provided
>>>    2. The andes-client will call the proposed admin service and compose
>>>    the failover list
>>>    3. URL refresh time could be configurable
>>>
>>> Is this similar to your approach? If it is, what step does an OSGi
>>> component replace?
>>>
>>>
>>>
>>> Regards,
>>> Chamila de Alwis
>>> Committer and PMC Member - Apache Stratos
>>> Senior Software Engineer | WSO2
>>> Blog: https://medium.com/@chamilad
>>>
>>>
>>>
>>> On Mon, Aug 22, 2016 at 12:05 PM, Prabath Ariyarathna <
>>> prabat...@wso2.com> wrote:
>>>
>>>> > I think option 1 would work because you have to use andes client as a
>>>> dependency to initiate individual connections with message broker. Also,
>>>> OSGi    component should wrap message publishing service and provide it to
>>>> the caller. Inside the OSGi component, you can have logic to load balance
>>>> messages.
>>>>
>>>> Why we need separate OSGI component to handle this because AFAIK
>>>> existing failover logic also inside the andese client. How we are going to
>>>> handle this scenario in the none OSGI environment if we are going to use
>>>> separate OSGi component for implementing the logic.
>>>>
>>>>
>>>> Thanks.
>>>>
>>>>
>>>>
>>>> On Mon, Aug 22, 2016 at 4:39 PM, Sidath Weerasinghe <sid...@wso2.com>
>>>> wrote:
>>>>
>>>>> Hi Sajini,
>>>>>
>>>>> The value should be configurable. Initially clients creates then calls
>>>>> the service and user can configure the time value.
>>>>>
>>>>> On Mon, Aug 22, 2016 at 12:17 PM, Sajini De Silva <saj...@wso2.com>
>>>>> wrote:
>>>>>
>>>>>> Hi Sidath,
>>>>>>
>>>>>> However since inside the implementation we are calling this service
>>>>>> periodically,  shouldn't this time value be configurable? Depending on 
>>>>>> the
>>>>>> cluster environment we should be able to tune this value.
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> On Sat, Aug 20, 2016 at 8:14 PM, Sidath Weerasinghe <sid...@wso2.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Malaka,
>>>>>>>
>>>>>>> Im planing to handle this seamlessly.
>>>>>>>
>>>>>>> On Sat, Aug 20, 2016 at 6:50 AM, Malaka Silva <mal...@wso2.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi Sidath,
>>>>>>>>
>>>>>>>> Does consumers and/or producers needs to additionally call ​this
>>>>>>>> services periodically to do this or will it be handled seamlessly?
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fri, Aug 19, 2016 at 8:57 PM, Sidath Weerasinghe <
>>>>>>>> sid...@wso2.com> wrote:
>>>>>>>>
>>>>>>>>> Hi Prabath,
>>>>>>>>>
>>>>>>>>> When client establish a connection with a one of the broker node
>>>>>>>>> then client calls this service and get the live IP address of broker 
>>>>>>>>> nodes
>>>>>>>>> in cluster. For that we need to know one of the broker IP address. 
>>>>>>>>> Then
>>>>>>>>> periodically calling this service and  update live IP address
>>>>>>>>> automatically. For that there is no configurations.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Fri, Aug 19, 2016 at 5:15 PM, Prabath Ariyarathna <
>>>>>>>>> prabat...@wso2.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Sidath.
>>>>>>>>>>
>>>>>>>>>> *Periodically calling this service we can get the dynamically
>>>>>>>>>> adding MB node IP addresses and can remove disconnected IP addresses 
>>>>>>>>>> from
>>>>>>>>>> the list. So it will always shuffle the IPs and provide it for the 
>>>>>>>>>> client.*
>>>>>>>>>>
>>>>>>>>>> Can you little bit elaborate this statement.
>>>>>>>>>>  - What time your going to calling this service?
>>>>>>>>>>  - Is this based on the configuration?
>>>>>>>>>>
>>>>>>>>>> Thanks.
>>>>>>>>>>
>>>>>>>>>> On Fri, Aug 19, 2016 at 4:59 PM, Indika Sampath <indi...@wso2.com
>>>>>>>>>> > wrote:
>>>>>>>>>>
>>>>>>>>>>> I think option 1 would work because you have to use andes client
>>>>>>>>>>> as a dependency to initiate individual connections with message 
>>>>>>>>>>> broker.
>>>>>>>>>>> Also, OSGi component should wrap message publishing service and 
>>>>>>>>>>> provide it
>>>>>>>>>>> to the caller. Inside the OSGi component, you can have logic to load
>>>>>>>>>>> balance messages.
>>>>>>>>>>>
>>>>>>>>>>> On Fri, Aug 19, 2016 at 4:25 PM, Sidath Weerasinghe <
>>>>>>>>>>> sid...@wso2.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Message Broker provides means to horizontally scale between
>>>>>>>>>>>> nodes. The client which communicates with the broker is notified 
>>>>>>>>>>>> on the
>>>>>>>>>>>> availability of the broker nodes in the cluster via JMS connection 
>>>>>>>>>>>> URL,
>>>>>>>>>>>> which allows defining of a failover string (the list of IPs of the 
>>>>>>>>>>>> broker
>>>>>>>>>>>> nodes separated by comma). Also, When integrating with other 
>>>>>>>>>>>> products (eg-
>>>>>>>>>>>> ESB, DAS); we specify the list of nodes in JNDI.properties  file 
>>>>>>>>>>>> in the
>>>>>>>>>>>> following manner.
>>>>>>>>>>>>
>>>>>>>>>>>> connectionfactory.QueueConnectionFactory =
>>>>>>>>>>>> amqp://admin:admin@clientID/carbon
>>>>>>>>>>>> failover='roundrobin'&cyclecount='2'&brokerlist='tcp://IP1:5672
>>>>>>>>>>>> retries='5'&connectdelay='50';tcp://IP2:5672?retries='5'&con
>>>>>>>>>>>> nectdelay='50';tcp://IP3:5672?retries='5'&connectdelay='50''
>>>>>>>>>>>>
>>>>>>>>>>>> Configurations to the JNDI.properties
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> The above approach would require the user to manually list out
>>>>>>>>>>>> IPs of the broker nodes to the client connection string or the 
>>>>>>>>>>>> application
>>>>>>>>>>>> context, which in fact limits the user experience and achieving the
>>>>>>>>>>>> scalability goals in the following way,
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>    1.
>>>>>>>>>>>>
>>>>>>>>>>>>    The user/developers having to manually list out the IPs in
>>>>>>>>>>>>    the connection URL could be prone to error.
>>>>>>>>>>>>    2.
>>>>>>>>>>>>
>>>>>>>>>>>>    The change of IPs of the broker nodes would require
>>>>>>>>>>>>    reconfiguring and restart the client applications connected to 
>>>>>>>>>>>> it.
>>>>>>>>>>>>    3.
>>>>>>>>>>>>
>>>>>>>>>>>>    The approach would also be a blocker for auto scaling
>>>>>>>>>>>>    between broker nodes. (Since addition of IPs needs to be 
>>>>>>>>>>>> manually reflected
>>>>>>>>>>>>    in the client application.The manual process would only address 
>>>>>>>>>>>> failover
>>>>>>>>>>>>    between broker nodes. This limits the client applications to 
>>>>>>>>>>>> load balance
>>>>>>>>>>>>    between the broker nodes)
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> How existing system works
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Proposed solution
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>    -
>>>>>>>>>>>>
>>>>>>>>>>>>    Specify an admin service inside the MB. where, the broker
>>>>>>>>>>>>    clients could query the service to get the list of IPs in the 
>>>>>>>>>>>> broker
>>>>>>>>>>>>    cluster.
>>>>>>>>>>>>    -
>>>>>>>>>>>>
>>>>>>>>>>>>    Via calling an admin service which is implemented inside
>>>>>>>>>>>>    the MB; can discover available MB nodes in the cluster.
>>>>>>>>>>>>    -
>>>>>>>>>>>>
>>>>>>>>>>>>    Periodically calling this service we can get the
>>>>>>>>>>>>    dynamically adding MB node IP addresses and can remove 
>>>>>>>>>>>> disconnected IP
>>>>>>>>>>>>    addresses from the list. So it will always shuffle the IPs and 
>>>>>>>>>>>> provide it
>>>>>>>>>>>>    for the client.
>>>>>>>>>>>>    -
>>>>>>>>>>>>
>>>>>>>>>>>>    According to the live MB node IP address, I will create the
>>>>>>>>>>>>    connections and use this connection as round robin fashion or 
>>>>>>>>>>>> use disruptor
>>>>>>>>>>>>    for load balancing purpose.
>>>>>>>>>>>>
>>>>>>>>>>>> [image: pic 2]
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> There are several ideas for doing this.
>>>>>>>>>>>>
>>>>>>>>>>>> 1. Build separate OSGI component
>>>>>>>>>>>> 2. Modify the Andes client according to the above scenario.
>>>>>>>>>>>>
>>>>>>>>>>>> Any ideas?
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Thank You,
>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>
>>>>>>>>>>>> Sidath Weerasinghe
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> *Intern*
>>>>>>>>>>>>
>>>>>>>>>>>> *WSO2, Inc. *
>>>>>>>>>>>>
>>>>>>>>>>>> *lean . enterprise . middleware *
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> *Mobile: +94719802550 <%2B94%20777764144>*
>>>>>>>>>>>>
>>>>>>>>>>>> *Email: *sid...@wso2.com <ja...@wso2.com>
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>>> Architecture@wso2.org
>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Indika Sampath
>>>>>>>>>>> Senior Software Engineer
>>>>>>>>>>> WSO2 Inc.
>>>>>>>>>>> http://wso2.com
>>>>>>>>>>>
>>>>>>>>>>> Phone: +94 716 424 744
>>>>>>>>>>> Blog: http://indikasampath.blogspot.com/
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>> Architecture@wso2.org
>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>>> *Prabath Ariyarathna*
>>>>>>>>>>
>>>>>>>>>> *Associate Technical Lead*
>>>>>>>>>>
>>>>>>>>>> *WSO2, Inc. *
>>>>>>>>>>
>>>>>>>>>> *lean . enterprise . middleware *
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *Email: prabat...@wso2.com <prabat...@wso2.com>*
>>>>>>>>>>
>>>>>>>>>> *Blog: http://prabu-lk.blogspot.com
>>>>>>>>>> <http://prabu-lk.blogspot.com>*
>>>>>>>>>>
>>>>>>>>>> *Flicker : https://www.flickr.com/photos/47759189@N08
>>>>>>>>>> <https://www.flickr.com/photos/47759189@N08>*
>>>>>>>>>>
>>>>>>>>>> *Mobile: +94 77 699 4730 *
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Architecture mailing list
>>>>>>>>>> Architecture@wso2.org
>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Thank You,
>>>>>>>>> Best Regards,
>>>>>>>>>
>>>>>>>>> Sidath Weerasinghe
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *Intern*
>>>>>>>>>
>>>>>>>>> *WSO2, Inc. *
>>>>>>>>>
>>>>>>>>> *lean . enterprise . middleware *
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *Mobile: +94719802550 <%2B94%20777764144>*
>>>>>>>>>
>>>>>>>>> *Email: *sid...@wso2.com <ja...@wso2.com>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Architecture mailing list
>>>>>>>>> Architecture@wso2.org
>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>> Best Regards,
>>>>>>>>
>>>>>>>> Malaka Silva
>>>>>>>> Senior Technical Lead
>>>>>>>> M: +94 777 219 791
>>>>>>>> Tel : 94 11 214 5345
>>>>>>>> Fax :94 11 2145300
>>>>>>>> Skype : malaka.sampath.silva
>>>>>>>> LinkedIn : http://www.linkedin.com/pub/malaka-silva/6/33/77
>>>>>>>> Blog : http://mrmalakasilva.blogspot.com/
>>>>>>>>
>>>>>>>> WSO2, Inc.
>>>>>>>> lean . enterprise . middleware
>>>>>>>> https://wso2.com/signature
>>>>>>>> http://www.wso2.com/about/team/malaka-silva/
>>>>>>>> <http://wso2.com/about/team/malaka-silva/>
>>>>>>>> https://store.wso2.com/store/
>>>>>>>>
>>>>>>>> Don't make Trees rare, we should keep them with care
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Thank You,
>>>>>>> Best Regards,
>>>>>>>
>>>>>>> Sidath Weerasinghe
>>>>>>>
>>>>>>>
>>>>>>> *Intern*
>>>>>>>
>>>>>>> *WSO2, Inc. *
>>>>>>>
>>>>>>> *lean . enterprise . middleware *
>>>>>>>
>>>>>>>
>>>>>>> *Mobile: +94719802550 <%2B94%20777764144>*
>>>>>>>
>>>>>>> *Email: *sid...@wso2.com <ja...@wso2.com>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Architecture mailing list
>>>>>>> Architecture@wso2.org
>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Sajini De SIlva
>>>>>> Senior Software Engineer; WSO2 Inc.; http://wso2.com ,
>>>>>> Email: saj...@wso2.com
>>>>>> Blog: http://sajinid.blogspot.com/
>>>>>> Git hub profile: https://github.com/sajinidesilva
>>>>>>
>>>>>> Phone: +94 712797729
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Thank You,
>>>>> Best Regards,
>>>>>
>>>>> Sidath Weerasinghe
>>>>>
>>>>>
>>>>> *Intern*
>>>>>
>>>>> *WSO2, Inc. *
>>>>>
>>>>> *lean . enterprise . middleware *
>>>>>
>>>>>
>>>>> *Mobile: +94719802550 <%2B94719802550>*
>>>>>
>>>>> *Email: *sid...@wso2.com
>>>>>
>>>>> Blog: https://medium.com/@sidath
>>>>>
>>>>> Linkedin: https://lk.linkedin.com/in/sidathweerasinghe
>>>>>
>>>>> _______________________________________________
>>>>> Architecture mailing list
>>>>> Architecture@wso2.org
>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> *Prabath Ariyarathna*
>>>>
>>>> *Associate Technical Lead*
>>>>
>>>> *WSO2, Inc. *
>>>>
>>>> *lean . enterprise . middleware *
>>>>
>>>>
>>>> *Email: prabat...@wso2.com <prabat...@wso2.com>*
>>>>
>>>> *Blog: http://prabu-lk.blogspot.com <http://prabu-lk.blogspot.com>*
>>>>
>>>> *Flicker : https://www.flickr.com/photos/47759189@N08
>>>> <https://www.flickr.com/photos/47759189@N08>*
>>>>
>>>> *Mobile: +94 77 699 4730 *
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Architecture mailing list
>>>> Architecture@wso2.org
>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Architecture mailing list
>>> Architecture@wso2.org
>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>
>>>
>>
>>
>> --
>> Thank You,
>> Best Regards,
>>
>> Sidath Weerasinghe
>>
>>
>> *Intern*
>>
>> *WSO2, Inc. *
>>
>> *lean . enterprise . middleware *
>>
>>
>> *Mobile: +94719802550 <%2B94719802550>*
>>
>> *Email: *sid...@wso2.com
>>
>> Blog: https://medium.com/@sidath
>>
>> Linkedin: https://lk.linkedin.com/in/sidathweerasinghe
>>
>
>
>
> --
> Thank You,
> Best Regards,
>
> Sidath Weerasinghe
>
>
> *Intern*
>
> *WSO2, Inc. *
>
> *lean . enterprise . middleware *
>
>
> *Mobile: +94719802550 <%2B94719802550>*
>
> *Email: *sid...@wso2.com
>
> Blog: https://medium.com/@sidath
>
> Linkedin: https://lk.linkedin.com/in/sidathweerasinghe
>
> _______________________________________________
> Architecture mailing list
> Architecture@wso2.org
> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>
>
_______________________________________________
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to