Jak zagwarantować przetworzenie wiadomości dokładnie raz przy komunikacji asynchronicznej? Krótki opis powtarzających się problemów i pułapek.
Programowanie rozproszone 1072 dni, 22 godziny, 22 minuty temu 93 źrodło rozwiń
Czym właściwie jest Kafka i jakie są jej zastosowania? Zgodnie z definicją jest to platforma przeznaczona głównie do przetwarzania danych strumieniowo. Ciekawostką jest, że projekt zapoczątkowano w LinkedIn, a w późniejszym etapie stał się open-source’owy.
Programowanie rozproszone 1149 dni, 22 godziny, 48 minut temu 69 źrodło rozwiń
Pierwszy wpis na blogu i zarazem mój debiut. Co prawda ten artykuł z .NET powiązany nie jest - ale nie wykluczam w przyszłości i takich z pogranicza .NET – Data ;) Każdy feedback będzie mile widziany.
Programowanie rozproszone 1318 dni, 23 godziny, 31 minut temu 27 źrodło rozwiń
Chcemy, aby nasze aplikacje w Apache Spark wykorzystywały wszystkie przydzielone zasoby. Niestety nie jest to takie proste. Rozproszenie obliczeń niesie za sobą koszty zarządzania zadaniami, a same zadania mają wobec siebie zależności. Z jednej strony ogranicza nas CPU (szybkość obliczeń), z drugiej strony dyski i sieć. MapReduce poświęciłem dedykowany materiał wideo. W artykule dowiesz się jak w 2 prostych krokach poprawić utylizację zasobów w Apache Spark.Spis treścihide1Prosta aplikacja2Nie taka prost...
Programowanie rozproszone 1352 dni, 22 godziny, 28 minut temu 14 źrodło rozwiń
If you want to know : - why I think that distributed systems are like Rocky Balboa. - the difference between Saga, Process Manager and Choreography. Here's my take on that together with the real-world samples.
Programowanie rozproszone 1378 dni, 22 godziny, 29 minut temu 158 źrodło rozwiń
gRPC is a modern open source remote procedure call framework. There are many exciting features in gRPC: real-time streaming, client-to-server code generation, and great cross-platform support to name a few. The most exciting to me, and consistently mentioned by developers who are interested in gRPC, is performance. Last year Microsoft contributed a new implementation of gRPC for .NET to the CNCF. Built on top of Kestrel and HttpClient, gRPC for .NET makes gRPC a first-class me...
Programowanie rozproszone 1483 dni, 22 godziny, 53 minuty temu 78 źrodło rozwiń
Było o HDFS. Teraz wjeżdża temat MapReduce. Trzeba zagonić serwery do roboty 😈
Programowanie rozproszone 1592 dni, 59 minut temu 100 źrodło rozwiń
Dlaczego nie wystarczy nam macierz i jak działa HDFS.
Programowanie rozproszone 1598 dni, 23 godziny, 50 minut temu 103 źrodło rozwiń
Obrazy Dockera są łatwe w obsłudze. Nie musimy instalować konkretnej wersji środowiska, bibliotek i innych zależności. Wszystko powinno być zamknięte w abstrakcji zwanej kontenerem. Możemy je uruchamiać i skalować w Docker Swarm lub Kubernetes. W tym wpisie zajmiemy się dockeryzacją aplikacji Kafka Streams na przykładzie strumienia dla lokalizacji autobusów ZTM przedstawionym w poprzednim wpisie.Spis treścihide1Zmiany w pom.xml2Zmiany w kodzie aplikacji Kafka Streams3Dockerfile4Zbudowanie obrazu Docker5D...
Programowanie rozproszone 1653 dni, 23 godziny, 32 minuty temu 34 źrodło rozwiń
Czasami klasyczne Kafka DSL nam nie wystarcza. Processor API pozwala na dowolne zdefiniowanie procesora, a co najlepsze, wykorzystanie State Store. W tym przypadku obliczymy prędkość, kierunek i dystans pojazdów komunikacji miejskiej w Warszwie.Spis treścihide1Rozkład jazdy2Źródło3Plan4Dlaczego Processor API?5No to lecimyOdczyt danych z KafkiTestyTopologiaProcesorTesty6Czy z prawdziwą Kafką też działa?7Repozytorium8PodsumowaniePodobneRozkład jazdyKafka Streams 101 – de/serilizacjaKafka Streams 102 – Wyją...
Programowanie rozproszone 1667 dni, 7 minut temu 29 źrodło rozwiń
Błędy zdarzają się każdemu. Prędzej czy później nasza aplikacja Kafka Streams dostanie wiadomość, która ją zabije (Poison Pill). Niestety uruchomienie jej ponownie nie pomoże, dopóki wiadomość nie zniknie z kolejki. W tym wpisie spróbujemy obsłużyć takie wiadomości i zapisać je do Dead Letter Queue.Spis treścihide1Rozkład jazdy2Poison Pill3Rozwiązania4Problemy5Dead Letter Queue6Filtrowanie wadliwych rekordówPodczas deserializacjiPodczas transformacji7Wykorzystanie Dead Letter QueuePodczas deserializacjiP...
Programowanie rozproszone 1695 dni, 23 godziny, 38 minut temu 29 źrodło rozwiń
Kto lubi ciasto? Ja uwielbiam! Zwłaszcza takie dotnetowe :) Cake pozwala pisać build skrypty w C#. Zamiast ręcznie uruchamiać skrypty, albo bawić się Powershellem, można je zaprogramować w znanym języku. Co lepsze, można stworzyć repozytorium i w nim trzymać cały kod związany z deploymentem
Programowanie rozproszone 1703 dni, 22 godziny, 21 minut temu 66 źrodło rozwiń
Przetwarzanie strumieniowe jest dzisiaj standardem. Skoro i tak większość osób korzysta z Apache Kafka jako kolejki, czemu nie spróbować Kafka Streams? Jest to rozwiązanie skalowalne i nie wymaga specjalnych środowisk typu YARN czy Apache Mesos. Ten wpis rozpoczyna serię wpisów dotyczących Kafka Streams.Spis treścihide1Cel2Podstawy3Środowisko4Pierwszy strumień – LowerCaseStream5De/Serializacja z łapyPoison Pill6De/Serializacja nie z łapyPoison Pill7Co dalej?8RepozytoriumPodobneCel We wpisach z tego cykl...
Programowanie rozproszone 1709 dni, 23 godziny, 10 minut temu 48 źrodło rozwiń
Ostatni wpis zamknął serię związaną z implementacją mikroserwisów jako takich. Jest jednak jeszcze wiele tematów związanych z ich utrzymywaniem i wdrażaniem, które chciałbym sukcesywnie poruszać na blogu. Dziś zaczniemy od moim zdanim kluczowego mechanizmu, bez którego praca z systemem rozproszonym na produkcji może okazać się piekłem. Cym jest rozproszone śledzenie? Wyobraź sobie, że zakończył się etap implementacj...
Programowanie rozproszone 1850 dni, 22 godziny, 40 minut temu 160 źrodło rozwiń
W poprzednim wpisie poruszyłem tematykę transakcji biznesowych w systemach rozproszonych, przedstawiając różne sposoby na ich projektowania i kontrolowanie. Dziś, zgodnie z zapowiedzią przedstawię kod C#, który będzie niczym innym jak implementacją hybrydową wzorca saga/oraz process manager. Bez zbędnego przedłużania, zaczynajmy! Chronicle – potrzeba matką wynalazków… Jeżeli czytałeś/aś...
Programowanie rozproszone 1862 dni, 23 godziny, 39 minut temu 352 źrodło rozwiń
A little while ago I blogged here and I set it up to be a "continues..." style post. I haven't had the energy to continue it in that context, and this fact was putting me off concluding the post. I then realised: the thing that matters isn't some overarching narrative structure, but that I get my ideas down. So: I'm aborting any attempt at making this post a continuation, and just focusing on the content! There's been a lot of confusion over when to use Task[
Programowanie rozproszone 1913 dni, 23 godziny, 38 minut temu 116 źrodło rozwiń
Dziś odpowiedź na zdecydowanie najczęściej zadawane pytanie w kontekście naszego projektu DShop. Brzmi ono „w jaki sposób użytkownik końcowy aplikacji wie czy jego komenda została (i kiedy została) przetworzona?”. Na pierwszy rzut oka odpowiedź na to pytanie może wydawać się trywialna, prawda? Wszak większość typowych aplikacji webowych po wykonaniu jakiejś akcji informuje nas o jej powodzeniu lub błędzie poprzez np. toastry...
Programowanie rozproszone 2058 dni, 23 godziny, 56 minut temu 329 źrodło rozwiń
Kontynuujemy naszą podróż z mikroserwisami! Dziś przejdziemy do nieco bardziej „zaawansowanych” zagadnień, które mam nadzieje okażą się dla Ciebie zrozumiałe, a ich użycie – zasadne. Zacznijmy od problemu, aby móc w ogóle przejść do tematu dzisiejszego wpisu. Jak zapewne pamiętasz we wpisie o odczycie danych przedstawiłem bibliotekę RestEase, dzięki której w łatwy sposób mogliśmy wykonywać żądania HTTP z API Gateway do konkr...
Programowanie rozproszone 2095 dni, 21 godzin, 53 minuty temu 225 źrodło rozwiń
Pierwszy odcinek naszego obiecanego kursu o mikroserwisach.
Programowanie rozproszone 2175 dni, 22 godziny, 22 minuty temu 171 źrodło rozwiń
Akka.NET is quite opinionated in terms of persistence. Paraphrasing Henry Ford’s famous quote: You can persist your data any way you want in Akka.NET, so long as you use event sourcing. But what if you don’t want to? Perhaps the problem you are trying to solve doesn’t overlap with this particular mental model, and yet you think you can still gain a lot by leveraging Akka. Then you have to bake your own solution. In this blog post, I would like to show you one way of integrating Akka.NET with an ORM. To k...
Programowanie rozproszone 2228 dni, 22 godziny, 49 minut temu 131 źrodło rozwiń