<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
相關推薦
上一章:Eureka註冊中心
上一章中,我們介紹了Eureka註冊中心及叢集的搭建,這一節將介紹服務的發現和呼叫。注意,這個時候我們只有註冊中心,並沒有引入其他的元件,所以需要使用SpringCloud原生態的服務發現和呼叫的方式實現,循序漸進的帶你走入微服務的世界。
上篇文章我們已經建立好了註冊中心,這次我們需要建立一個服務提供者(provider)和一個服務消費者(consumer)兩個專案。
<parent> <groupId>com.cxy965</groupId> <artifactId>parent</artifactId> <version>1.0-SNAPSHOT</version> <relativePath>../parent/pom.xml</relativePath> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies>
新建組態檔application.yml
server:
port: 8002
spring:
application:
name: provider
eureka:
client:
service-url:
defaultZone: http://localhost:8001/eureka/
fetch-registry: true
建立啟動類和服務介面,為了簡便,暫時將服務介面放在了啟動類,實際專案中,最好還是要放在controller中。
@EnableEurekaClient @SpringBootApplication @RestController public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); } @GetMapping("/hello") public String hello(String name) { return "Hello "+name; } }
啟動驗證一下,可以正常返回。
@EnableEurekaClient @SpringBootApplication @RestController public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } @Bean RestTemplate restTemplate() { return new RestTemplate(); } @Autowired DiscoveryClient discoveryClient; @Autowired RestTemplate restTemplate; @GetMapping("/hello") public String hello(String name) { List<ServiceInstance> list = discoveryClient.getInstances("provider"); ServiceInstance instance = list.get(0); String host = instance.getHost(); int port = instance.getPort(); String returnInfo = restTemplate.getForObject("http://" + host + ":" + port + "/hello?name={1}", String.class, name); return returnInfo; } }
啟動驗證一下
可以看到,我們呼叫8003消費者服務,消費者服務又呼叫了8002服務提供者的介面,並正確返回了結果。
我們來分析一下消費者程式碼,我們先建立了一個RestTemplate Bean範例,然後注入進來,同時注入discoveryClient物件。
在介面中,通過discoveryClient.getInstances("provider")方法獲取註冊到註冊中心中的所有provider服務資訊ServiceInstance集合,ServiceInstance其實是一個介面,真正的實現類是EurekaServiceInstance,通過檢視EurekaServiceInstance的原始碼,我們發現它裡面包含了註冊中心中各服務的豐富的詳細資訊(如主機地址、埠號、範例id,應用名稱、應用組名稱等)。
我們先拿到第一個服務提供者的的ip和埠(叢集部署情況下,可能會有多個範例),然後通過呼叫restTemplate.getForObject()方法進行介面的呼叫並獲取返回資訊。
這樣就通過原生態的方式實現了服務的發現和呼叫。
拿到第一個範例進行介面的呼叫,顯然沒有達到部署多服務範例的目的,下一篇文章將帶你實現一個自定義的負載均衡器,一起期待吧!
到此這篇關於SpringCloud服務的發現與呼叫詳解的文章就介紹到這了,更多相關SpringCloud服務內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45