1. 程式人生 > >簡單spring cloud應用搭建

簡單spring cloud應用搭建

一、 spring cloud 微服務架構

二、 一步一步 搭建spring cloud應用

service client

Service:提供服務的應用,埠是 808x的形式 Client:呼叫服務的應用 埠是809x的形式 整個程式以根據client端根據使用者id呼叫服務端程式返回使用者資訊做示例。

  • 1、 兩個單體spring boot應用呼叫 本節講的比較簡單,分別新建兩個普通的spring boot 應用,不使用任何spring cloud相關的東西,service 端提供一個restful介面服務,client端通過RestTemplate來進行呼叫 首先只需要建立兩個單獨的Spring boot應用,服務端的埠為8081,客戶端的埠是8071,然後在客戶端用RestTemplate 呼叫即可,服務端的程式碼不貼了,就是用spring initializr 建立的一個普通的spring boot web專案,主要是說一下客戶端的呼叫。

配置RestTemplate

@Configuration
public class ConfigurationBean {
    private SimpleClientHttpRequestFactory getHttpRequestFactory(){
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setConnectTimeout(10000);
        factory.setReadTimeout(10000);
        return factory;

呼叫方式

@RestController
@RequestMapping("/client/user")
public class UserApi {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/{id}")
    public String getUser(@PathVariable("id") String id){
        String forObject = restTemplate.getForObject("http://localhost:8081/user/1", String.class);
        return forObject;
    }
}

分別啟動service和client,通過呼叫訪問http://localhost:8080/client/user/1,返回服務端資料,當然restTemplate還有很多其他的方法可用,自己在實際使用的時候可以去探究。

  • 2、 以上就完成了兩個微服務間通訊,客戶端呼叫服務端的介面,功能完畢,但是這指定不是我們想要的姿勢,我們在客戶端,使用restTemplate寫死了服務端的地址。在實際的生產環境中,我們的服務端不可能只有一臺,我們的服務端也不可能只有一臺機器。我們將面臨以下問題:
  • 橫向擴充套件服務
  • 服務端和客戶端機器上下線

為了解決不想寫死服務端的地址,並且能動態的切換對服務端機器的呼叫的問題,引入註冊中心的概念,說起來註冊中心,我們通常會想起來zookeeper,但是spring cloud中並沒有採用zookeeper,而是採用了Eureka,zookeeper和Eureka對於保證CAP定理中的方式不同,zookeeper比較注重CP(一致性,分割槽耐受性),而對於Eureka來說重點保證AP(一致性和分割槽耐受性)。 註冊中心有了,那客戶端的請求是如何分發到相應某一臺伺服器上呢,也許我們用過nginx,nginx通過配置伺服器的權重, ip hash或者隨機以及輪訓這些策略進行分配伺服器,對於spring cloud 來說,幹這個活的是Ribbon。接下來就通過改造第一步的專案來讓它支援以上這些需求。 首先需要搭建一個EurekaServer,也就是註冊中心,和zookeeper是一個需要安裝的軟體不同,Eureka是一個內建在spring boot start中的一個應用程式,我們只需要引入spring-boot-start-eureka,然後啟動專案即可。在這之前說一下EurekaServer和我們應用程式的關係。

EurekaServer 作為註冊中心,接收服務端的註冊一級客戶端對服務端服務列表的請求, Eureka Client內嵌到應用程式中,用於註冊服務或者獲取服務。
搭建EurekaServer

pom.xml

<?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.wtf.cloud</groupId>
   <artifactId>eureka-server</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>

   <name>eureka-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.RELEASE</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.M8</spring-cloud.version>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-eureka-server</artifactId>
         <version>1.4.3.RELEASE</version>
      </dependency>


   </dependencies>

   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-parent</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-milestones</id>
         <name>Spring Milestones</name>
         <url>https://repo.spring.io/milestone</url>
         <snapshots>
            <enabled>false</enabled>
         </snapshots>
      </repository>
   </repositories>


</project>

main檔案

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

   public static void main(String[] args) {
      SpringApplication.run(EurekaServerApplication.class, args);
   }
}

配置檔案 application.yml

server:
  port: 8888
spring:
  application:
    name: eureka-server
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    serviceUrl:
      defaultZone: http://localhost:8888/eureka/

應用的埠為8888
應用名稱:eureka-server 然後是配置eureka的相關東西 在預設設定下,改服務註冊中心也會將自己組委客戶端來嘗試註冊它自己,所以我們需要禁止它的客戶端行為
eureka.client.register-with-eureka=false
由於該應用屬於註冊中心,所以設定為false,代表不像註冊中心註冊自己
eureka.client.fetch-registry=false
由於註冊中心的職責是維護服務例項,它並不需要去檢索服務,所以也設定為false。 更多配置可以參照EurekaInstanceConfigBean 和EurekaClientConfigBean
啟動服務訪問http://localhost:8888/ 可以看到如下介面:

相關推薦

簡單spring cloud應用搭建

一、 spring cloud 微服務架構 二、 一步一步 搭建spring cloud應用 service client Se

Spring Cloud 應用篇 之 Hystrix Dashboard(斷路器監控) 的基本搭建

在以往的文章裡,已經講解了 斷路器 Hystrix 的基本使用,現在將介紹斷路器的監控 Hystrix Dashboard 的基本搭建。(一)簡介Hystrix Dashboard 是 Hystrix 的儀表盤元件,提供了資料監控,可以實時監控 Hystrix 的各個指標,然

Spring Cloud 應用篇 之 Hystrix Turbine(斷路器聚合監控)的基本搭建

在講解了 Hystrix Dashboard 之後,我們知道了,Hystrix Dashboard 實現的是單節點模式,一次只能監控一個服務,當有很多服務的時候,這樣單節點模式去監控,就需要開啟多個瀏覽器視窗,顯然這是很麻煩的。這個時候,我們就可以用到 Spring Clou

Spring Cloud應用程序上下文服務

spring springboot springcloud 配置 bootstrap Spring Boot對於如何使用Spring構建應用程序有一個看法:例如它具有常規配置文件的常規位置,以及用於常見管理和監視任務的端點。Spring Cloud建立在此之上,並添加了一些可能系統中所有組

Spring Cloud - 應用程序上下文服務

外部 posit 優先 如果 eve 並且 tps 指定 enable Spring Boot對於如何使用Spring構建應用程序有一個看法:例如它具有常規配置文件的常規位置,以及用於常見管理和監視任務的端點。Spring Cloud建立在此之上,並添加了一些可能系統中所

使用docker發布spring cloud應用

tap -s eight 端口 left 虛擬 http str entos 本文涉及到的項目:   cloud-simple-docker:一個簡單的spring boot應用   Docker是一種虛擬機技術,準確的說是在linux虛擬機技術LXC基礎上又封裝了一層,可

spring cloud 初步搭建1-1(eureka配置)

技術 特點 target .com 組件 console oot 配套 quick 本次版本基於spring cloud (Finchley.RELEASE) spring boot ( 2.0.4.RELEASE ) 踩坑1:spring cloud從 2.0.幾開始,需

Spring boot Spring cloud 框架搭建

隨筆記載幾個框架搭建時的坑; 這個是server提供者模組,需要注意的是spring:application:name 接下來是fegin模組,需要主要注意資訊已說明,需要特別說明的是RequestMapping 的 value值 必須的提供者中的 Controller RequestMap

Spring Cloud 應用篇 之 Spring Cloud Config(配置中心)

為了方便儲存,轉自:https://blog.csdn.net/hubo_88/article/details/80692156 從前幾篇文章中我們就可以看出,在分散式系統中,服務數量會很多,如果要修改服務的配置檔案,會很麻煩,這個時候,我們想把配置檔案放在一個地方統一管理,實時更新,Sprin

阿裏雲ACM:雲原生配置管理利器,讓雲上的Spring Cloud應用配置管理舞動起來

消息 存儲 內容 中心 product e30 yun nac 架構 在傳統架構中,如果配置信息有變更,通常是登陸服務器手動修改配置來使配置生效。在微服務架構中,應用數和節點數由於微服務化數量激增,導致發布次數增加,配置變更難度加大,通常是將應用配置抽象出來放置在外部的配置

Spring Cloud --zuul搭建 之 自定義 filter

上篇文章已經介紹了,zuul基本的搭建,這篇文章 介紹一下自定義 Filter 首先 在 Zuul 模組中 新增加 兩個java 類 zuul1Filter 內容如下: package com.springcloud.zuul.filter; import com.netfl

Spring Cloud --zuul搭建

