微服務架構案例(05):SpringCloud 基礎組件應用設計

本文源碼:GitHub·點這裏 || GitEE·點這裏前端

更新進度(共6節):git

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

1、組件應用規劃

一、註冊中心

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

二、服務調用

Feign 組件是一個聲明式的 WebService客戶端。在Eureka註冊的服務中,可使用Feign接口的形式來進行相關服務間的請求調用,並提供超時回退,快速熔斷的相關特性。Feign是一個便利的RestFul框架,簡化調用,經過ribbon在註冊服務器中找到服務實例,而後對請求進行服務分配,實現了負載均衡的效果,默認採用輪詢算法。spring

三、服務網關

GateWay網關,可讓全部客戶端請求先經過微服務網關,跟網關進行交互,由網關進行各個微服務的請求轉發,客戶端(前端)對多服務架構無感知。下降客戶端與微服務之間的交互耦合度;便於監控,可在網關中監控數據;在網關層統一處理認證,規劃切面編程;也就是說與業務自己功能無關的公共邏輯能夠在網關層統一封裝實現,相似設計模式中的門面模式。數據庫

2、註冊中心

一、服務端配置

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/

二、客戶端配置

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

3、Feign組件

一、Feign接口

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

二、Feign接口實現

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

三、接口配置

該配置文件在實現Feign接口的項目中配置就好,也可針對特定方法配置。編程

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

四、Feign接口調用

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

4、服務網關

一、網關組件配置

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進行服務降級響應管理;

二、項目部署

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

5、源代碼地址

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

相關文章
相關標籤/搜索