powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / gRPC балансировка на стороне клиента
25 сообщений из 51, страница 1 из 3
gRPC балансировка на стороне клиента
    #40120105
Timein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Помогите, пожалуйста, прояснить несколько моментов по 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
gRPC балансировка на стороне клиента
    #40122229
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timein,

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

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

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


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

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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


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

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


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


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

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


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