 Zuul的作用就是路由轉發和過濾, 即將請求轉發到微服務或攔截請求; Zuul預設集成了負載均衡功能。       下面建立一個zuul工程:       開啟IntelliJ Idea ---> New

spring cloud 初步搭建完成總結

      跌跌撞撞三個月,中間有出差,有懶散,但還是將spring cloud 的學習框架搭建完成了,這幾個月的學習,讓我明白了spring cloud的各個元件的整合以及應用:知道了Eureka,Hystrix,Ribbon,Feign,Zuul, Spring Clou

Spring-cloud體系搭建 01

1. Eureka簡介 在任何的分散式架構中,都需要去尋找服務的物理機器地址,我們稱之為服務發現,Eureka就是解決這類問題的元件。它是類似於Zookeeper的服務註冊中心元件,但Eureka保證了服務的高可用性,它自身的叢集機制和服務保護機制是其核心機

在 Intellij IDEA 中部署 Spring Boot / Spring Cloud 應用到阿里雲

Spring Cloud 和 Spring Boot 可以說是當前最流行的微服務開發框架了,在本文中,將向讀者介紹如何在 在 Intellij IDEA 中部署 Spring Boot / Spring Cloud 應用到阿里雲。(Eclipse 平臺請移步《在 Eclipse 中部署

Intellij IDEA 部署 Spring Boot / Spring Cloud 應用到阿裏雲

編寫 www. uil 介紹 ping target .class 部署 ofo Spring Cloud 和 Spring Boot 可以說是當前最流行的微服務開發框架了,在本文中,將向讀者介紹如何在 在 Intellij IDEA 中部署 Spring Boot / S

Spring Cloud Eureka 搭建服務端和客戶端

前言 在Eureka的服務治理體系中,主要分為服務端和客戶端 服務端:註冊中心 構建高可用的註冊中心集群后,每個註冊中心也是體系中的客戶端,只是註冊中心除了作為客戶端之外,還為其他客戶端提供了服務註冊的特殊功能) 客戶端:提供介面的微服務應用 Spri

Spring Cloud應用監控與管理Actuator

  由於我們把一個複雜高耦合的單體系統拆分成了多個小型服務,所以部署應用的數量在不斷增長,造成維護複雜度大大提升。所以我們需要一套自動化的監控運維機制,這套運維機制可以不間斷的獲取每個服務應用的各種指標,並根據這些指標資訊來制定監控預警規則。        Spring B

使用docker釋出spring cloud應用

 本文涉及到的專案:   cloud-simple-docker:一個簡單的spring boot應用   Docker是一種虛擬機器技術,準確的說是在linux虛擬機器技術LXC基礎上又封裝了一層,可以看成是基於LXC的容器技術。可以把容器看做是一個簡易版的Linu

Spring Cloud學習一:服務治理Spring Cloud Eureka搭建高可用註冊中心

Spring Cloud Eureka是Spring Cloud NetFlix微服務套件中的一部分,基於NetFlix Eureka做了二次封裝,主要負責完成微服務架構中的服務治理功能,是微服務架構中最為核心和基礎的模組,既包含了服務端元件,也包含了客戶端元件。 又涉及到服務註冊與服務發現兩個