SpringCloud實踐(一) 基礎知識:微服務、SpringCloud、Springboot__SpringCloud

來源:互聯網
上載者:User

在學習SpringCloud之前,先梳理一下基礎知識,本章節的目標就是瞭解如下基礎知識:

微服務 SpringCloud Springboot 最後通過搭建一個簡單的Springboot 的 helloworld 結束本章。

一、什麼是微服務

傳統企業架構裡面,一般分為資料庫、服務端處理、前端展現。服務端一般是單體模組或者單體的進程,隨著web端的業務越來越複雜,對於服務端的要求也越來越高,服務介面越來越多。一開始人們採用服務匯流排來解決服務發現和服務治理的問題,隨著互連網興起,介面的調用效能和穩定性問題越來越突出,因此去中心化成為服務治理之後一個被大家高度重視的問題,在這個背景下,越來越多的公司採用了微服務來進行服務端的設計,從之前的淘寶dubbo,到後來的SpringCloud, 微服務現在已經成為後端服務設計中最為流行的一種技術選型。

       

二、SpringCloud簡介

微服務概念興起後,有許多相關的架構在技術人員中流傳出來,如果前面提過的dubbo,其他還有批量任務的 Elastic-job 一系列的技術架構,但是都是基於微服務中的某一個點的問題進行解決,SpringCloud的出現,給技術人員提供了一個解決微服務架構實施的綜合性解決架構。

SpringCloud包含了多個子項目:

Spring Cloud Config: 組態管理工具

Spring Cloud Netflix: 核心組件,含有Eureka: 服務治理組件(服務註冊中心,服務註冊和發現機制)

Hystrix:容錯管理組件,實現斷路器模式

Ribbon:用戶端負載平衡的服務調用組件

Spring Cloud Bus: 事件、訊息匯流排

Spring Cloud Cluster:叢集

等等,還有很多不一一列舉。

三、Spring Boot簡介

SpringCloud的工程構建是基於Spring Boot實現,因此有必要先瞭解一下Spring Boot, 通過建立一個簡單的web工程來瞭解一下SpringBoot:建議使用IDEA作為開發工具

首先通過建立一個Model來建立一個SpringBoot工程:


點擊下一步:


填入Model 的中繼資料相關資訊後,繼續next


這裡選擇Web,next後,填入模組的名稱:


點擊finish後,就出現如下的工程結構:


上面這張圖顯示了工程結構,其中pom.xml是maven工程的設定檔,裡面會有工程的依賴,我們使用了spring initialzr嚮導,因此會在pom.xml 中自動填入初始的依賴;其次預設src main 目錄下有一個java ,一個resources,在java 中放置代碼,在resources中放工程的資源如設定檔,圖中的application.yml 也是設定檔,是後來加入的,這是springboot的特色設定檔,在代碼區的 HelloControler也是後來代碼,後面會說明,系統預設會有一個應用入口類,SpringbootApplication。最後test區是放置單元測試代碼的地區。

建立起工程後,我們準備開發一個小demo,helloword。

首先看一下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.study</groupId><artifactId>springboot</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>springboot</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.1.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></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

如果以後自己的工程中有其他依賴,可以自己添加,上面是建立工程時就自己建立的,還記得前面我們選的web 選項嗎,在這裡就有sping-boot-starter-web。

其次,我們寫一個controler,預設調用都被這個controler處理

package com.study.springboot.controler;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloController {    @RequestMapping("/sayhello")    public String Hello() {        return "Hello World!";    }}

在springboot中採用了註解方式來開發,提升開發效率,上面這段就是當http://localhost:port/sayhello調用時,返回hello world。接著,建立一下運用的設定檔,在resource 目錄下,我們建立一個檔案application.yml

server:#設定管理員啟動連接埠  port: 8028#配置訪問的上下文路徑,就是localhost:8028後面需要的上下文路徑  context-path: /sayhello

Springboot採用了遞進式樣的設定檔格式yml,有點類似python,當然也可以用預設的application.properties

上面等於server.port=8028

最後,我們看一下demo的入口:

package com.study.springboot;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class SpringbootApplication {public static void main(String[] args) {SpringApplication.run(SpringbootApplication.class, args);}}

這個類沒有做任何處理,建立時就是這樣,,我們直接把它運行起來:


運行後,我們在瀏覽器輸入url  http://localhost:8028/sayhello,瀏覽器就會返回如下資訊:


一個簡單的 Springboot demo 就完成了。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.