Skip to content

Commit

Permalink
Step08
Browse files Browse the repository at this point in the history
  • Loading branch information
Ranga Rao Karanam authored and Ranga Rao Karanam committed Sep 9, 2017
1 parent 09fd513 commit 5500dba
Show file tree
Hide file tree
Showing 18 changed files with 1,237 additions and 11 deletions.
1 change: 1 addition & 0 deletions 03.microservices/git-localconfig-repo
Submodule git-localconfig-repo added at b508d1
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.in28minutes.microservices.limitsservice;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties("limits-service")
public class Configuration {

private int minimum;
private int maximum;

public void setMinimum(int minimum) {
this.minimum = minimum;
}

public void setMaximum(int maximum) {
this.maximum = maximum;
}

public int getMinimum() {
return minimum;
}

public int getMaximum() {
return maximum;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.in28minutes.microservices.limitsservice;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import com.in28minutes.microservices.limitsservice.bean.LimitConfiguration;

@RestController
public class LimitsConfigurationController {

@Autowired
private Configuration configuration;

@GetMapping("/limits")
public LimitConfiguration retrieveLimitsFromConfigurations() {
return new LimitConfiguration(configuration.getMaximum(),
configuration.getMinimum());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

@SpringBootApplication
public class LimitsServiceApplication {

public static void main(String[] args) {
SpringApplication.run(LimitsServiceApplication.class, args);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.in28minutes.microservices.limitsservice.bean;

public class LimitConfiguration {
private int maximum;
private int minimum;

protected LimitConfiguration() {

}

public LimitConfiguration(int maximum, int minimum) {
super();
this.maximum = maximum;
this.minimum = minimum;
}

public int getMaximum() {
return maximum;
}

public int getMinimum() {
return minimum;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
spring.application.name=limits-service

limits-service.minimum=9
limits-service.maximum=999
142 changes: 132 additions & 10 deletions 03.microservices/notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,31 +43,153 @@

### Diagrams

- http://viz-js.com/
- http://dreampuf.github.io/GraphvizOnline/

```
MicroserviceCommunication
~~~~~~~~~~~~~~~~~~~~~~~~~
digraph architecture {
rankdir=TB;
{rank=same; CurrencyCalculationService, CurrencyExchangeService, LimitsService};
Configuration[shape=cylinder]
Database[shape=cylinder]
LimitsService, CurrencyCalculationService, CurrencyExchangeService[shape=component]
CurrencyCalculationService -> CurrencyExchangeService -> LimitsService;
CurrencyExchangeService->Database;
LimitsService->Configuration;
}
Microservices-Environments
~~~~~~~~~~~~~~~~~~~~~~~~~~~`
digraph architecture {
rankdir=LR;
node[shape=record]
LimitsService, CurrencyCalculationService, CurrencyExchangeService[shape=component]
subgraph Consumer {
Consumer[shape=plaintext] -> CurrencyCalculationService -> CurrencyExchangeService;
{rank=same; CurrencyCalculationService,instance1,instance2,instance3};
}
CurrencyCalculationService -> CurrencyExchangeService -> LimitsService
subgraph CurrencyCalculationService {
{rank=same; CurrencyCalculationService,instance1,instance2,instance3};
{rank=same; CurrencyCalculationService,CCDEV,CCQA,CCSTAGE, CCPROD};
}
subgraph CurrencyExchangeService {
CurrencyExchangeService;
{rank=same; CurrencyExchangeService,instanceA,instanceB};
{rank=same; CurrencyExchangeService,CEDEV,CEQA, CESTAGE, CEPROD};
}
subgraph LimitsService {
CurrencyExchangeService;
{rank=same; LimitsService,LSDEV,LSQA, LSSTAGE, LSPROD};
}
}
SpringCloudConfigServer
#######################
digraph architecture {
rankdir = TB;
node[shape=component]
Git[shape=cylinder]
{rank=same; CurrencyCalculationService, CurrencyExchangeService, LimitsService};
CurrencyExchangeService -> SpringCloudConfigServer;
CurrencyCalculationService -> SpringCloudConfigServer;
LimitsService -> SpringCloudConfigServer
SpringCloudConfigServer -> Git
}
EUREKANAMINGSERVER
#######################
digraph architecture {
rankdir = TB;
node[shape=component]
{rank=same; CurrencyCalculationService, CurrencyExchangeService, LimitsService};
CurrencyExchangeService -> EurekaNamingServer;
CurrencyCalculationService -> EurekaNamingServer;
LimitsService -> EurekaNamingServer
}
RibbonClientSideLoadBalancing
#######################
digraph architecture {
rankdir = TB;
node[shape=component]
Ribbon[shape=underline]
{rank=same; CurrencyExchangeService1, CurrencyExchangeService2, CurrencyExchangeService3};
{rank=same; Ribbon, NamingServer };
Ribbon -> CurrencyExchangeService1
Ribbon -> CurrencyExchangeService2
Ribbon -> CurrencyExchangeService3
CurrencyCalculationService -> Ribbon
Ribbon -> NamingServer
}
ZipkinDistributedTracingServer
###############################
digraph architecture {
rankdir = TB;
node[shape=component]
Database[shape=cylinder]
RabbitMQ[shape=underline]
{rank=same; CurrencyCalculationService, CurrencyExchangeService, LimitsService};
CurrencyExchangeService -> RabbitMQ
CurrencyCalculationService -> RabbitMQ;
LimitsService -> RabbitMQ
RabbitMQ -> ZipkinDistributedTracingServer
ZipkinDistributedTracingServer -> Database
}
CurrencyExchangeMicroserviceDeployment
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``
digraph architecture {
rankdir = TB;
node[shape=record]
{rank=same; DEV, QA, STAGE, PROD};
DEV -> DEV1
QA -> QA1
QA -> QA2
STAGE -> STAGE1
PROD -> PROD1
PROD -> PROD2
PROD -> PROD3
PROD -> PROD4
}
CurrencyConversionMicroserviceDeployment
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``
digraph architecture {
rankdir = TB;
node[shape=record]
{rank=same; DEV, QA, STAGE, PROD};
DEV -> DEV1
QA -> QA1
QA -> QA2
STAGE -> STAGE1
PROD -> PROD1
}
```

## Complete Code Example
Expand Down
106 changes: 106 additions & 0 deletions 03.microservices/spring-cloud-config-server/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.in28minutes.microservices</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>spring-cloud-config-server</name>
<description>Demo project for Spring Boot</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.M3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.M2</spring-cloud.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>


</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.in28minutes.microservices.springcloudconfigserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@EnableConfigServer
@SpringBootApplication
public class SpringCloudConfigServerApplication {

public static void main(String[] args) {
SpringApplication.run(SpringCloudConfigServerApplication.class, args);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
spring.application.name=spring-cloud-config-server
server.port=8888
spring.cloud.config.server.git.uri=file:///in28Minutes/git/spring-micro-services/03.microservices/git-localconfig-repo
Loading

0 comments on commit 5500dba

Please sign in to comment.