Я не использовал Finagle или Akka на практике, но я много читал о них.
Finagle является системой RPC и Akka - инструментарием для высококонкурентных приложений, почему все люди сравнивают их как два возможных решения, которые нельзя использовать вместе? Все поисковые запросы, которые я сделал, предлагают использовать один или другой, никто не предлагает использовать их вместе.
Finagle, например, имеет очень интересный способ определения конечных точек через бережливость и его IDL. С помощью этого IDL мы могли бы определить пользовательскую конечную точку и с помощью scooge или любого инструмента генерации кода, можно было бы получить сервис без каких-либо усилий. Кроме того, клиент для подключения к этой службе создается с автоматическим разрешением множества общих проблем клиента (повторное подключение, тайм-аут, повторы, балансировка нагрузки, объединение пулов,...).
Akka вместо этого решает много головных болей concurrency, и он очень хорошо масштабируется без всех сложностей ручного управления резьбой.
Как резюме, почему бы не использовать их вместе?:
- Finagle + Thrift (с его IDL): он облегчает разработку и разработку услуг, а также развертывание (что включает в себя простоту масштабирования).
- Akka: он использует всю мощность сервера через свою систему Actor и очень хорошо масштабируется, если я меняю свойства сервера (например, если он развернут на EC2, и я конвертирую свой node из m1.small в m1.large).
Как вы думаете?
ПРИМЕЧАНИЕ. Предположим, что проблема определения фьючерсов и Promises разрешена, а также несоответствие между FuturePools и ExecutionContexts. Шаблон должен был бы преобразовать Finagle в способ scala использования фьючерсов.