国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

SpringCloud學習(2)

wenzi / 1797人閱讀

摘要:此為的結構圖上篇已注冊了,的服務,接下來用,實現負載均衡和的簡單客戶端,讓消費者調用服務。是發布的云中間層服務開源項目,其主要功能是提供客戶側軟件負載均衡算法,將的中間層服務連接在一起。對選定的負載均衡策略機上重試機制。

??????????上篇已經搭建好基礎demo,接下來繼續構建項目并對spring cloud組件介紹描述。

Eureka:實際上在整個過程中維護者每個服務的生命周期。每一個服務都要被注冊到Eureka服務器上,這里被注冊到Eureka的服務又稱為Client。Eureka通過心跳來確定服務是否正常。Eureka只做請求轉發。同時Eureka是支持集群的呦!!!
Zuul:類似于網關,反向代理。為外部請求提供統一入口。
Ribbon/Feign:可以理解為調用服務的客戶端。
Hystrix:斷路器,服務調用通常是深層的,一個底層服務通常為多個上層服務提供服務,那么如果底層服務失敗則會造成大面積失敗,Hystrix就是就調用失敗后觸發定義好的處理方法,從而更友好的解決出錯。也是微服務的容錯機制。

此為eureka的結構圖

上篇已注冊了user,movie的服務,接下來用Ribbo,feign實現負載均衡和web service的簡單客戶端,讓movie消費者調用user服務。
Ribbon:
Ribbon 是 Netflix 發布的云中間層服務開源項目,其主要功能是提供客戶側軟件負載均衡算法,將 Netflix 的中間層服務連接在一起。Eureka 是一個 RESTful 服務,用來定位運行在 AWS 域(Region)中的中間層服務。本文介紹 Eureka 和 Ribbon 的集成,附帶 Ribbon 自定義負載均衡算法示例。
Feign:
在Spring Cloud Netflix棧中,各個微服務都是以HTTP接口的形式暴露自身服務的,因此在調用遠程服務時就必須使用HTTP客戶端。我們可以使用JDK原生的URLConnection、Apache的Http Client、Netty的異步HTTP Client, Spring的RestTemplate。Feign是一種聲明式、模板化的HTTP客戶端。在Spring Cloud中使用Feign, 我們可以做到使用HTTP請求遠程服務時能與調用本地方法一樣的編碼體驗,非常快捷簡便。

這是movie服務的目錄結構按此新建java文件

pom加入新依賴


            org.springframework.cloud
            spring-cloud-starter-feign

Ribbon的負載均衡可以通過注解調用

也可以自定義configration 負載均衡的算法,但是不能和Application同目錄

public class RibbonConfiguration {  
    @Autowired  
    private IClientConfig ribbonClientConfig;  
  
    /** 
     * Our IPing is a PingUrl, which will ping a URL to check the status of each 
     * server.provider has, as you’ll recall, a method mapped to the / path; 
     * that means that Ribbon will get an HTTP 200 response when it pings a 
     * running provider server. 
     *  
     * server list defined in application.yml :listOfServers: localhost:8000, 
     * localhost:8002,localhost:8003 
     *  
     */  
    @Bean  
    public IPing ribbonPing(IClientConfig config) {  
        // ping url will try to access http://microservice-provider/provider/ to  
        // see if reponse code is 200 . check PingUrl.isAlive()  
        // param /provider/ is the context-path of provider service  
        return new PingUrl(false, "/provider/");  
    }  
  
    /** 
     * The IRule we set up, the AvailabilityFilteringRule, will use Ribbon’s 
     * built-in circuit breaker functionality to filter out any servers in an 
     * “open-circuit” state: if a ping fails to connect to a given server, or if 
     * it gets a read failure for the server, Ribbon will consider that server 
     * “dead” until it begins to respond normally. 
     *  
     * AvailabilityFilteringRule | 過濾掉那些因為一直連接失敗的被標記為circuit tripped的后端server,并過濾掉那些高并發的的后端server(active connections 超過配置的閾值) | 使用一個AvailabilityPredicate來包含過濾server的邏輯,其實就就是檢查status里記錄的各個server的運行狀態 
     * RandomRule  | 隨機選擇一個server 
     * BestAvailabl eRule | 選擇一個最小的并發請求的server | 逐個考察Server,如果Server被tripped了,則忽略,在選擇其中 
     * RoundRobinRule  |  roundRobin方式輪詢選擇  |  輪詢index,選擇index對應位置的server 
     * WeightedResponseTimeRule  |  根據響應時間分配一個weight,響應時間越長,weight越小,被選中的可能性越低。  |  一 個后臺線程定期的從status里面讀取評價響應時間,為每個server計算一個weight。Weight的計算也比較簡單responsetime 減去每個server自己平均的responsetime是server的權重。當剛開始運行,沒有形成statas時,使用roubine策略選擇 server。 
     * RetryRule  |  對選定的負載均衡策略機上重試機制。 |  在一個配置時間段內當選擇server不成功,則一直嘗試使用subRule的方式選擇一個可用的server 
     * ZoneAvoidanceRule  |  復合判斷server所在區域的性能和server的可用性選擇server  |  使 用ZoneAvoidancePredicate和AvailabilityPredicate來判斷是否選擇某個server,前一個判斷判定一個 zone的運行性能是否可用,剔除不可用的zone(的所有server),AvailabilityPredicate用于過濾掉連接數過多的 Server。 
     * @param config 
     * @return 
     */  
    @Bean  
    public IRule ribbonRule(IClientConfig config) {  
        // return new AvailabilityFilteringRule();  
         return new RandomRule();//  
        // return new BestAvailableRule();  
        // return new RoundRobinRule();//輪詢  
        // return new WeightedResponseTimeRule();  
        // return new RetryRule();  
        // return new ZoneAvoidanceRule();  
    }  
}  

