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 25 dni, 1 godzinę, 16 minut temu 104 ź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 130 dni, 1 godzinę, 40 minut temu 64 źrodło rozwiń
Było o HDFS. Teraz wjeżdża temat MapReduce. Trzeba zagonić serwery do roboty 😈
Programowanie rozproszone 238 dni, 3 godziny, 46 minut temu 96 źrodło rozwiń
Dlaczego nie wystarczy nam macierz i jak działa HDFS.
Programowanie rozproszone 245 dni, 2 godziny, 37 minut temu 102 ź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 300 dni, 2 godziny, 19 minut temu 29 ź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 313 dni, 2 godziny, 54 minuty 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 342 dni, 2 godziny, 25 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 350 dni, 1 godzinę, 8 minut temu 64 ź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 356 dni, 1 godzinę, 57 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 497 dni, 1 godzinę, 27 minut temu 149 ź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 509 dni, 2 godziny, 26 minut temu 271 ź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 560 dni, 2 godziny, 25 minut temu 111 ź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 705 dni, 2 godziny, 43 minuty temu 314 ź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 742 dni, 40 minut temu 201 źrodło rozwiń
Pierwszy odcinek naszego obiecanego kursu o mikroserwisach.
Programowanie rozproszone 822 dni, 1 godzinę, 9 minut temu 164 ź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 875 dni, 1 godzinę, 36 minut temu 127 źrodło rozwiń
Od mojego ostatniego artykułu, w którym wspominałem o rabbicie, minął prawie rok. Chyba najwyższa pora, aby napisać coś więcej. Szczególnie, że ostatnio w moje łapki wpadła bardzo ciekawa książka: Let’s learn 🙂 @[email protected]#neverstoplearningpic.twitter.com/ymGlRp6Ytq — Kamil Kiełbasa (@bd90) Tak off-topic – jeżeli chcielibyście, abym skrobnął drobną recenzję tej książki, dajcie mi znać 🙂 Moją nową miłością okazało się tworzenie aplikacji rozproszonych przy wykorzystaniu DDD, TDD i je...
Programowanie rozproszone 927 dni, 1 godzinę, 27 minut temu 165 źrodło rozwiń
Programowanie asynchroniczne na dobre zagościło na platformie .NET. Proces transformacji wszystkich bibliotek nie był najszybszy, ale większość liczących się graczy na rynku komponentów przygotowało już wersje asynchroniczne. Z przyrostkiem Async czy bez, metody zwracające Task albo Task stały się naszą codziennością, zwiększając przepustowość aplikacji i zmniejszając jałowy czas czekania na zwrócenie danych przez bazę (albo dowolne inne IO). Zatem skoro cała asynchroniczność miała przynieść takie zyski...
Programowanie rozproszone 972 dni, 2 godziny, 5 minut temu 136 źrodło rozwiń
ASP.NET Core 2.1 was released by Microsoft at the end of May, and last week we deployed two consumer-facing applications upgraded to use ASP.NET Core 2.1 to production for the first time. These applications have now been run in production for an entire weekend of peak traffic, and we’ve seen some great performance improvements – in some cases improving average response times by over 40%.
Programowanie rozproszone 976 dni, 1 godzinę, 8 minut temu 44 źrodło rozwiń
There are some common questions when it comes to microservices. One of them is „how to forward request from API gateway to the particular microservice?”. There’s no rule of thumb here because everyone has a slightly different approach, but the most popular solution I know is:For writes, so creates, updates and deletes (CUD) create a command and publish it to the service bus based on a queue like RabbitMQ.For reads (GET) forward the HTTP request to the internal API (not p...
Programowanie rozproszone 1146 dni, 3 godziny, 22 minuty temu 154 źrodło rozwiń