天天看點

微服務架構案例(05):SpringCloud 基礎元件應用設計一、元件應用規劃二、注冊中心三、Feign元件四、服務網關五、源代碼位址

本文源碼: GitHub·點這裡 || GitEE·點這裡

更新進度(共6節):

01:項目技術選型簡介,架構圖解說明 02:業務架構設計,系統分層管理 03:資料庫選型,業務資料設計規劃 04:中間件內建,公共服務管理 05:SpringCloud 基礎元件應用設計

一、元件應用規劃

微服務架構案例(05):SpringCloud 基礎元件應用設計一、元件應用規劃二、注冊中心三、Feign元件四、服務網關五、源代碼位址

1、注冊中心

Eureka 元件是 Netflix 開發的,用于定位服務,基于RESTFul方式實作服務注冊與發現。包括一個EurekaServer服務端(通常是指微服務中的注冊中心) 和EurekaClient用戶端(通常指微服務中的業務服務)。Eureka支援高可用的配置,當注冊中心發現有故障的服務時,Eureka就會轉入自動保護模式,故障時不影響服務的發現和注冊,當故障恢複正常時,注冊中心的服務會進行狀态同步,繼續提供服務。

2、服務調用

Feign 元件是一個聲明式的 WebService用戶端。在Eureka注冊的服務中,可以使用Feign接口的形式來進行相關服務間的請求調用,并提供逾時回退,快速熔斷的相關特性。Feign是一個便利的RestFul架構,簡化調用,通過ribbon在注冊伺服器中找到服務執行個體,然後對請求進行服務配置設定,實作了負載均衡的效果,預設采用輪詢算法。

3、服務網關

GateWay網關,可以讓所有用戶端請求先通過微服務網關,跟網關進行互動,由網關進行各個微服務的請求轉發,用戶端(前端)對多服務架構無感覺。降低用戶端與微服務之間的互動耦合度;便于監控,可在網關中監控資料;在網關層統一處理認證,規劃切面程式設計;也就是說與業務本身功能無關的公共邏輯可以在網關層統一封裝實作,類似設計模式中的門面模式。

二、注冊中心

微服務架構案例(05):SpringCloud 基礎元件應用設計一、元件應用規劃二、注冊中心三、Feign元件四、服務網關五、源代碼位址

1、服務端配置

eureka:
  server:
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 15000
  instance:
    prefer-ip-address: true
  client:
      register-with-eureka: false
      fetch-registry: false
      service-url:
        defaultZone: http://127.0.0.1:5001/eureka/           

2、用戶端配置

eureka:
  instance:
    prefer-ip-address: true
  client:
      service-url:
        defaultZone: http://127.0.0.1:5001/eureka/           

三、Feign元件

1、Feign接口

@FeignClient("MOPSZ-SOFT-ROCKET")
public interface UserSearchFeign {
    @GetMapping("/mq/user/search/sendBookSearch")
    void sendBookSearch (@RequestParam("msgContent") String msgContent) ;
}           

2、Feign接口實作

@RestController
public class UserSearchController implements UserSearchFeign {
    @Override
    public void sendBookSearch(String msgContent) {
    }
}           

3、接口配置

該配置檔案在實作Feign接口的項目中配置就好,也可針對特定方法配置。

feign:
  hystrix:
    enabled: true
  client:
    config:
      feignName:
        connectTimeout: 60000
        readTimeout: 60000           

4、Feign接口調用

@Resource
private UserSearchFeign userSearchFeign ;
userSearchFeign.sendBookSearch("");           

四、服務網關

1、網關元件配置

zuul:
  # 字首,可以用來做版本控制
  prefix: /v1
  # 禁用預設路由,執行配置的路由
  ignored-services: "*"
  routes:
    # 配置 Token 服務
    pro6601:
      serviceId: mopsz-basis-token
      path: /api/6601/**
    # 配置 UserClient 服務
    pro6102:
      serviceId: mopsz-user-client
      path: /api/6102/**           
  • 配置FilterConfig進行使用者Token認證攔截;
  • 配置FallBackConfig進行服務降級響應管理;

2、項目部署

在項目上線後,對外暴露一個網關服務端口,其他服務端口不對外暴露,所有的請求都必須通過網關攔截或者轉發,這就是微服務提供服務的一種常見方式。

五、源代碼位址

GitHub·位址
https://github.com/cicadasmile/husky-spring-cloud
GitEE·位址
https://gitee.com/cicadasmile/husky-spring-cloud