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

資訊專欄INFORMATION COLUMN

SpringCloud學(xué)習(xí)(2)

wenzi / 1798人閱讀

摘要:此為的結(jié)構(gòu)圖上篇已注冊了,的服務(wù),接下來用,實(shí)現(xiàn)負(fù)載均衡和的簡單客戶端,讓消費(fèi)者調(diào)用服務(wù)。是發(fā)布的云中間層服務(wù)開源項(xiàng)目,其主要功能是提供客戶側(cè)軟件負(fù)載均衡算法,將的中間層服務(wù)連接在一起。對選定的負(fù)載均衡策略機(jī)上重試機(jī)制。

??????????上篇已經(jīng)搭建好基礎(chǔ)demo,接下來繼續(xù)構(gòu)建項(xiàng)目并對spring cloud組件介紹描述。

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

此為eureka的結(jié)構(gòu)圖

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

這是movie服務(wù)的目錄結(jié)構(gòu)按此新建java文件

pom加入新依賴


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

Ribbon的負(fù)載均衡可以通過注解調(diào)用

也可以自定義configration 負(fù)載均衡的算法,但是不能和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 | 過濾掉那些因?yàn)橐恢边B接失敗的被標(biāo)記為circuit tripped的后端server,并過濾掉那些高并發(fā)的的后端server(active connections 超過配置的閾值) | 使用一個(gè)AvailabilityPredicate來包含過濾server的邏輯,其實(shí)就就是檢查status里記錄的各個(gè)server的運(yùn)行狀態(tài) 
     * RandomRule  | 隨機(jī)選擇一個(gè)server 
     * BestAvailabl eRule | 選擇一個(gè)最小的并發(fā)請求的server | 逐個(gè)考察Server,如果Server被tripped了,則忽略,在選擇其中 
     * RoundRobinRule  |  roundRobin方式輪詢選擇  |  輪詢index,選擇index對應(yīng)位置的server 
     * WeightedResponseTimeRule  |  根據(jù)響應(yīng)時(shí)間分配一個(gè)weight,響應(yīng)時(shí)間越長,weight越小,被選中的可能性越低。  |  一 個(gè)后臺線程定期的從status里面讀取評價(jià)響應(yīng)時(shí)間,為每個(gè)server計(jì)算一個(gè)weight。Weight的計(jì)算也比較簡單responsetime 減去每個(gè)server自己平均的responsetime是server的權(quán)重。當(dāng)剛開始運(yùn)行,沒有形成statas時(shí),使用roubine策略選擇 server。 
     * RetryRule  |  對選定的負(fù)載均衡策略機(jī)上重試機(jī)制。 |  在一個(gè)配置時(shí)間段內(nèi)當(dāng)選擇server不成功,則一直嘗試使用subRule的方式選擇一個(gè)可用的server 
     * ZoneAvoidanceRule  |  復(fù)合判斷server所在區(qū)域的性能和server的可用性選擇server  |  使 用ZoneAvoidancePredicate和AvailabilityPredicate來判斷是否選擇某個(gè)server,前一個(gè)判斷判定一個(gè) zone的運(yùn)行性能是否可用,剔除不可用的zone(的所有server),AvailabilityPredicate用于過濾掉連接數(shù)過多的 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的負(fù)載是否實(shí)現(xiàn)

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

@Configuration
public class FeignConfig {

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

    }
}

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

@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);
    }
}

分別啟動(dòng)eureka,user和movie微服務(wù)

訪問movie的測試接口,成功返回?cái)?shù)據(jù)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/67706.html

相關(guān)文章

  • java-study-springcloud-網(wǎng)絡(luò)資料-01-微服務(wù)是什么

    摘要:本系列網(wǎng)絡(luò)資料資料來源于網(wǎng)絡(luò),相關(guān)學(xué)習(xí)微服務(wù)與微服務(wù)架構(gòu)定義理解單一應(yīng)用程序劃分為一組小的服務(wù),每個(gè)服務(wù)有自己的進(jìn)程。 本系列(java-study-springcloud-網(wǎng)絡(luò)資料)資料來源于網(wǎng)絡(luò),springcloud相關(guān)學(xué)習(xí) 1、微服務(wù)與微服務(wù)架構(gòu) 定義:https://martinfowler.com/arti... showImg(https://segmentfault.c...

    JerryZou 評論0 收藏0
  • Springcloud-nacos實(shí)現(xiàn)配置和注冊中心

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

    whinc 評論0 收藏0
  • 整理一下學(xué)習(xí)微服務(wù)springboot+springcloud+vue以來用到的好的博客

    摘要:調(diào)用百度實(shí)現(xiàn)圖像識別使用渲染導(dǎo)出的制作的超級炫酷的三維模型一個(gè)代碼庫本人本人瀏覽器調(diào)試及所有錯(cuò)誤代碼整合千峰超級好用的各種開發(fā)自學(xué)文檔這是它對應(yīng)的學(xué)習(xí)視頻使用教程詳細(xì)虛擬機(jī)安裝系統(tǒng)詳解版網(wǎng)易開源鏡像站在線數(shù)據(jù)互轉(zhuǎn)使 1.Java調(diào)用百度API實(shí)現(xiàn)圖像識別 2.使用Three.js渲染Sketchup導(dǎo)出的dae 3.three.js制作的超級炫酷的三維模型 4.three.js - 一...

    gitmilk 評論0 收藏0
  • 整理一下學(xué)習(xí)微服務(wù)springboot+springcloud+vue以來用到的好的博客

    摘要:調(diào)用百度實(shí)現(xiàn)圖像識別使用渲染導(dǎo)出的制作的超級炫酷的三維模型一個(gè)代碼庫本人本人瀏覽器調(diào)試及所有錯(cuò)誤代碼整合千峰超級好用的各種開發(fā)自學(xué)文檔這是它對應(yīng)的學(xué)習(xí)視頻使用教程詳細(xì)虛擬機(jī)安裝系統(tǒng)詳解版網(wǎng)易開源鏡像站在線數(shù)據(jù)互轉(zhuǎn)使 1.Java調(diào)用百度API實(shí)現(xiàn)圖像識別 2.使用Three.js渲染Sketchup導(dǎo)出的dae 3.three.js制作的超級炫酷的三維模型 4.three.js - 一...

    bluesky 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<