springcloud搭建(一)


SpirngCloud搭建Eureka

1. 創建新項目

1.1新建一個maven項目

1.2 輸入groupid:com.hewow和artifactid:springcloud-erreka

 

1.3然后finish

1.4新建項目的目錄結構如下,其中src文件夾我們用不上,可以選擇刪除

2.搭建注冊中心

2.1新建一個module項目,在maven項目下右鍵,新建module,選擇Spring Initializr,並命名為server-center,如下圖所示:

2.2后面依然是填寫GroupId和ArtifactId,后續選擇如下圖:

勾選spring cloud discovery--eureka server然后nextfinish

 

第一次創建spring-cloud-eureka項目需要下載一些jar包,時間稍長,等待即可

 

2.3創建完成后修改配置

創建模塊結束之后,修改applications.properties

#eureka注冊中心
#端口號
server.port=8761

eureka.instance.hostname=localhost
#表示十分將自己注冊到Eureka Server,默認為true。由於當前應用就是Eureka Server,故而設為false。
eureka.client.register-with-eureka=false
#表示是否從Eureka Server獲取注冊信息,默認為true。因為這是一個單點的Eureka Server,不需要同步其他 的Eureka Server節點的數據,故而設為false
eureka.client.fetch-registry=false
#置與Eureka Server交互的地址,查詢服務和注冊服務都需要依賴這個地址,默認是http://localhost:8761/eureka;多個地址可用,分隔
eureka.client.service-url.default-zone=http://${eureka.instance.hostname}:${server.port}/eureka/

修改SpringCloudEurekaApplication類文件為下:

package com.buou.springcloudeureka;

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

@EnableEurekaServer
@SpringBootApplication
public class SpringCloudEurekaApplication {

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

}

其中@EnableEurekaServer是聲明這是一個Eureka注冊中心

 

2.4至此,關於一個EurekaServer的注冊中心配置已經完成,啟動該Application,可以在控制台看到日志信息,同時,可以在瀏覽器輸入“127.0.0.1:8761”,出現如下界面:

看到上圖所示即代表啟動成功,可以看到“No instances available”,因為還沒有創建服務提供者。

3.搭建服務提供-order

3.1.新建module server-order”

這里考慮到后續會添加很多服務,因此使用order后綴區別,當然用戶可以自定義其他的名字。創建的過程和上述創建是一致的,這里不再贅述。

 

3.2.修改配置applications.properties

添加如下內容:


#eureka-client
#端口號
server.port=8082

eureka.instance.hostname=localhost
#置與Eureka Server交互的地址,查詢服務和注冊服務都需要依賴這個地址,默認是http://localhost:8761/eureka;多個地址可用,分隔
eureka.client.service-url.default-zone=http://localhost:8761/eureka/

spring.application.name=service-order

Spring.application.name代表這個服務提供者的名字,用來區分其他服務;

eureka.client.service-url.default-zone是服務中心的地址

3.3.修改ServerOrderApplication類

添加@EnableEurekaClient注解

package com.hewow.serverorder;

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

@EnableEurekaClient
@SpringBootApplication
public class ServerOrderApplication {

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

}

 

注冊中心和服務提供者的區別就在於注解的不同。

 

3.4.新建一個Controller類

首先在ServerOrderApplication同級目錄下新建一個包“controller”,controller包下面建立一個OrderController類OrderController類的內容如下:

package com.hewow.serverorder.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class OrderController {

    @RequestMapping("getOrder")
    @GetMapping
    public String getOrder(){
        return "order-001";
    }

}

 

3.5.測試服務是否可用

測試server-order(前提是注冊中心已啟動),首先啟動服務后,在這冊中心看到注冊了一個服務,如下圖:

在瀏覽器輸入127.0.0.1:8082/getOrder”直接訪問該服務,顯示信息如下圖所示:

服務提供創建完成。

4.搭建服務消費-user

上述過程實現了從瀏覽器直接訪問一個服務的過程,但如何通過一個微服務訪問另外一個微服務呢?下面創建一個服務消費者以調用剛才的微服務。

4.1.新建module模塊,命名為“server-user”,過程同上

4.2修改配置文件application.propeties



#eureka-client
#端口號
server.port=8083

eureka.instance.hostname=localhost
#置與Eureka Server交互的地址,查詢服務和注冊服務都需要依賴這個地址,默認是http://localhost:8761/eureka;多個地址可用,分隔
eureka.client.service-url.default-zone=http://localhost:8761/eureka/

spring.application.name=service-user

雖然是服務消費者,但其本身也是一個服務提供者,因此需要在服務注冊中心注冊。可以看到這里更換了一個端口號,同時更改了服務的名字,若新建其他服務可類似更改

4.3.修改ServerUserApplication

package com.hewow.serveruser;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@EnableEurekaClient
@SpringBootApplication
public class ServerUserApplication {

    @Bean //注入restTemplate
    @LoadBalanced //在注冊中心里進行查找微服務,Ribbon負載均衡
                    //生成一個RestTemplate實例對象
                    //使用user服務調用order服務就是通過這個restTemplate對象實現的
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

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

}

 

 

同樣這里要添加注解@EnableEurekaClient表明自己是Eureka-Client的身份;這里注入了一個resttemplate用來進行后續的服務調用。

 

4.4.添加UserController

同理,新建包並新建UserController類,內容如下

package com.buou.springcloudclientuser.com.buou.user.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class UserController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("getUserOrder")
    public String getUserOrder(){
        String url="http://service-order/getOrder";
        //返回值類型和我們的業務返回值一致
        return restTemplate.getForObject(url, String.class);
    }
}

 

4.5.測試該服務

啟動該服務,刷新注冊中心,可以看到多了一個服務:

 

在瀏覽器中輸入“127.0.0.1:8083/getUserOrder”,出現界面如下:

可以發現成功調用了order服務並返回了結果,實現了server-user服務調用server-order服務的操作。服務消費者本身又是服務提供者。

 

 


免責聲明!

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



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