Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / gRPC балансировка на стороне клиента / 25 сообщений из 51, страница 1 из 3
14.12.2021, 23:30
    #40120105
Timein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
Добрый день. Помогите, пожалуйста, прояснить несколько моментов по gRPC.
У меня есть несколько прикладов с серверной частью и мне надо настроить балансировку на стороне клиента.
Я посмотрел несколько туториалов и статей, написал код, он работает, но некоторые моменты остались неясными.

Насколько я понимаю, для того, чтобы клиент понимал, куда ему ходить, надо реализовать NameResolverProvider:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
public class MultiAddressNameResolver extends NameResolverProvider {

    private final List<EquivalentAddressGroup> addresses;

    MultiAddressNameResolver(SocketAddress... addresses) {
        this.addresses = Arrays.stream(addresses)
                .map(EquivalentAddressGroup::new)
                .collect(Collectors.toList());
    }

    @Override
    public NameResolver newNameResolver(URI notUsedUri, NameResolver.Args args) {
        return new NameResolver() {
            @Override
            public String getServiceAuthority() {
                return "fakeAuthority";
            }

            public void start(Listener2 listener) {
                listener.onResult(ResolutionResult.newBuilder().setAddresses(addresses).setAttributes(Attributes.EMPTY).build());
            }

            public void shutdown() {
            }
        };
    }

    @Override
    public String getDefaultScheme() {
        return "multiaddress";
    }

    @Override
    protected boolean isAvailable() {
        return true;
    }

    @Override
    protected int priority() {
        return 0;
    }
}



Для клиента этот провайдер надо зарегистрировать и далее построить канал. Для построения канала используется метод forAddress или forTarget.
В методе forAddress у канала указывается только один хост и порт, но ведь серверов несколько. Как указать несколько серверов?
Или для каждого свой канал нужен?
В методе forTarget указывается строка и я не могу понять по примерам, что в ней должно быть, как правильно ее указать

Код: java
1.
2.
3.
4.
5.
6.
            
NameResolverRegistry.getDefaultRegistry().register(new MultiAddressNameResolver(new InetSocketAddress("localhost", 5050), new InetSocketAddress("localhost", 5051)));
ManagedChannel channel = NettyChannelBuilder
             .forAddress("localhost", 5051)
             .usePlaintext()
             .build();
...
Рейтинг: 0 / 0
22.12.2021, 17:17
    #40122229
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
Timein,

Прошу прощения, а почему бы балансировку нагрузки не делать на серверной стороне?
Это вроде бы стандартное решение...
<:o)
...
Рейтинг: 0 / 0
22.12.2021, 17:35
    #40122246
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
mad_nazgul,
+1
...
Рейтинг: 0 / 0
22.12.2021, 18:33
    #40122278
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
Клиентская балансировка тоже используется. Причем есть такие продвинутые драйверы
которым не нужен арбитр типа Zookeper. Клиент сам решает куда ходить согласно настройкам.
Создатели Cassanra в своих семинарах и конфах часто хвастаются тем какой у них продвинутый драйвер
(клиент). Для них это удобно. Особенно в одноранговой среде где все серверы одинаковы и могут
быть к примеру частично недоступны. Я не утверждаю что их подход годится везде.

Просто и такой подход есть.
...
Рейтинг: 0 / 0
22.12.2021, 19:21
    #40122294
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
mayton
Клиентская балансировка тоже используется. Причем есть такие продвинутые драйверы
которым не нужен арбитр типа Zookeper. Клиент сам решает куда ходить согласно настройкам.
Создатели Cassanra в своих семинарах и конфах часто хвастаются тем какой у них продвинутый драйвер
(клиент). Для них это удобно. Особенно в одноранговой среде где все серверы одинаковы и могут
быть к примеру частично недоступны. Я не утверждаю что их подход годится везде.

Просто и такой подход есть.


Да. Это можно сделать.
Но это не стандартное решение.
И надо будет писать свой клиент/обертку с балансировщиком нагрузки.
Вопрос только в том стоит ли это делать?
<:o)
...
Рейтинг: 0 / 0
22.12.2021, 19:26
    #40122296
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
mad_nazgul, я кстати этот туториал что публикует Timein, находил где-то неделю назад.

Вот где-то в блогах по ЖРПЦ https://grpc.io/blog/

Я думаю что там - больше инфы по топику.
...
Рейтинг: 0 / 0
22.12.2021, 19:30
    #40122298
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
Кста, сабж это альтернатива рест
...
Рейтинг: 0 / 0
23.12.2021, 17:18
    #40122515
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
PetroNotC Sharp
Кста, сабж это альтернатива рест


Скорее не REST, а SOAP.
<:o)
...
Рейтинг: 0 / 0
23.12.2021, 17:36
    #40122521
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
mad_nazgul,
Это три альтернативы исторических
SOAP - > REST - > gRPC - > ?
Что дальше не знаю.
REST не ушел со сцены так как SOAP.
...
Рейтинг: 0 / 0
23.12.2021, 17:50
    #40122524
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
Это не альтернативы. Ну и исторически как раз полностью наоборот
RPC ---> SOAP (RPC via HTTP)
(по вики RPC --> XML-RPC (1998) --> SOAP )

