Конфигурация для масштабирования Grpc Server для блокировки звонков - PullRequest
0 голосов
/ 09 апреля 2019

Я изучал GRPC, поскольку мы планируем выставить сервер GRPC (вместо конечной точки отдыха) в микросервисе с весенней загрузкой, который будет прослушивать выделенный порт. Я использую следующий фрагмент кода для создания сервера GRPC.

io.grpc.Server server = ServerBuilder.forPort(port)
        .addService(new MyServiceImpl())
        .build()
        .start();

Здесь объект сервера, который инкапсулирует неподходящий объект NettyServerBuilder, инициализируется со значениями по умолчанию. Мы планируем развернуть его в рабочей среде ( мощное оборудование ), где мы ожидаем огромный трафик (приблизительно 10 тыс. Вызовов в секунду ) от клиентов grpc. Мой вопрос как для масштабирования Как мне настроить базовый NettyServerBuilder. Какие важные настройки мне нужно настроить? Любые предложения и лучшие практики приветствуются

1 Ответ

0 голосов
/ 10 апреля 2019

Вы должны:

  1. Использовать serverBuilder.executor() и установить ForkJoinPool в качестве исполнителя.Это исполнитель, где вызываются обратные вызовы gRPC (то есть методы на ServerCall.Listener).ForkJoinPool - сильно оптимизированный, более параллельный исполнитель, позволяющий сетевым потокам вернуться к обработке таких вещей, как HTTP / 2 и SSL.
  2. Использовать nettyServerBuilder.workerEventLoopGroup() и предоставлять EpollEventLoopGroup.Это позволяет использовать оптимизированную реализацию сетевого потока, которая более эффективна, чем стандартная реализация Nio Java по умолчанию.Количество потоков, которые вы предоставляете группе, будет зависеть от ваших тестов, но хорошее практическое правило - 2-4 рабочих.gRPC использует EventLoops несколько иначе, чем netty, поэтому обычно вам не требуется 1 на ядро.
  3. Используйте netty-tcnative для реализации SSL.Это чрезвычайно быстрая реализация SSL, которая объединяет OpenSSL и BoringSSL.

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

...