微服務環境搭建SpringCloud


                        微服務環境搭建SpringCloud

1.什么是單體應用:

  單體應用項目中的資源都在一個應用中,打包成一個war包,用一個tomcat啟動的服務就是單體應用

   單體應用的好處:

      (1)小的項目性能比微服務的性能高

      (2)集成快,適合數據量小的項目,比如內部自己用的項目

   單體應用的壞處:

      (1)一個模塊掛了,整個項目都受影響

      (2)單個tomcat更能處理的並發有限,可以做集群,但是不方便局部(某一個模塊)擴展

      (3)維護/開發/升級比較麻煩

      (4)代碼臃腫,編譯,打包都比較慢

      (5)技術選型單一

      (6)數據庫選型單一

  

 

 

2.什么是微服務:

 

  微服務就是把一個大的系統拆分成多個小的服務,每個服務只專注自己的一個業務,每個服務有各自的進程
     微服務之間使用的網絡通信協議進行數據交換的(通常是基於HTTP的RESTful API)
3.微服務的遠程調用方式:

 

  1.RPC

 

    (1).Remote Produce Call遠程過程調用,類似的還有RMI自定義數據格式,基於原生TCP通信,速度快,效率高。早期的webservice,現在熱門的dubbo,都是RPC的典型

  2.Http

 

    (1).Http:http其實是一種網絡傳輸協議,基於TCP,規定了數據傳輸的格式。現在客戶端瀏覽器與服務端通信基本都是采用Http協議。也可以用來進行遠程服務調用。缺點是消息封裝臃腫。

 

  現在熱門的Rest風格,就可以通過http協議來實現

 

 

4.認識RPC

  RPC,即 Remote Procedure Call(遠程過程調用),是一個計算機通信協議。 該協議允許運行於一台計算機的程序調用另一台計算機的子程序,而程序員無需額外地為這個交互作用編程。說得通俗一點就是:A計算機提供一個服務,B計算機可以像調用本地服務那樣調用A計算機的服務。

5.RPC調用流程圖  

 

 

 

 

 

6.認識Http

  Http協議:超文本傳輸協議,是一種應用層協議。規定了網絡傳輸的請求格式、響應格式、資源定位和操作的方式等。但是底層采用什么網絡傳輸協議,並沒有規定,不過現在都是采用TCP協議作為底層傳輸協議。說到這里,大家可能覺得,HttpRPC的遠程調用非常像,都是按照某種規定好的數據格式進行網絡通信,有請求,有響應。沒錯,在這點來看,兩者非常相似,但是還是有一些細微差別。

- RPC並沒有規定數據傳輸格式,這個格式可以任意指定,不同的RPC協議,數據格式不一定相同。

- Http中還定義了資源定位的路徑,RPC中並不需要

 

7.單體應用和微服務的比較圖

 

 

 8.微服務的特點

  • 數據庫選型多樣化

  • 技術選型多樣化

  • 每個微服務專注一個業務

  • 每個維護有自己的進程

  • 微服務之間通過網絡協議進行通信

  • 方便做局部拓展

  • 開發/維護/升級更方便

 

 

 

9.微服務的缺點

  • 成本高

  • 技術要求比較高

  • 部署麻煩

 

10Springcloud入門環境的搭建

  1.搭建注冊中心

 

//創建多模塊maven工程
springcloud-parent
  springcloud-eureka-server-1000 //注冊中心EurekaServer 
  springcloud-order-server-3000  //訂單服務EurekaClient ,消費者
  springcloud-user-server-2000   //用戶服務EurekaClient ,提供者

  2.父工程導入依賴

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
    </parent>


    <groupId>cn.itsource</groupId>
    <artifactId>dpringcloudday1</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>springcloud-eureka-server-1000</module>
        <module>springcloud-user-server-2000</module>
        <module>springcloud-order-server-3000</module>
    </modules>


    <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.SR1</spring-cloud.version>
    </properties>
    <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>

  3.創建子工程

  

 

   4.這個子公共就是注冊中心創建Springboot配置類

package cn.itsource;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer//開啟注冊中心
@SpringBootApplication
public class EurekaServerApplication1000 {

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

 

   5.yml類的配置

server:
  port: 1000

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false   //registerWithEureka是關閉注冊服務默認為true因為這個
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://localhost:1000/eureka/

  6.User用戶模塊加入

package cn.itsource;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//配置類
@SpringBootApplication
public class UserServerApplication2000 {
    public static void main(String[] args) {
        SpringApplication.run(UserServerApplication2000.class);
    }
}

yml配置:
eureka: client: serviceUrl: defaultZone: http:
//localhost:1000/eureka/ #注冊中心地址 server: port: 2000

  7.先啟動注冊模塊  端口名為1000然后訪問過后再啟動其他的子模塊

 

 

 

 這里表示你有在這個注冊頁面有多少個實例模塊

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM