spring cloud中微服務之間的調用以及eureka的自我保護機制

我本身搭建了一個客戶端微服務:html

因此如今有兩個微服務,咱們所實現的就是微服務1和微服務2之間的調用java

註冊中心就不用多說了,具體看一下兩個微服務面試

在project-solr中的constroller中:spring

@RestController//這裏使此Constroller中全部的方法返回的不是頁面
public class SolrSearchConstroller {服務器

    @RequestMapping("/SolrSearch")
    public String SolrSearch(){
        return "這裏是Solr";
    }架構

}app

這裏是爲了讓另外一個服務調用負載均衡

在另外一個微服務project-shopping-mall 啓動類中,咱們 必須定義一個方法:框架

@SpringBootApplication
@EnableDiscoveryClient //表示eureka客戶端
public class ShoppingMallProvider {分佈式

    @Bean
    @LoadBalanced//在註冊中內心進行查找微服務,負載均衡
    public RestTemplate restTemplate(){

        RestTemplate restTemplate=new RestTemplate();
        return  restTemplate;
    }

    public static void main(String[] args) {
        SpringApplication.run(ShoppingMallProvider.class,args);
    }
}

 而後在project-shopping-mall裏的Controller中調用project-solr中的constroller:

@Controller
public class PageController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/toIndex")
    public String toIndex(Model model){

        String msg=restTemplate.getForEntity("http://project-solr/SolrSearch",String.class).getBody();//project-solr是調用註冊中內心的名字
        model.addAttribute("msg",msg);
        return "/index";
    }
}

這裏的project-solr是配置裏每一個服務註冊到註冊中心的名字,根據名字調用服務的ip地址,能夠實現動態微服務調用效果,它不會由於更換電腦而出錯

下面接着建設頁面,這裏我用的是thymeleaf組件

咱們先在build.gradle中添加依賴:

//thymeleaf組件
    compile  'org.springframework.boot:spring-boot-starter-thymeleaf'

 而後新建默認的目錄:

這裏必須新建templates包,由於是默認的目錄

而後index.html中:

運行:

成功!

下面簡單的說一下spring cloud eureka註冊中心的自我保護機制

 優勢:當服務與註冊中心因爲某個緣由斷開的時候,服務與服務之間還能夠鏈接,這時候eureka不會馬上清理,依舊會對改微服的信息進行保存。

 缺點:當服務與註冊中心因爲某個緣由斷開的時候,服務與服務之間也不能夠鏈接,這時候可能會帶壞其餘服務器。

固然是優勢大於缺點的

那eureka註冊中心是怎麼知道微服務還存活的呢?

其實每一個服務每分鐘都會對註冊中心進行心跳,而註冊中心會接受心跳,若註冊中心沒有接受到心跳則會認爲該服務死亡

官方對於自我保護機制的定義:eureka官方自我保護機制
 

感興趣能夠加Java架構師羣獲取Java工程化、高性能及分佈式、高性能、深刻淺出。高架構。性能調優、Spring,MyBatis,Netty源碼分析和大數據等多個知識點高級進階乾貨的直播免費學習權限 都是大牛帶飛 讓你少走不少的彎路的 羣..號是:855801563 對了 小白勿進 最好是有開發經驗

注:加羣要求

一、具備工做經驗的,面對目前流行的技術不知從何下手,須要突破技術瓶頸的能夠加。

二、在公司待久了,過得很安逸,但跳槽時面試碰壁。須要在短期內進修、跳槽拿高薪的能夠加。

三、若是沒有工做經驗,但基礎很是紮實,對java工做機制,經常使用設計思想,經常使用java開發框架掌握熟練的,能夠加。

四、以爲本身很牛B,通常需求都能搞定。可是所學的知識點沒有系統化,很難在技術領域繼續突破的能夠加。

5.阿里Java高級大牛直播講解知識點,分享知識,多年工做經驗的梳理和總結,帶着你們全面、科學地創建本身的技術體系和技術認知!

相關文章
相關標籤/搜索