可以在controller輸出看ribbon的負載是否實現

接下來 ,配置feign,知識feign的config

@Configuration
public class FeignConfig {

    @Bean
    public Contract feignContract(){
         return new feign.Contract.Default();

    }
}

定義feign的客戶端接口,這里調用user 微服務的接口,feign支持springMvc注解,但要生明請求方法和參數

@FeignClient(name="userprovider",configuration = FeignClient.class)
public interface UserFeignClient {
    @RequestMapping (value = "/user/{id}",method = RequestMethod.GET)
    public User find(@PathVariable("id") int id);
}

然后在application里添加feign注解

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class MicroserviceSimpleConsumerMovieApplication {

    public static void main(String[] args) {

//        @Bean
//                public RestTemplate restTemplate(){
//            return new RestTemplate();
//        }
        SpringApplication.run(MicroserviceSimpleConsumerMovieApplication.class, args);
    }
}

最后controller測試feign的接口

@RestController
public class NewsController {
    @Autowired
    RestTemplate restTemplate;
    @Autowired
    LoadBalancerClient loadBalancerClient;
    @Autowired
    UserFeignClient userFeignClient;

    @RequestMapping("/newsUser/{id}")
    public User find(@PathVariable int id){
        return restTemplate.getForObject("http://localhost:8080/user/"+id,User.class);
    }
    @GetMapping("/test")
    public String test(){

        ServiceInstance serviceInstance=loadBalancerClient.choose("userprovider");
        String s=serviceInstance.getHost()+serviceInstance.getPort()+serviceInstance.getServiceId();
        return  s;

    }
    @GetMapping("/movie/{id}")
    public User findmovie(@PathVariable int id){

        return userFeignClient.find(id);
    }
}

分別啟動eureka,user和movie微服務

訪問movie的測試接口,成功返回數據

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67706.html

相關文章

  • java-study-springcloud-網絡資料-01-微服務是什么

    摘要:本系列網絡資料資料來源于網絡,相關學習微服務與微服務架構定義理解單一應用程序劃分為一組小的服務,每個服務有自己的進程。 本系列(java-study-springcloud-網絡資料)資料來源于網絡,springcloud相關學習 1、微服務與微服務架構 定義:https://martinfowler.com/arti... showImg(https://segmentfault.c...

    JerryZou 評論0 收藏0
  • Springcloud-nacos實現配置和注冊中心

    摘要:實現配置和注冊中心最近,阿里開源的比較火,可以和和共用,對升級到非常的方便。只需要添加依賴,使用配置注冊中心地址即可。配置不生效,沒有使用注解刷新配置分清注冊中心和配置中心是兩個概念,需要配置兩個地址學會看源碼,看維基。 Springcloud-nacos實現配置和注冊中心 最近,阿里開源的nacos比較火,可以和springcloud和dubbo共用,對dubbo升級到springc...

    whinc 評論0 收藏0
  • 整理一下學習微服務springboot+springcloud+vue以來用到的好的博客

    摘要:調用百度實現圖像識別使用渲染導出的制作的超級炫酷的三維模型一個代碼庫本人本人瀏覽器調試及所有錯誤代碼整合千峰超級好用的各種開發自學文檔這是它對應的學習視頻使用教程詳細虛擬機安裝系統詳解版網易開源鏡像站在線數據互轉使 1.Java調用百度API實現圖像識別 2.使用Three.js渲染Sketchup導出的dae 3.three.js制作的超級炫酷的三維模型 4.three.js - 一...

    gitmilk 評論0 收藏0
  • 整理一下學習微服務springboot+springcloud+vue以來用到的好的博客

    摘要:調用百度實現圖像識別使用渲染導出的制作的超級炫酷的三維模型一個代碼庫本人本人瀏覽器調試及所有錯誤代碼整合千峰超級好用的各種開發自學文檔這是它對應的學習視頻使用教程詳細虛擬機安裝系統詳解版網易開源鏡像站在線數據互轉使 1.Java調用百度API實現圖像識別 2.使用Three.js渲染Sketchup導出的dae 3.three.js制作的超級炫酷的三維模型 4.three.js - 一...

    bluesky 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<