×

Микросервисы на Scala (Finagle/Finch, бесплатный курс)

Добрый день.
Набираются слушатели на бесплатный короткий курс по проектированию и реализации микросервисов на минимальном Twitter-стеке (Netty, Finagle, Finch, TwitterServer).
.
1. Netty — is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.
2. Finagle — is an extensible RPC system for the JVM, used to construct high-concurrency servers.
3. Finch — is a thin layer of purely functional basic blocks atop of Finagle for building composable HTTP APIs. Finch doesn’t hide the underlying API, but extends it with new abstractions.
4. TwitterServer — defines a template from which servers at Twitter are built. It provides common application components such as an administrative HTTP server, tracing, stats, etc. These features are wired in correctly for use in production at Twitter.
.
Надежные системы гарантируют корректность за счет статических проверок в момент компиляции, которые обеспечивает богатая система типов Scala. Также полезны краткость и ясность (соответствие формы — содержанию) кода. А именно особенно полезны:
— полнокровное функциональное программирование
— перегрузка операторов
.
Однако в современном мире мало успешно написать единичный экземпляр микросервиса — его необходимо поместить в правильное распределенное окружение, которое обеспечит
— Monitoring
— Alerting/visualization
— Distributed systems tracing infrastructure
— Log aggregation/analytics
И все это есть в Scala.
.
Обучение ведется в аудитории в Харькове.
.
Резюме высылайте на [email protected]. В ближайшее время со всеми выславшими резюме мы свяжемся.
.
P.S. Данный курс является вторым в серии Обучаем Scala/FP. БЕСПЛАТНО!.
---
UPDATE #0:
Программа по Netty:
— SEDA архитектура и Netty threading model
— IO, NIO, NIO.2, epoll, Channel/Selector abstractions, Reactor/Proactor patterns
— Netty memory-management module, off-heap memory
— Upstream/Downstream pipeline, EventLoop
— Demo: HTTP 1.1 Server

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

У меня что-то http стек под скалой вообще никак не идет. Сервис общается с внешними REST API и грузит довольно объемные json (до 3-4 мбайт). Так вот, иногда (а когда интернет тупит — довольно часто) мне тупо приходят битые json-ы. Под битыми я подразумеваю отсутствие целого куска по-средине или в конце. То есть приходит 200 OK но контент при этом недогружен.

Я бы еще понял если бы библиотека тупила, но юзал spray, dispatch (по капотом как раз netty использует), akka http — везде одно и то же, ±. Только стандартный source.fromUrl более-менее стабильно работает. Думал что может это просто сервис битые json-ы шлет, переписал все на, прости господи, go (чтобы на реальном проекте его прочувствовать) — работает как по маслу.

Даже не знаю что думать, такое впечатление что jvm под виндой тупит.

абсурд какой то
у jvm под виндой все нормально

Да вот понимаешь что абсурд, так как jvm на бэкэнде это стандарт, но «маємо те що маємо». Надо будет еще снифером проверить, что json из сервера приходит нормальный. Если по сниферу будет нормальный а в программе получу уже битый — придется пинять на jvm.

может настройки tcp подкрутит надо ?

Ну tcp тут точно не причем, это транспортный протокол, даже если он тупит и шлет на верх битые пакеты, задача http это разрулить, а не слать 200 ОК когда оно явно не ОК. Если бы tcp тупил, то сеть у меня вообще лежала бы. Возможно дело в настройках, у той же akka http есть куча настроек и способов отправить-получить запрос (у других библиотек на порядок меньше). Но блин, если для того, чтобы пообщаться с простеньким REST сервисом надо тюнить настройки http стека, то это дичь какая-то.

обычно не надо, как раз то что вы рассказываете дичь сплошная, я такого за 12 лет с жабой не видел )))

Звучит очень интересно

+1 присоединюсь в MoebiusM

+1 присоединюсь в Moebius

Upstream/Downstream pipeline

Уже давно inbound/outboud pipeline. Upstream/Downstream остались токо в 3-й нетти.

Описка, память подвела.

Цікаво буде послухати ваш курс, ви чудовий лектор

очень интересно!

интересно, тоже хочу

С местом уже определились ?

Скорее всего на «Фабрике».

EventLoop это конечно `модно`, его еще юзают?
уже HTTP2 есть, когда темы про него пойдут?

радует что микросервисы и Netty будут, иду

EventLoop это конечно `модно`, его еще юзают?
С точки зрения дизайна API действительно много более «свежих» идей:

— Iteratee
— Rx Observable
— ...
Однако, с точки зрения реализации, внутри (почти всегда) все равно находится цепочка пулов потоков (event loop-ов), которые последовательно выполняют стадии обработки запроса.

уже HTTP2 есть, когда темы про него пойдут?
У нас рекламный бизнес, тут старый добрый HTTP 1.1.

UPDATE #0:
Программа по Netty:
— SEDA архитектура и Netty threading model
— IO, NIO, NIO.2, epoll, Channel/Selector abstractions, Reactor/Proactor patterns
— Netty memory-management module, off-heap memory
— Upstream/Downstream pipeline, EventLoop
— Demo: HTTP 1.1 Server

Да, мы постараемся.

как твитер стек в жизни к стати? С нетти все понятно, остальное интереснее

Да, присоединяюсь к вопросу. Еще б если кто его сравнил со Spring Cloud стеком, было б интересно послушать — почитать

Підписатись на коментарі