SpringCloud協(xié)同開(kāi)發(fā)實(shí)現(xiàn)方法淺析
相比Springboot開(kāi)發(fā),SpringCloud開(kāi)發(fā)要復(fù)雜的多,因?yàn)樯婕胺?wù)的注冊(cè)發(fā)現(xiàn),多個(gè)微服務(wù)模塊間的調(diào)用等。
最簡(jiǎn)單的解決方案是每個(gè)開(kāi)發(fā)者都在本地啟動(dòng)一套完整的開(kāi)發(fā)環(huán)境,包括網(wǎng)關(guān)、nacos等各個(gè)組成微服務(wù)的模塊,如果系統(tǒng)模塊較少,這種開(kāi)發(fā)方案還可以接受,如果系統(tǒng)太多,本地啟動(dòng)整套環(huán)境未免太多臃腫,非常不方便。
微服務(wù)注冊(cè)問(wèn)題
像下面這張圖,倒數(shù)第二個(gè)服務(wù)啟動(dòng)了兩個(gè)實(shí)例,他們兩個(gè)組成了一個(gè)集群。前端在調(diào)用接口的時(shí)候可能想調(diào)用A的該服務(wù),但是可能會(huì)被路由到B的該服務(wù)上去了,這種情況是我們不希望看到的。
我們想要看到的效果是,A、B兩個(gè)開(kāi)發(fā)者將自己的功能開(kāi)發(fā)完以后提交到服務(wù)器部署。前端可以調(diào)用到這些開(kāi)發(fā)好、經(jīng)過(guò)后端自測(cè)的服務(wù)接口,后端在提交自己的代碼之前,不應(yīng)該注冊(cè)到集群中。

為了解決上述問(wèn)題,可以在bootstrap.yml文件中加入下面配置。開(kāi)啟如下配置以后,啟動(dòng)服務(wù)將不再注冊(cè)到nacos中,前端調(diào)用也不會(huì)再調(diào)用到該服務(wù)。
server:
port: 3001
# 加入下面配置,取消該服務(wù)的注冊(cè)
spring:
cloud:
nacos:
discovery:
register-enabled: false
后端如果想要調(diào)用自己開(kāi)發(fā)的接口,可以直接通過(guò)http://localhost:3001/接口地址調(diào)用并測(cè)試,等測(cè)試接口沒(méi)問(wèn)題以后可以提交自己的代碼并部署,部署完成以后前端可以調(diào)用接口進(jìn)行開(kāi)發(fā)。
微服務(wù)間調(diào)用問(wèn)題
在微服務(wù)中可以通過(guò)OpenFeign,使用微服務(wù)名稱進(jìn)行微服務(wù)間的調(diào)用,但是同樣的,如果本地開(kāi)發(fā),我們可能想讓某個(gè)請(qǐng)求轉(zhuǎn)發(fā)到某個(gè)特定的服務(wù)上,而不是通過(guò)微服務(wù)名稱進(jìn)行負(fù)載均衡轉(zhuǎn)發(fā),為了將請(qǐng)求轉(zhuǎn)發(fā)給特定的服務(wù),可以在@FeignClient注解中指定要請(qǐng)求的URL,如下,是將RemoteUserService類的請(qǐng)求轉(zhuǎn)發(fā)給http://172.20.2.3:11201服務(wù)了。注意這樣寫是為了本地開(kāi)發(fā)方便調(diào)試,如果要提交代碼需要將這些代碼去掉。
@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, url = "http://172.20.2.3:11201", fallbackFactory = RemoteUserFallbackFactory.class)
public interface RemoteUserService
{
/**
* 通過(guò)用戶名查詢用戶信息
*
* @param username 用戶名
* @param source 請(qǐng)求來(lái)源
* @return 結(jié)果
*/
@GetMapping("/user/info/{username}")
public R<LoginUser> getUserInfo(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}前后端聯(lián)調(diào)問(wèn)題
正常的前后端聯(lián)調(diào)應(yīng)該是后端寫好代碼,將代碼合并到開(kāi)發(fā)分支上面,部署開(kāi)發(fā)分支,前端連接開(kāi)發(fā)分支進(jìn)行調(diào)試。
到此這篇關(guān)于SpringCloud協(xié)同開(kāi)發(fā)實(shí)現(xiàn)方法淺析的文章就介紹到這了,更多相關(guān)SpringCloud協(xié)同開(kāi)發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis-Plus基于MyBatis封裝 BaseMapper的流程步驟
MyBatis-Plus作為 MyBatis 的增強(qiáng)框架,通過(guò) BaseMapper 提供了通用的 CRUD 操作,極大地提升了開(kāi)發(fā)效率,為了更透徹地理解其封裝機(jī)制,本文將采用鏈路追蹤的思維,從開(kāi)發(fā)者調(diào)用接口開(kāi)始,分析其如何基于 MyBatis 完成對(duì) BaseMapper 的封裝,需要的朋友可以參考下2025-04-04
通過(guò)一個(gè)map替換字符串中指定的字符變量方法
下面小編就為大家?guī)?lái)一篇通過(guò)一個(gè)map替換字符串中指定的字符變量方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
Java初學(xué)者之五子棋游戲?qū)崿F(xiàn)教程
這篇文章主要為大家詳細(xì)介紹了Java初學(xué)者之五子棋游戲?qū)崿F(xiàn)教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
Java編程通過(guò)list接口實(shí)現(xiàn)數(shù)據(jù)的增刪改查代碼示例
這篇文章是介紹Java編程基礎(chǔ)方面的內(nèi)容,涉及l(fā)ist接口的操作,通過(guò)list接口實(shí)現(xiàn)對(duì)數(shù)據(jù)的增刪改查的相關(guān)代碼,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10
springboot Quartz動(dòng)態(tài)修改cron表達(dá)式的方法
這篇文章主要介紹了springboot Quartz動(dòng)態(tài)修改cron表達(dá)式的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
Springboot整合RabbitMQ實(shí)現(xiàn)發(fā)送驗(yàn)證碼的示例代碼
這篇文章主要介紹了Springboot整合RabbitMQ實(shí)現(xiàn)發(fā)送驗(yàn)證碼的功能,基于AMQP協(xié)議實(shí)現(xiàn)的消息隊(duì)列,它是一種應(yīng)用程序之間的通信方法,消息隊(duì)列在分布式系統(tǒng)開(kāi) 發(fā)中應(yīng)用非常廣泛,需要的朋友可以參考下2022-02-02
Spring+Mybatis+Mysql搭建分布式數(shù)據(jù)庫(kù)訪問(wèn)框架的方法
這篇文章主要介紹了Spring+Mybatis+Mysql搭建分布式數(shù)據(jù)庫(kù)訪問(wèn)框架的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-03-03
Go Java算法之外觀數(shù)列實(shí)現(xiàn)方法示例詳解
這篇文章主要為大家介紹了Go Java算法外觀數(shù)列實(shí)現(xiàn)的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08

