關于SpringCloud的微服務結構及微服務遠程調(diào)用
一、微服務結構
微服務這種方案需要技術框架來落地,全球的互聯(lián)網(wǎng)公司都在積極嘗試自己的微服務落地技術。在國內(nèi)最知名的就是SpringCloud和阿里巴巴的Dubbo。
微服務技術對比:
Dubbo | SpringCloud | SpringCloudAlibaba | |
注冊中心 | zookeeper、Redis | Eureka、Consul | Nacos、Eureka |
服務遠程調(diào)用 | Dubbo協(xié)議 | Feign (http協(xié)議) | Dubbo、Feign |
配置中心 | 無 | SpringCloudfig | SpringCloudfig、Nacos |
服務網(wǎng)關 | 無 | SpringCloudGateway、Zuul | SpringCloudGateway、Zuul |
服務監(jiān)控保護 | dubbo-admin、功能弱 | Hystix | Sentinel |
二、微服務遠程調(diào)用
根據(jù)訂單id查詢訂單功能:
需求:根據(jù)訂單id查詢訂單的同時,把訂單所屬的用戶信息一起返回
實現(xiàn)步驟:
1、注冊RestTemplate
在order-service的OrderApplication中注冊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、服務遠程調(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請求,實現(xiàn)遠程調(diào)用 User user = restTemplate.getForObject(url,User.class); //3.封裝user到Order order.setUser(user); // 4.返回 return order; } }
微服務調(diào)用方式:
基于RestTemplate發(fā)起的http請求實現(xiàn)遠程調(diào)用
http請求做遠程調(diào)用時與語言無關的調(diào)用,只要知道對方的ip、端口、接口路徑、請求參數(shù)即可
提供者及消費者:
服務提供者:一次業(yè)務中,被其他微服務調(diào)用的服務(提供接口給其他微服務)
服務消費者:一次業(yè)務中,調(diào)用其他微服務的服務 (調(diào)用其他的微服務提供的接口)
服務調(diào)用關系:
服務提供者:暴露接口給其他微服務調(diào)用
服務消費者:調(diào)用其他微服務提供的接口
提供者與消費者角色是相對的
一個服務可以同時是服務提供者和服務消費者
到此這篇關于關于SpringCloud的微服務結構及微服務遠程調(diào)用的文章就介紹到這了,更多相關SpringCloud 微服務結構及調(diào)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springboot 在xml里讀取yml的配置信息的示例代碼
這篇文章主要介紹了springboot 在xml里讀取yml的配置信息的示例代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09Springboot集成Elasticsearch的步驟與相關功能
ElasticSearch是開源搜索平臺領域的一個新成員,?ElasticSearch是一個基于Lucene構建的開源,分布式,RESTful搜索引擎,這篇文章主要給大家介紹了關于Springboot集成Elasticsearch的相關資料,需要的朋友可以參考下2021-12-12IDEA2020 1.1中Plugins加載不出來的問題及解決方法
這篇文章主要介紹了IDEA2020 1.1中Plugins加載不出來的問題,本文還給大家提到了IDEA 2020.1.1 找不到程序包和符號的問題,感興趣的朋友跟隨小編一起看看吧2020-06-06Java?Stream流中的filter()使用方法舉例詳解
filter()是Java?Stream?API中的中間操作,用于根據(jù)給定的Predicate條件篩選流中的元素,它通過接收一個返回boolean值的函數(shù)(斷言)作為參數(shù),篩選出滿足條件的元素并收集到新的流中,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-11-11springboot使用小工具之Lombok、devtools、Spring Initailizr詳解
這篇文章主要介紹了springboot使用小工具之Lombok、devtools、Spring Initailizr詳解,Lombok可以代替手寫get、set、構造方法等,需要idea裝插件lombok,本文通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-10-10詳解Java Project項目打包成jar,并生成exe文件
本篇文章主要介紹了Java Project項目打包成jar,并生成exe文件,非常具有實用價值,有興趣的可以了解一下。2017-01-01