Микроинтегратор кластера wso2 для службы - создание другого вопроса, так как первый был закрыт не просто - PullRequest
0 голосов
/ 09 апреля 2020

Допустим, у нас есть микроинтегратор, связывающийся с несколькими службами.

Мы хотим иметь возможность кластеризовать одну из служб, например, если мы отправляем два запроса в службу, которую мы хотим, чтобы каждый из этих запросов обрабатываться другим узлом службы, это возможно?

Службы являются сторонним REST API, мы хотим отправлять запросы на два разных URL.

В элементе Load-BalanceEndPoint есть элемент Integration studio, но неясно, как он работает, или даже если он позволяет нам решить вышеуказанную проблему.

Может ли кто-нибудь помочь нам решить эту проблему / объяснить, как мы должны использовать упомянутую конечную точку?

1 Ответ

3 голосов
/ 09 апреля 2020

Да, вы можете использовать конечную точку балансировки нагрузки для своего варианта использования. Посмотрите на следующие примеры конфигураций.

Конфигурация API:

<?xml version="1.0" encoding="UTF-8"?>
<api context="/loadbalance" name="checkLoadBalance" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET">
        <inSequence>
            <call>
                <endpoint key="testLoadBalance"/>
            </call>
            <respond/>
        </inSequence>
        <outSequence/>
        <faultSequence/>
    </resource>
</api>

Конечная конфигурация:

<?xml version="1.0" encoding="UTF-8"?>
<endpoint name="testLoadBalance" xmlns="http://ws.apache.org/ns/synapse">
    <loadbalance algorithm="org.apache.synapse.endpoints.algorithms.RoundRobin">
        <endpoint name="endpoint_urn_uuid_6179155B57847314A657084710149040-304004407">
            <http method="GET" uri-template="http://www.mocky.io/v2/5e574b1c3000006000fd38cd">
                <suspendOnFailure>
                    <initialDuration>-1</initialDuration>
                    <progressionFactor>1</progressionFactor>
                </suspendOnFailure>
                <markForSuspension>
                    <retriesBeforeSuspension>0</retriesBeforeSuspension>
                </markForSuspension>
            </http>
        </endpoint>
        <endpoint name="endpoint_urn_uuid_6179155B57847314A657084710149040-304004407">
            <http method="GET" uri-template="http://www.mocky.io/v2/5185415ba171ea3a00704eed">
                <suspendOnFailure>
                    <initialDuration>-1</initialDuration>
                    <progressionFactor>1</progressionFactor>
                </suspendOnFailure>
                <markForSuspension>
                    <retriesBeforeSuspension>0</retriesBeforeSuspension>
                </markForSuspension>
            </http>
        </endpoint>
    </loadbalance>
    <description/>
</endpoint>

Здесь я использовал две разные ложные конечные точки. Они вернут {"Hello": "World"} и {"hello": "world"} . После развертывания, если я впервые вызову API checkLoadBalance, я получу ответ от первой конечной точки. Если я вызову второй раз, я получу ответ от второй конечной точки. Здесь я дал алгоритм как Roundrobin. Следовательно, это будет запланировано в порядке RoundRobin.

...