深入Eureka/Feign/Hystrix原理學習(1)


第一步:
創建注冊中心項目,引入cloud discovery相關依賴。
①在pom文件中引入相關依賴。
②在啟動類上加上@EnableEurekaServer注解,標注這是一個注
冊中心。
③在application.yml配置文件中進行相關配置:配置端口
server:port:7776,配置注冊中心的地址http://localhost:7776/euraka
等。
④在啟動項目后,直接在瀏覽器輸入localhost:7776就可以訪問
eureka的管理界面。
注意:pom文件中spring boot和spring cloud的版本要相對應,如果是較
低版本的spring cloud,比如Dalston.SR4,對應的spring boot版本是
1.5.6.


第二步:
創建客戶端,發布服務。對於注冊中心而言,所有的連接對象都
是客戶端。
①引依賴。
②配置yml:給項目取名,便於其他工程發現,
spring:application:name:dm-user-provider這就是取名。將服務注冊到
注冊中心去,需要指定注冊中心的地址:eureka:client:service-
url:defaultZone:http://localhost:7776/eureka.同樣需要進行端口配
置server:port:8080.
③在啟動類上加上@EnableDiscoveryClient注解,在啟動時就會
去讀取配置文件中的信息,按照Eureka客戶端的要求加載數據。
④啟動項目后就可以在eureka的管理界面中看到發布的服務。
三板斧:依賴,配置文件,注解。
Eureka的自我保護機制默認是開啟的,是為了保證某些暫時不可用的服務
節點不會被激進地清理掉。因為有些服務暫時不可用不代表這些服務是無
效的。

第三步:
對注冊中心的管理界面進行安全控制。
使用spring-boot-starter-security進行權限控制,讓注冊中心
的服務更加安全。
①首先在pom文件中引入security依賴。
②在配置文件中進行配置:啟用-
security:basic:enabled:true.配置用戶名密碼-
security:user:name:root/security:user:password:123456.
③在進行權限控制后,客戶端訪問注冊中心時需要在訪問url中
進行如下配置:http://root:123456@localhost:7776/eureka.

第四步:
新建項目,對注冊中心存在的服務進行調用。
①需要額外引入spring-cloud-starter-feign依賴,解決服務調
用的問題。
②在配置文件中進行配置:spring:application:name:dm-user
-consumer.標注這是服務的調用方。server:port:8081.要保證端口不要
重復。
③在啟動類中加上注解:@EnableDiscovery注解將服務注冊到注
冊中心。@EnableFeignClients注解用於從注冊中心中調用服務。
④在業務處理類也就是和Service接口上加上@FeignClient注解
,指定要從注冊中心調用的服務的名稱,@FeignClient(name="dm-user-
provider").注意,接口中方法的定義格式要與provider中的方法一致,
比如提供方的方法上加了@RequestMapping
(value="/login",method=RequestMethod.GET)。就相當於告訴Feign組件
,要調用的服務長這個模樣,Feign從而好創建一個實現類去調用服務。
⑤在調用方的Controller類中就可以通過@Autowired注解直接注
入提供方的服務。

第五步:
公共模塊的使用場景,被多個客戶端共同使用的模塊都定義到公
共模塊中,比如javaBean等。Common項目無需注冊到注冊中心。
其他項目或者是模塊想要使用Common模塊,需要在pom文件中引入Common
的依賴,先install一下Common項目。

第六步:
熔斷器hystrix配置。feign:hrstrix:enabled:true.如果服務調
用出錯時的處理方案:通常做法是定義一個類,在服務調用出錯時執行這
個類中的方法,一般命名為**Fallback,同時需要implements正常調用的
那個接口。並且需要在該類上添加@Compnent注解,納入spring容器管理
。在@FeignClient注解中追加fallback=**Fallback.class。就類似於一
個備胎,在出錯時頂上去。


免責聲明!

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



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