日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
微服務,Java目前很火熱的系統(tǒng)架構

學習內容安排如下:

我們擁有十余年網頁設計和網站建設經驗,從網站策劃到網站制作,我們的網頁設計師為您提供的解決方案。為企業(yè)提供網站設計、成都網站建設、微信開發(fā)、小程序設計、手機網站制作設計、成都h5網站建設、等業(yè)務。無論您有什么樣的網站設計或者設計方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設計服務并滿足您的需求。

  • 系統(tǒng)架構的演化:集中式架構、分布式架構。
  • 服務之間的調用方式:HTTP和RPC。
  • Spring提供的RestTmeplate模板的使用。

當然系統(tǒng)架構肯定不是說我一篇文章就能學好的,只能說我作為一名初學者,是如何去理解這些概念的。

至于想要真正地去弄懂這些,需要自己長期性地不斷學習,非一朝一夕就能學完的。

一、系統(tǒng)架構概述

技術更新是非常快的,從單一應用到垂直細分,到分布式,到SOA,以及微服務架構。

還有在Google帶領下的Service Mesh,只有不斷地學習才能在IT行業(yè)前行下去。

1集中式架構

當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節(jié)點和成本。

但是流量一旦增加就會出現(xiàn)各種的問題:

  • 代碼耦合,開發(fā)維護困難。
  • 無法針對不同模塊進行針對性優(yōu)化以及擴展。
  • 單點容錯率低,并發(fā)能力差。

當然為了解決這些問題,后續(xù)也做了優(yōu)化,根據業(yè)務功能對系統(tǒng)進行拆分。

雖然解決了代碼耦合問題,但是系統(tǒng)間相互獨立,會有很多重復開發(fā)工作,影響開發(fā)效率。

舉一個例子來理解,比如說一個電商項目,根據業(yè)務功能拆分成兩套系統(tǒng):

  • 前端門戶系統(tǒng):就是用戶看到的界面。
  • 后臺管理系統(tǒng):內部人員的管理界面。

那么現(xiàn)在問題來了:

根據id去數(shù)據庫查詢商品,Service層和Dao層的代碼要寫兩遍,造成了代碼的極度冗余。

2分布式服務

為了解決代碼冗余問題,可以將核心業(yè)務作為獨立的服務抽取出來,形成服務中心。

多個子系統(tǒng)只需要訪問服務中心就好了。

優(yōu)點:將基礎服務進行了抽取,系統(tǒng)間相互調用,提高了代碼復用和開發(fā)效率。

缺點:一旦服務變多,調用關系錯綜復雜,開發(fā)者自己都搞不清楚誰調用誰,難以維護。

3流動計算架構SOA

它將普通的分布式系統(tǒng)集中管理起來了,更便于維護,同時也提高資源利用率。

其典型的架構就是阿里巴巴的Dubbo,這個架構圖就比較復雜了,我就不自己畫了。

不要看好像挺復雜的,本質上都是為了管理服務,我以打車的例子大致說明下:

  • 在以前,我們若是要乘車,需要去找車,而對于車主來說也需要找乘客。
  • 而現(xiàn)在,有打車服務了,我們若是要乘車直接叫滴滴就好了,而司機也方便找乘客。

對于服務也是一樣的,以前有什么問題?

  • 服務越來越多,要管理每個服務的地址。
  • 服務之間調用關系錯綜復雜,難以理清。
  • 服務過多,服務狀態(tài)難以管理。

為了解決上述問題,服務治理做了哪些?

  • 服務注冊中心,實現(xiàn)服務自動注冊,無需人為記錄服務地址。
  • 服務自動訂閱,服務列表自動推送,服務調用透明化,無需關心依賴關系。
  • 動態(tài)監(jiān)控服務狀態(tài),人為控制服務狀態(tài)即可。

對于我個人來說,我就會用滴滴和司機之間的關系作為對比,來理解服務管理和服務之間的關系,不然專業(yè)術語太多了,也很難理解。

4微服務

微服務和SOA比較像,但也有一些差別。

①微:微服務的核心

也就是小的意思,服務拆分粒度很小。例如一個用戶管理就可以作為一個服務。

②面向服務

每個服務都要對外暴露Rest風格服務接口API,并不關心服務的技術實現(xiàn)。

你是用Java實現(xiàn)的也好,還是用Python實現(xiàn)的也罷,都可以,只要提供Rest的接口即可。

③單一職責

微服務中每一個服務都對應唯一的業(yè)務能力,做到單一職責。

④獨立

  • 團隊獨立:每個服務對應獨立的開發(fā)團隊。
  • 技術獨立:因為是面向服務,提供Rest接口,使用什么技術沒有別人干涉。
  • 自治:自治是說服務間互相獨立,互不干擾。
  • 前后端獨立:以前后端要為電腦端、手機端提供不同接口,現(xiàn)在只需要提供Rest接口。
  • 數(shù)據庫分離:每個服務都使用自己的數(shù)據源。
  • 服務獨立:服務間雖然有調用,但要做到服務重啟不影響其它服務。

二、服務調用方式

我們以前寫的代碼本質上都是在一個服務中,屬于服務內部:類與類之間的調用。

那如何實現(xiàn)服務之間的調用呢?有兩種方式:RPC調用和Http調用。

1RPC調用

基于原生TCP通信,速度快,效率高,現(xiàn)在熱門的dubbo,都是RPC的典型代表。

2Http調用

這個就太常見了,我們以前一直在用的Ajax請求,就屬于http調用。

它的特點在于靈活,實現(xiàn)了不同編程語言之間的調用,Ajax就是在使用js調用Java。

現(xiàn)在使用Java代碼調用Java,做個演示:

我在電腦上創(chuàng)建了兩個不同的工程,工程①也就是我們這幾天用SpringBoot搭建的項目。

在工程①中實現(xiàn)了通過id去數(shù)據庫查詢用戶數(shù)據的功能,也可以通過瀏覽器訪問。

那在工程②中調用工程①中的業(yè)務,也就是服務之間的調用。

注意:這和以前已經有本質上的區(qū)別了,以前都是內部的調用,現(xiàn)在不一樣了。

當然因為我這邊只有一臺電腦,所以我不太確定能否實現(xiàn)跨電腦的調用。

那它具體是如何實現(xiàn)的呢?

3RestTemplate

它是Spring提供的一個模板工具類,也是上述我使用到的工具:

①SpringBoot測試

在SpringBoot中測試和在Spring中測試有些許不同之處需要注意。

是使用注解@SpringBootTest說明,參數(shù)為啟動類的字節(jié)碼。

②restTemplate

這也就是spring提供的模板工具類,使用spring注入后,即可以直接使用

③getForObject()

這是發(fā)送一次get請求,postForObject對應著post請求,發(fā)送到哪兒呢?

  • 參數(shù)一:指定訪問電腦的IP地址。
  • 參數(shù)二:返回數(shù)據的Class對象。

最后

學習完了Http客戶端工具,就可以正式學習微服務了,明天開始學SpringCloud。

謝謝你的觀看。


分享文章:微服務,Java目前很火熱的系統(tǒng)架構
轉載源于:http://www.5511xx.com/article/cdhhpgp.html