From 6335d7763da437bbaa027c32a1c236a3523c8d8d Mon Sep 17 00:00:00 2001 From: flap flap Date: Thu, 4 Oct 2018 23:52:48 +0200 Subject: [PATCH 1/5] added readme-translation folder + added dutch translation until service discovery --- README.md | 4 +- .../README.en.md | 4 +- readme-translations/README.nl.md | 45 +++++++++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) rename README.en.md => readme-translations/README.en.md (98%) create mode 100644 readme-translations/README.nl.md diff --git a/README.md b/README.md index 56d76ee..1a22dce 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,9 @@ Эта открытая площадка предназначена для изучения [Spring Cloud](http://spring-projects.ru/projects/spring-cloud/) и [Kotlin](https://kotlinlang.ru/) на примерах. -_Читать на других языках: [In English](README.en.md)_ +Читать на других языках: +* [In English](readme-translations/README.en.md) +* [In het Nederlands](readme-translations/README.nl.md) ## Вклад diff --git a/README.en.md b/readme-translations/README.en.md similarity index 98% rename from README.en.md rename to readme-translations/README.en.md index 850e4d4..8f0c084 100644 --- a/README.en.md +++ b/readme-translations/README.en.md @@ -4,7 +4,9 @@ This playground is for learning [Spring Cloud](https://cloud.spring.io/) and [Kotlin](https://kotlinlang.org/) via examples. -_Read this in other languages: [На русском](README.md)_ +Read this in other languages: +* [На русском](///README.md) +* [In het Nederlands](README.nl.md) ## Contribution diff --git a/readme-translations/README.nl.md b/readme-translations/README.nl.md new file mode 100644 index 0000000..826381e --- /dev/null +++ b/readme-translations/README.nl.md @@ -0,0 +1,45 @@ +# Spring Cloud Voorbeeld + +[![Статус сборки](https://travis-ci.com/naXa777/spring-cloud-example.svg?branch=master&style=flat)](https://travis-ci.com/naXa777/spring-cloud-example) + +Deze speeltuin dient om [Spring Cloud](http://spring-projects.ru/projects/spring-cloud/) и [Kotlin](https://kotlinlang.ru/) te leren via voorbeelden. + +Lees dit in andere talen: +* [На русском](../README.md) +* [In English](readme-translations/README.en.md) + +## Bijdrage leveren + +💚 Start [here](https://github.com/naXa777/spring-cloud-example/issues). + +## Beschrijving + +> [Cloud-native](https://pivotal.io/de/cloud-native) is een aanpak om applicaties te builden en te runnen die de voordelen van het cloud computing model benut. + +> [Microservices](https://pivotal.io/microservices) is een aanpak op basis van architectuur om een applicatie te ontwikkelen als een verzameling van kleine services. Elke service implementeerd business each service implements business mogelijkheden, loopt in zijn eigen proces en communiceert via een HTTP API. Elke microservice kan worden gedployed, geüpgraded, geschaald en herstart onafhankelijk van andere services in de applicatie. Dit door een geautomatiseerd systeem. + +[(c) Pivotal](https://pivotal.io/de/cloud-native) + +We breken grote applicaties op in kleine stukjes genaamd 'services'. Elk van deze services kan worden gedeployed en geschaald op zichzelf. _Hoe lokaliseert de ene service de andere?_ + +### Service Ontdekking + +| Module | URL | +| :--------------: | :-----------------------: | +| discovery-server | `http://host:8761/eureka` | + +Er zijn verschillende manieren waarop je services in Spring Cloud kan ontdekken: + +* Spring Cloud [Consul](https://cloud.spring.io/spring-cloud-consul/) +* Spring Cloud [Zookeeper](https://cloud.spring.io/spring-cloud-zookeeper/) +* Spring Cloud [Netflix](https://cloud.spring.io/spring-cloud-netflix/) + +Dit project spitst zich voornamelijk toe op het laatste, het Spring Cloud Netflix project. Netflix heeft zijn framework van microservices publiek gemaakt. + +Om het gemakkelijk te houden is er een enkele instantie van de Eureka server +Daarom is de Eureka server geconfigureerd om zichzelf niet te proberen registreren bij zijn peers. +Je zou best meerdere ondekkingsservers maken voor een hogere beschikbaarheid in productie, verander hiervoor de volgende eigenschappen: + + eureka.client.register-with-eureka=true + eureka.client.fetch-registry=true + From bce706e7ecda51c48de90683e38cdc8fbb10201f Mon Sep 17 00:00:00 2001 From: flap flap Date: Fri, 5 Oct 2018 19:31:51 +0200 Subject: [PATCH 2/5] added dutch translation --- readme-translations/README.nl.md | 159 ++++++++++++++++++++++++++++++- 1 file changed, 158 insertions(+), 1 deletion(-) diff --git a/readme-translations/README.nl.md b/readme-translations/README.nl.md index 826381e..a04b3ae 100644 --- a/readme-translations/README.nl.md +++ b/readme-translations/README.nl.md @@ -22,7 +22,7 @@ Lees dit in andere talen: We breken grote applicaties op in kleine stukjes genaamd 'services'. Elk van deze services kan worden gedeployed en geschaald op zichzelf. _Hoe lokaliseert de ene service de andere?_ -### Service Ontdekking +### Service discovery | Module | URL | | :--------------: | :-----------------------: | @@ -43,3 +43,160 @@ Je zou best meerdere ondekkingsservers maken voor een hogere beschikbaarheid in eureka.client.register-with-eureka=true eureka.client.fetch-registry=true +#### Hoge Beschikbaarheid + +.... Bovendien verzekert het dat alle clients kunnen blijven werken wanneer er een Discovery Server uitvalt. + +Eureka is constantly ensuring that application services that it's returning or handing back to clients are healthy and available. + +Eureka was gebouwd met hoge toegangkelijkheid als mindset: + + * Het register is verdeeld (lokaal gecached op elke client). + * Clients _kunnen_ werken zonder discovery server (als de server uitvalt). + * Clients fetchen delta's om het register te updaten. + +#### Dashboard + +Een web-based Eureka dashboard is standaard ingeschakeld. Het laat nuttig informatie zoals metadata zien. + +In lokale omgevingen is het beschikbaar op http://localhost:8761 + +### Weer Service + +| Module | URL | +| :-------------: | :------------------------: | +| weather-service | `http://host:port/weather` | + +De `@EnableDiscoveryClient` annotatie wordt gebruikt om `WeatherServiceApplication` in een client van de Discovery Server te veranderen en het zorgt ervoor dat het geregistreerd wordt bij de Discovery Server als het opstart. + +### Weer App + +| Module | URL | +| :---------: | :--------------------------------: | +| weather-app | `http://host:port/current/weather` | + +### Datetime Service + +| Module | URL | +| :--------------: | :-------------------------: | +| datetime-service | `http://host:port/datetime` | + +De `@EnableDiscoveryClient` annotatie wordt gebruikt om `DatetimeServiceApplication` in een client van de Discovery Server te veranderen en het zorgt ervoor dat het geregistreerd wordt bij de Discovery Server als het opstart. + +### Datetime App + +| Module | URL | +| :----------: | :---------------------------------: | +| datetime-app | `http://host:port/current/datetime` | + +### Client + +| Module | URL | +| :-----: | :----------------: | +| client | `http://host:port` | + +De `@EnableDiscoveryClient` annotatie wordt gebruikt om `ClientApplication` in een client van de Discovery Server te veranderen. + +De Client moet niet registreren bij Eureka want men wilt niet dat iemand het kan ontdekken. Zodus is de volgende property op false gezet: + + eureka.client.register-with-eureka=false + +### Fouttolerantie + +In en gedistribueerd systeem is één ding onvermijdelijk... FALEN IS ONVERMIJDELIJK. + +Een bijzonder slecht effect van falen in een gedistribueerd systeem is een [cascading failure] (https://en.wikipedia.org/wiki/Cascading_failure). Van Wikipedia: + +> Het is een proces in een systeem van onderling verbonden delen waarin het falen van één of enkele onderdelen kan leiden tot het falen van andere onderdelen, enzovoort. + +Hoe omarm je falen? + + * Fouttolerantie + * Sierlijke degradatie + * Beperk middelen + +> [Circuit breaker design pattern](https://en.wikipedia.org/wiki/Circuit_breaker_design_pattern) is een ontwerppatroon dat wordt gebruikt in moderne softwareontwikkeling. Het wordt gebruikt om fouten te detecteren en kapselt de logica in om te voorkomen dat een fout zich voortdurend voordoet. + +(Van Wikipedia) + +#### Hystrix + +[Netflix Hystrix](https://github.com/Netflix/Hystrix) is een latency en ** fouttolerantie ** -bibliotheek die is ontworpen om toegangspunten tot externe systemen, services en bibliotheken van derden te isoleren, ** stop cascading failure ** en maak veerkracht mogelijk in complexe gedistribueerde systemen waar falen onvermijdelijk is. + +Zie [Hoe het werkt](https://github.com/Netflix/Hystrix/wiki/How-it-Works). + +#### Hystrix Dashboard + +| Module | URL | +| :----------------: | :------------------------: | +| hystrix-dashboard | `http://host:port/hystrix` | + +Documentatie: [Circuit Breaker: Hystrix Dashboard](https://cloud.spring.io/spring-cloud-static/Edgware.SR4/multi/multi__circuit_breaker_hystrix_dashboard.html) + +#### Turbine + +| Module | URL | +| :------: | :-------------------------------: | +| turbine | `http://host:3000/turbine.stream` | + +Het Hystrix-dashboard kan slechts één microservice tegelijkertijd bewaken. Als er veel microservices zijn, moet het Hystrix-dashboard dat verwijst naar de service telkens worden gewijzigd wanneer de microservices naar de monitor worden geschakeld. Het is vervelend. + +Turbine (geleverd door het Spring Cloud Netflix-project) verzamelt meerdere instanties Hystrix-statistiekenstromen, zodat het dashboard een totaaloverzicht kan weergeven. + +Config voorbeeld: + + turbine.app-config=weather-app,datetime-app + turbine.cluster-name-expression='default' + +## Lokaal Builden en Runnen + +### Voorbereiding + +Vóór de eerste build moet je extra stappen nemen. + + 1. Clone de repository. + 2. Definieer een aantal omgevingsvariabelen. + 3. 📗 _TODO_ + +Je hebt de vrijheid om build-tools voor dit project te kiezen: [Gradle](https://gradle.org/) of je favoriete IDE. +[IntelliJ IDEA](https://spring.io/guides/gs/intellij-idea/), [STS](https://stackoverflow.com/q/34214685/1429387) / [Eclipse](http://www.vogella.com/tutorials/EclipseGradle/article.html) of [NetBeans](https://netbeans.org/features/java/build-tools.html) moeten deze taak soepel afhandelen. + +### Gradle Wrapper Gebruiken + + ./gradlew :discovery-server:bootRun + ./gradlew :weather-service:bootRun + ./gradlew :weather-app:bootRun + ./gradlew :client:bootRun + ./gradlew :datetime-service:bootRun + ./gradlew :datetime-app:bootRun + ./gradlew :turbine:bootRun + ./gradlew :hystrix-dashboard:bootRun + +### IntelliJ IDEA Gebruiken + +1. Importeer root-project in IntelliJ IDEA +2. Synchroniseer projectbestanden met Gradle (initiële synchronisatie kan automatisch gebeuren) +3. Nu zou u voor elke module meerdere configuraties moeten uitvoeren. Voer ze één voor één uit: + 1. DiscoveryServerApplication + 2. WeatherServiceApplication + 3. WeatherAppApplication + 4. ClientApplication + 5. DatetimeServiceApplication + 6. DatetimeAppApplication + 7. TurbineApplication + 8. HystrixDashboardApplicatie + +Tip: zorg ervoor dat u ze op verschillende poorten uitvoert en deze poorten zijn gratis, anders krijgt u een foutmelding. + +## Deploying in de Cloud + +📗 _TODO_ + +## Continue Integratie + +| [Travis CI](https://travis-ci.com/) | [![Build Status](https://travis-ci.com/naXa777/spring-cloud-example.svg?branch=master&style=flat)](https://travis-ci.com/naXa777/spring-cloud-example) | +| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | + +## Licentie + +Dit project is gelicenseerd onder de voorwaarden van de [GNU GPL v3](https://www.gnu.org/licenses/gpl-3.0.en.html) licentie. \ No newline at end of file From f3ff838b9e2cb30797f6cac7705c0733bdb13c6e Mon Sep 17 00:00:00 2001 From: flap flap Date: Fri, 5 Oct 2018 19:34:06 +0200 Subject: [PATCH 3/5] changed bullet list to ordered list Since it was ordered using words --- README.md | 6 +++--- readme-translations/README.en.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 1a22dce..959b157 100644 --- a/README.md +++ b/README.md @@ -150,9 +150,9 @@ Turbine (проект Spring Cloud Netflix) собирает потоки (strea Перед первой сборкой приложения необходимо предпринять несколько дополнительных шагов. - - Первое: клонировать репозиторий. - - Второе: определить несколько переменных окружения. - - 📗 _TODO_ + 1. клонировать репозиторий. + 2. определить несколько переменных окружения. + 3. 📗 _TODO_ Вы обладаете свободой выбора средства для сборки этого проекта: [Gradle](https://gradle.org/) или любимая среда разработки. [IntelliJ IDEA](https://spring.io/guides/gs/intellij-idea/), [STS](https://stackoverflow.com/q/34214685/1429387) / [Eclipse](http://www.vogella.com/tutorials/EclipseGradle/article.html), или [NetBeans](https://netbeans.org/features/java/build-tools.html) должны справиться с этой задачей без проблем. diff --git a/readme-translations/README.en.md b/readme-translations/README.en.md index 8f0c084..2eb63bf 100644 --- a/readme-translations/README.en.md +++ b/readme-translations/README.en.md @@ -151,9 +151,9 @@ Config example: Before the first build you need to take additional steps. - - First, clone the repository. - - Second, define some environment variables. - - 📗 _TODO_ + 1. Clone the repository. + 2. Define some environment variables. + 3. 📗 _TODO_ You have a freedom of choosing build tools for this project: [Gradle](https://gradle.org/) or your favourite IDE. [IntelliJ IDEA](https://spring.io/guides/gs/intellij-idea/), [STS](https://stackoverflow.com/q/34214685/1429387) / [Eclipse](http://www.vogella.com/tutorials/EclipseGradle/article.html), or [NetBeans](https://netbeans.org/features/java/build-tools.html) should handle this task smoothly. From 2e3744f29c655487147ea2f1d9063a6ddb8db2b9 Mon Sep 17 00:00:00 2001 From: flap flap Date: Sat, 6 Oct 2018 20:04:06 +0200 Subject: [PATCH 4/5] changed path of readme reference --- readme-translations/README.en.md | 2 +- readme-translations/README.nl.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/readme-translations/README.en.md b/readme-translations/README.en.md index 2eb63bf..5d143f9 100644 --- a/readme-translations/README.en.md +++ b/readme-translations/README.en.md @@ -5,7 +5,7 @@ This playground is for learning [Spring Cloud](https://cloud.spring.io/) and [Kotlin](https://kotlinlang.org/) via examples. Read this in other languages: -* [На русском](///README.md) +* [На русском](../README.md) * [In het Nederlands](README.nl.md) ## Contribution diff --git a/readme-translations/README.nl.md b/readme-translations/README.nl.md index a04b3ae..01bb51e 100644 --- a/readme-translations/README.nl.md +++ b/readme-translations/README.nl.md @@ -6,7 +6,7 @@ Deze speeltuin dient om [Spring Cloud](http://spring-projects.ru/projects/spring Lees dit in andere talen: * [На русском](../README.md) -* [In English](readme-translations/README.en.md) +* [In English](README.en.md) ## Bijdrage leveren From cb540b0f835c58ba229ffb617b8c47e5a55a0627 Mon Sep 17 00:00:00 2001 From: Pizza Steve Date: Sat, 6 Oct 2018 23:46:56 +0200 Subject: [PATCH 5/5] fixed typos --- readme-translations/README.nl.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/readme-translations/README.nl.md b/readme-translations/README.nl.md index 01bb51e..e314f9e 100644 --- a/readme-translations/README.nl.md +++ b/readme-translations/README.nl.md @@ -1,6 +1,6 @@ # Spring Cloud Voorbeeld -[![Статус сборки](https://travis-ci.com/naXa777/spring-cloud-example.svg?branch=master&style=flat)](https://travis-ci.com/naXa777/spring-cloud-example) +[![Build status](https://travis-ci.com/naXa777/spring-cloud-example.svg?branch=master&style=flat)](https://travis-ci.com/naXa777/spring-cloud-example) Deze speeltuin dient om [Spring Cloud](http://spring-projects.ru/projects/spring-cloud/) и [Kotlin](https://kotlinlang.ru/) te leren via voorbeelden. @@ -16,7 +16,7 @@ Lees dit in andere talen: > [Cloud-native](https://pivotal.io/de/cloud-native) is een aanpak om applicaties te builden en te runnen die de voordelen van het cloud computing model benut. -> [Microservices](https://pivotal.io/microservices) is een aanpak op basis van architectuur om een applicatie te ontwikkelen als een verzameling van kleine services. Elke service implementeerd business each service implements business mogelijkheden, loopt in zijn eigen proces en communiceert via een HTTP API. Elke microservice kan worden gedployed, geüpgraded, geschaald en herstart onafhankelijk van andere services in de applicatie. Dit door een geautomatiseerd systeem. +> [Microservices](https://pivotal.io/microservices) is een aanpak op basis van architectuur om een applicatie te ontwikkelen als een verzameling van kleine services. Elke service implementeert business mogelijkheden, loopt in zijn eigen proces en communiceert via een HTTP API. Elke microservice kan worden gedployed, geüpgraded, geschaald en herstart onafhankelijk van andere services in de applicatie. Dit door een geautomatiseerd systeem. [(c) Pivotal](https://pivotal.io/de/cloud-native) @@ -49,7 +49,7 @@ Je zou best meerdere ondekkingsservers maken voor een hogere beschikbaarheid in Eureka is constantly ensuring that application services that it's returning or handing back to clients are healthy and available. -Eureka was gebouwd met hoge toegangkelijkheid als mindset: +Eureka was gebouwd met hoge toegankelijkheid als mindset: * Het register is verdeeld (lokaal gecached op elke client). * Clients _kunnen_ werken zonder discovery server (als de server uitvalt). @@ -199,4 +199,4 @@ Tip: zorg ervoor dat u ze op verschillende poorten uitvoert en deze poorten zijn ## Licentie -Dit project is gelicenseerd onder de voorwaarden van de [GNU GPL v3](https://www.gnu.org/licenses/gpl-3.0.en.html) licentie. \ No newline at end of file +Dit project is gelicenseerd onder de voorwaarden van de [GNU GPL v3](https://www.gnu.org/licenses/gpl-3.0.en.html) licentie.