>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>原文鏈接地址:『高級篇』docker之APIGateway(17)這次說最後一個模塊APIGateway,他的功能就是將我們客戶端的請求統一的轉發到用戶和課程的EdgeService上面,ApiGetway我們使用springClud來實現。源碼:https://github.com/limingios/msA-docker
使用springClud做路由轉發功能
- 新建項目
<?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">
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.idig8</groupId>
<artifactId>api-gateway-zuul</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
</dependencies>
</project>
server.port=8080
zuul.routes.course.path=/course/**
zuul.routes.course.url=http://127.0.0.1:8081/course/
zuul.routes.user.path=/user/**
zuul.routes.user.url=http://127.0.0.1:8082/user/
package com.idig8.zuul;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
/**
* Created by liming
*/
@SpringBootApplication
@EnableZuulProxy
public class ServiceApplication {
public static void main(String args[]) {
SpringApplication.run(ServiceApplication.class, args);
}
}
梳理思路
所有的業務開發完畢,zuul 就是可以幫助我們做路由和轉發的工作。所有的請求幫你做中轉。雖然業務非常簡單,但是框架都能實現。業務也不是這次學習微服務的重點。在整個開發過程中主要想讓各位老鐵體會到微服務,不同的RPC的通信方式,沒有使用過dubbo和thrift的可以瞭解下如何的使用。還搞了誇語言的業務通信,用python寫了一個message消息服務,用java做客戶端調用python,這裏面的java模塊我們使用的springboot,來進入一個切入點,能感受到開發和配置模式的統一,最後我們使用zuul作爲服務網關,完成了服務路由,可以注意到所有服務的開發都是使用了相對簡單的模型和功能,並沒有大而全的角色存在,因爲這次主要就是說的針對不太瞭解微服務的老鐵,只爲你們打開一個微服務的大門。
PS:就像跟陌生人交朋友,不可能上來直接詳細的自我介紹,一般都是先聊點其他的,或者從大家都感興趣的一個話題作爲切入點,一點點增加彼此的瞭解,其實學習也是一樣的,一個新的功能一定會有新的功能和特性,我們必須從一個點入手,先用起來後,在一點點的瞭解,就像這個zuul,只用到他的服務路由,下次咱們就通過這些微服務爲基礎進行docker話,讓老鐵知道一個非docker的項目如何運行在一個docker上面。需要關心的點是什麼上面。然後我們在本地吧這些服務都運行起來。最後我們把他交給服務編排框架,看它是怎麼調度管理容器的。