前言
現(xiàn)在越來(lái)越多的公司開(kāi)始擁抱Spring Cloud了,Spring Boot做為下一代 web 框架,Spring Cloud 作為最新最火的微服務(wù)的翹楚,你還有什么理由拒絕。很多Java方向的同學(xué)也開(kāi)始積極的學(xué)習(xí)Spring Cloud,其實(shí)這邊還有一個(gè)問(wèn)題就是說(shuō):雖然大家學(xué)了Eureka,Ribbon,Hystrix,Zuul,F(xiàn)eign等等,但是要運(yùn)用到實(shí)際的項(xiàng)目中去還是有些難度的。
微服務(wù)難就難在服務(wù)的拆分上,框架只是工具,很多人都會(huì)用,服務(wù)拆分,服務(wù)之間的關(guān)系這些都是在拆分時(shí)候需要考慮的事情。
今天就有一位同學(xué)給我發(fā)郵件,咨詢(xún)我下面2個(gè)問(wèn)題:
下面以我自己的經(jīng)驗(yàn)來(lái)做一些解答,僅供參考:
關(guān)于第一個(gè)問(wèn)題中的API是各個(gè)微服務(wù)下的Controller?
我們所說(shuō)的API其實(shí)就是一個(gè)接口,大部分都是用Spring MVC方式去開(kāi)發(fā)的,也就是Controller中的一個(gè)加了注解的方法,注解就是我們常用的那幾個(gè):
關(guān)于第一個(gè)問(wèn)題中的是否需要統(tǒng)一的一個(gè)工程,在里面封裝其他微服務(wù)的controller?
這種其實(shí)也沒(méi)有固定的模式,大部分是直接通過(guò)API網(wǎng)關(guān)轉(zhuǎn)發(fā)到你的業(yè)務(wù)服務(wù)上
以猿天地這樣的博客網(wǎng)站的業(yè)務(wù)類(lèi)舉例:
有一個(gè)業(yè)務(wù)功能,當(dāng)我查看具體的博客文章的時(shí)候,需要返回的信息如下:
這個(gè)時(shí)候我們這個(gè)查看文章的接口其實(shí)就涉及到了3部分的數(shù)據(jù),文章本身的信息,評(píng)論信息,作者的信息
就是有3個(gè)服務(wù),用戶(hù)服務(wù),博客服務(wù),評(píng)論服務(wù)
那么問(wèn)題來(lái)了,涉及到多個(gè)服務(wù)之前的交互,其實(shí)跟上面那位同學(xué)問(wèn)我的是一樣的問(wèn)題,是否需要統(tǒng)一工程,組裝其他服務(wù)?是否可以相互調(diào)用?
這種的話(huà)我推薦2種實(shí)現(xiàn)方式:
一. API網(wǎng)關(guān)直接轉(zhuǎn)發(fā)到博客服務(wù)中
我們這個(gè)API就是一個(gè)獲取博文信息的接口,主體肯定是博客服務(wù),在博客服務(wù)中有一個(gè)博文信息的接口,在接口中去調(diào)用用戶(hù)服務(wù)提供的用戶(hù)信息接口,還要去調(diào)用評(píng)論服務(wù)中博文的評(píng)論信息,下面看偽代碼:
@GetMapping("/blog/detail/{id}") public BlogInfo blogInfo(@PathVariable("id") Long id) { // 獲取博客信息 Blog blog = blogService.getById(id); // 獲取用戶(hù)信息 UserInfo userInfo = userFeignClient.getUserInfo(blog.getUserId()); // 獲取評(píng)論信息 CommentInfo commentInfo = commentFeignClient.getCommentInfo(id); return 組裝所有信息返回。 }
當(dāng)前題目:SpringCloud實(shí)現(xiàn)提供API給客戶(hù)端的方法詳解-創(chuàng)新互聯(lián)
URL地址:http://jinyejixie.com/article46/dijshg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、網(wǎng)站維護(hù)、手機(jī)網(wǎng)站建設(shè)、虛擬主機(jī)、企業(yè)建站、用戶(hù)體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容