AFAIK
...
Рейтинг: 0 / 0
23.12.2021, 17:57
    #40122525
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
Leonid Kudryavtsev,
Не RPC а gRPC от гугла свеженькое.
...
Рейтинг: 0 / 0
23.12.2021, 17:58
    #40122526
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
Leonid Kudryavtsev,
Их качает из стороны в сторону конечно.
Не понравился текст протокола, новый rpc изобретают
...
Рейтинг: 0 / 0
23.12.2021, 18:17
    #40122532
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
gRPC использует Protobuf в качестве технологии сериализации данных. Ценная штука. Тоже гугл создавал под свои нужды.
Есть интересное преимущество. Protobuf закладывает возможность эволюции протокола с сохранением частичной
совместимости. Тоесть новый сервер к примеру должен понимать бинарные месседжи отправленные старым клиентом.

Поддерживается ли такая эволюция в SOAP? Я честно говоря не помню.

Кто помнит как это в соапе?
...
Рейтинг: 0 / 0
23.12.2021, 18:23
    #40122534
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
mayton
gRPC использует Protobuf в качестве технологии сериализации данных. Ценная штука. Тоже гугл создавал под свои нужды.

А года три смотрел на этот Ваш ProtoBuf под профайлерром в Java. Ценный сорт гуана. Для КАЖДОГО элемента эти "разработчики" умудрились создавать в цикле и ЭЛЕМЕНТ и ФАБРИКУ.

Может поправили, а может нет. Не интересно. Но Java библиотека (3-4 года назад) была закодирована шедеврально. Паттерны, фабрики - это конечно круто... но занафига их создавать для КАЖДОГО элемента. Ну и итог: потребление памяти в 2-а раза больше, чем нужно, скорость работы аналогично в два раза медленнее.

AFAIK
...
Рейтинг: 0 / 0
23.12.2021, 18:38
    #40122538
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
PetroNotC Sharp
mad_nazgul,
Это три альтернативы исторических
SOAP - > REST - > gRPC - > ?
Что дальше не знаю.
REST не ушел со сцены так как SOAP.


Ну смерть SOAP сильно преувеличена. :-)
У нас во многих государственных проектах интеграцию в основном на SOAP делают.

А так, на замену REST, скорее GraphQL пихают, чем gRPC.

У нас на проекте как раз между сервисами gRPC и Kafka, а на фронт REST и GraphQL.
...
Рейтинг: 0 / 0
23.12.2021, 18:53
    #40122543
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
Leonid Kudryavtsev
mayton
gRPC использует Protobuf в качестве технологии сериализации данных. Ценная штука. Тоже гугл создавал под свои нужды.

А года три смотрел на этот Ваш ProtoBuf под профайлерром в Java. Ценный сорт гуана. Для КАЖДОГО элемента эти "разработчики" умудрились создавать в цикле и ЭЛЕМЕНТ и ФАБРИКУ.

Сразу - дисклеймер. Я здесь - не адвокат gRPC. И я не собираюсь защищать protobuf.

Но мне просто интересно обычное потребительское сравнение. Если завтра делать
какой-то POC - то стоит-ли рассматривать эту технологию в качестве основы.
...
Рейтинг: 0 / 0
23.12.2021, 18:57
    #40122544
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
mad_nazgul
PetroNotC Sharp
mad_nazgul,
Это три альтернативы исторических
SOAP - > REST - > gRPC - > ?
Что дальше не знаю.
REST не ушел со сцены так как SOAP.


Ну смерть SOAP сильно преувеличена. :-)

Подтверждаю. В финансовом сегменте SOAP и сейчас используется. И выпилить его оттуда
сложно по интеграционным причинам. Цена этой задачи ... хм похожа наверное на замену ширины
ЖД-рельсов по всей стране. Ненужно и дорого.
...
Рейтинг: 0 / 0
23.12.2021, 19:04
    #40122546
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
mad_nazgul,
В рф госпроекты линукс и астра.
А нафига им ваш соап?
Вот и выходит Protobuf
...
Рейтинг: 0 / 0
23.12.2021, 19:08
    #40122548
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
mayton,
Ну, старперы будут сидеть на старом. Молодежь на новом)
...
Рейтинг: 0 / 0
23.12.2021, 19:11
    #40122550
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
Ты что-ли молодёжь?
...
Рейтинг: 0 / 0
23.12.2021, 19:16
    #40122553
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
mayton,
Молодящийся)))))
...
Рейтинг: 0 / 0
23.12.2021, 19:34
    #40122564
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
Давай сюда Практика использования gRPC чтоб не флудить бедного автора.
...
Рейтинг: 0 / 0
24.12.2021, 19:05
    #40122864
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
PetroNotC Sharp
mad_nazgul,
В рф госпроекты линукс и астра.
А нафига им ваш соап?
Вот и выходит Protobuf


Ну вообще-то в госструктуры это главный рассадник SOAP. :-)
У нас в РК целая ШЭП на нем работает. :-)
...
Рейтинг: 0 / 0
24.12.2021, 19:11
    #40122865
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
PetroNotC Sharp
mayton,
Ну, старперы будут сидеть на старом. Молодежь на новом)


Ну скажем у меня к SOAP есть куча претензий.
Но т.к. его двигали куча корпораций, как крутое решение для интеграции.
Плюс продавали решения разной степени глючности, которые "избавят от программистов".
То "топ-топ менеджерам" он нравиться.

ИМХО даже REST на фоне SOAP смотрится, как хорошо продуманное решение. :-)
...
Рейтинг: 0 / 0
24.12.2021, 19:33
    #40122867
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gRPC балансировка на стороне клиента
mad_nazgul,
Ты не видел soap в шарпе. Вот где все просто и автоматом. Никто никакие портянки xml в глаза не видит.
Не сравнить с java
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / gRPC балансировка на стороне клиента / 25 сообщений из 51, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]