關(guān)于SpringCloud的微服務(wù)結(jié)構(gòu)及微服務(wù)遠(yuǎn)程調(diào)用
一、微服務(wù)結(jié)構(gòu)
微服務(wù)這種方案需要技術(shù)框架來(lái)落地,全球的互聯(lián)網(wǎng)公司都在積極嘗試自己的微服務(wù)落地技術(shù)。在國(guó)內(nèi)最知名的就是SpringCloud和阿里巴巴的Dubbo。
微服務(wù)技術(shù)對(duì)比:
Dubbo | SpringCloud | SpringCloudAlibaba | |
注冊(cè)中心 | zookeeper、Redis | Eureka、Consul | Nacos、Eureka |
服務(wù)遠(yuǎn)程調(diào)用 | Dubbo協(xié)議 | Feign (http協(xié)議) | Dubbo、Feign |
配置中心 | 無(wú) | SpringCloudfig | SpringCloudfig、Nacos |
服務(wù)網(wǎng)關(guān) | 無(wú) | SpringCloudGateway、Zuul | SpringCloudGateway、Zuul |
服務(wù)監(jiān)控保護(hù) | dubbo-admin、功能弱 | Hystix | Sentinel |
二、微服務(wù)遠(yuǎn)程調(diào)用
根據(jù)訂單id查詢訂單功能:
需求:根據(jù)訂單id查詢訂單的同時(shí),把訂單所屬的用戶信息一起返回
實(shí)現(xiàn)步驟:
1、注冊(cè)RestTemplate
在order-service的OrderApplication中注冊(cè)RestTemplate
@MapperScan("cn.itcast.order.mapper") @SpringBootApplication public class OrderApplication { public static void main(String[] args) { SpringApplication.run(OrderApplication.class, args); } /** * 創(chuàng)建RestTemplate并注入Spring容器 * @return */ @Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); } }
2、服務(wù)遠(yuǎn)程調(diào)用RestTemplate
修改order-service中的OrderService的queryOrderById方法:
@Service public class OrderService { @Autowired private OrderMapper orderMapper; @Autowired private RestTemplate restTemplate; public Order queryOrderById(Long orderId) { // 1.查詢訂單 Order order = orderMapper.findById(orderId); //2、利用RestTemplate發(fā)送http,查詢用戶 //2.1 url路徑 String url = "http://localhost:8081/user/"+order.getUserId(); //2。1 發(fā)送http請(qǐng)求,實(shí)現(xiàn)遠(yuǎn)程調(diào)用 User user = restTemplate.getForObject(url,User.class); //3.封裝user到Order order.setUser(user); // 4.返回 return order; } }
微服務(wù)調(diào)用方式:
基于RestTemplate發(fā)起的http請(qǐng)求實(shí)現(xiàn)遠(yuǎn)程調(diào)用
http請(qǐng)求做遠(yuǎn)程調(diào)用時(shí)與語(yǔ)言無(wú)關(guān)的調(diào)用,只要知道對(duì)方的ip、端口、接口路徑、請(qǐng)求參數(shù)即可
提供者及消費(fèi)者:
服務(wù)提供者:一次業(yè)務(wù)中,被其他微服務(wù)調(diào)用的服務(wù)(提供接口給其他微服務(wù))
服務(wù)消費(fèi)者:一次業(yè)務(wù)中,調(diào)用其他微服務(wù)的服務(wù) (調(diào)用其他的微服務(wù)提供的接口)
服務(wù)調(diào)用關(guān)系:
服務(wù)提供者:暴露接口給其他微服務(wù)調(diào)用
服務(wù)消費(fèi)者:調(diào)用其他微服務(wù)提供的接口
提供者與消費(fèi)者角色是相對(duì)的
一個(gè)服務(wù)可以同時(shí)是服務(wù)提供者和服務(wù)消費(fèi)者
到此這篇關(guān)于關(guān)于SpringCloud的微服務(wù)結(jié)構(gòu)及微服務(wù)遠(yuǎn)程調(diào)用的文章就介紹到這了,更多相關(guān)SpringCloud 微服務(wù)結(jié)構(gòu)及調(diào)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot 在xml里讀取yml的配置信息的示例代碼
這篇文章主要介紹了springboot 在xml里讀取yml的配置信息的示例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09Spring Boot開(kāi)啟遠(yuǎn)程調(diào)試的方法
這篇文章主要介紹了Spring Boot開(kāi)啟遠(yuǎn)程調(diào)試的方法,幫助大家更好的理解和使用Spring Boot框架,感興趣的朋友可以了解下2020-10-10Springboot集成Elasticsearch的步驟與相關(guān)功能
ElasticSearch是開(kāi)源搜索平臺(tái)領(lǐng)域的一個(gè)新成員,?ElasticSearch是一個(gè)基于Lucene構(gòu)建的開(kāi)源,分布式,RESTful搜索引擎,這篇文章主要給大家介紹了關(guān)于Springboot集成Elasticsearch的相關(guān)資料,需要的朋友可以參考下2021-12-12IDEA2020 1.1中Plugins加載不出來(lái)的問(wèn)題及解決方法
這篇文章主要介紹了IDEA2020 1.1中Plugins加載不出來(lái)的問(wèn)題,本文還給大家提到了IDEA 2020.1.1 找不到程序包和符號(hào)的問(wèn)題,感興趣的朋友跟隨小編一起看看吧2020-06-06Java?Stream流中的filter()使用方法舉例詳解
filter()是Java?Stream?API中的中間操作,用于根據(jù)給定的Predicate條件篩選流中的元素,它通過(guò)接收一個(gè)返回boolean值的函數(shù)(斷言)作為參數(shù),篩選出滿足條件的元素并收集到新的流中,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-11-11springboot使用小工具之Lombok、devtools、Spring Initailizr詳解
這篇文章主要介紹了springboot使用小工具之Lombok、devtools、Spring Initailizr詳解,Lombok可以代替手寫(xiě)get、set、構(gòu)造方法等,需要idea裝插件lombok,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10Java語(yǔ)言獲取TCP流的實(shí)現(xiàn)步驟
使用Wireshark分析網(wǎng)絡(luò)包時(shí),一個(gè)很常用的功能就是選中一個(gè)TCP報(bào)文,然后查看這個(gè)TCP報(bào)文的TCP流,從而可以進(jìn)一步分析建連是否慢了,斷連是否正常等情況,那么本文就TCP流的概念以及在Java中如何獲取,做一個(gè)簡(jiǎn)單的學(xué)習(xí),需要的朋友可以參考下2023-11-11詳解Java Project項(xiàng)目打包成jar,并生成exe文件
本篇文章主要介紹了Java Project項(xiàng)目打包成jar,并生成exe文件,非常具有實(shí)用價(jià)值,有興趣的可以了解一下。2017-01-01