微服務架構之服務治理與服務調用


  服務治理是微服務架構中最核心最基本的模塊,用於實現各個微服務的自動化注冊與發現。它是微服務架構中非常重要的一個組件,在微服務架構中起到了一個協調者的作用。

服務注冊

  在服務治理框架中,都會創建一個注冊中心,每個服務單元向注冊中心登記自己提供服務的詳細信息。並在注冊中心形成一張服務的清單,服務注冊中心需要以心跳的方式去檢測清單中的服務是否可用,如果不可用,需要在服務清單中提出不可用的服務。

服務發現

  服務調用方向服務注冊中心咨詢服務,並獲取所有服務的實例清單,實現對具體服務實例的訪問。

常見注冊中心

1,Zookeeper

  zookeeper是一個分布式服務框架,是apache Hadoop的一個子項目,它主要是用來解決分布式應用中經常遇到的一些數據管理問題,如:統一命名服務、狀態同步服務、集群管理、分布式應用配置項的管理等。

2,Eureka

  Eureka是springCloud Netflix中的重要組件,主要作用就是服務注冊和發現。但現在已經閉源。

3,Consul

  Consul是基於GO語言開發的工具,主要面向分布式,服務化的系統提供服務注冊、服務發現和配置管理功能。Consul的功能很實用,其中包括:服務注冊/發現、健康檢查、key/value存儲,多數據中心和分布式一致性保證等特性。Consul本身只是一個二進制的可執行文件,所以安裝和部署都非常簡單,只需要從官網下載后,再執行對應的啟動腳本即可。

4,Nacos

  Nacos是一個更易於構建雲原生應用動態服務發現、配置管理和服務管理平台。它是Spring Cloud Alibaba組件之一,負責服務注冊發現和服務配置,可以這樣認為nacos=eureka+config。

將微服務注冊到Nacos

1,在pom.xml中添加nacos依賴,spring-cloud-starter-alibaba-nacos-discovery

2,在主類上添加@EnableDiscoveryClient

3,在application.yml中添加nacos服務的地址

4,啟動微服務,即可實現自動注冊到nacos

負載均衡

  負載均衡就是將負載(工作任務,訪問請求)進行分攤到多個操作單元(服務器,組件)上進行執行。根據負載均衡發生的位置不同,一般分為服務端負載均衡和客戶端負載均衡。服務端負載均衡指的是發生在服務提供者一方,比如常見的nginx負載均衡。而客戶端負載均衡指的是發生在服務請求的一方,也就是在發送請求之前已經選好了由哪個實例處理請求。我們在微服務調用關系中一般會選擇客戶端負載均衡,也就是在服務調用的一方來決定服務由哪個提供者執行。

Ribbon

   Ribbon是SpringCloud的一個組件,他可以讓我們使用一個注解就能輕松的搞定負載均衡。

1,在RestTemplate的生成(Bean)方法上添加@LoadBalanced注解

2,配置負載均衡策略,yml配置文件中:服務名:ribbon:策略

  Ribbon內置了多種負載均衡策略,內部負載均衡的頂級接口為com.netflix.loadbalancer.IRule,典型策略有BestAvailableRule、AvailabilityFilteringRule、WeightedResponseTimeRule。

服務調用

  在微服務架構中,通常存在多個服務之間的遠程調用請求。目前主流的遠程調用技術有基於HTTP的RESTful接口以及基於TCP的RPC協議。

Feign

  Feign是SpringCloud提供的一個聲明式的偽Http客戶端,它使得調用遠程服務就像調用本地服務一樣簡單,只需要創建一個接口並添加一個注解即可。Nacos很好的兼容了Feign,Feign默認集成了Ribbon,所以在Nacos下使用Feign默認就實現了負載均衡的效果。

 1,加入Fighn依賴

2,在主類上添加Feign注解@EnableFeignClients


免責聲明!

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



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