成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

微服務,Java目前很火熱的系統架構

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

 [[339110]]

學習內容安排如下:

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

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

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

一、系統架構概述

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

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

1集中式架構

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

 

 

但是流量一旦增加就會出現各種的問題:

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

當然為了解決這些問題,后續也做了優化,根據業務功能對系統進行拆分。

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

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

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

那么現在問題來了:

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

2分布式服務

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

多個子系統只需要訪問服務中心就好了。

 

 

優點:將基礎服務進行了抽取,系統間相互調用,提高了代碼復用和開發效率。

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

3流動計算架構SOA

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

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

 

 

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

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

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

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

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

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

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

4微服務

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

 

 

①微:微服務的核心

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

②面向服務

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

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

③單一職責

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

④獨立

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

二、服務調用方式

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

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

1RPC調用

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

2Http調用

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

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

現在使用Java代碼調用Java,做個演示:

 

 

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

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

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

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

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

那它具體是如何實現的呢?

3RestTemplate

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

 

 

①SpringBoot測試

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

是使用注解@SpringBootTest說明,參數為啟動類的字節碼。

②restTemplate

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

③getForObject()

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

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

最后

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

謝謝你的觀看。

責任編輯:華軒 來源: 今日頭條
相關推薦

2018-08-01 14:20:11

微服務架構人工智能

2021-06-22 18:00:09

微服務架構系統

2023-07-28 09:23:24

微服務架構

2023-07-27 14:03:51

微服務

2019-10-16 08:41:46

微服務架構Nginx

2023-08-31 17:13:01

架構軟件開發

2022-01-26 09:36:53

Consul語言微服務

2020-06-09 22:05:44

NGINX微服務架構

2020-12-01 12:08:45

微服務架構DOMA

2022-12-21 16:13:31

微服務架構

2022-08-14 07:04:44

微服務架構設計模式

2023-04-13 15:04:57

Java微服務架構

2018-12-12 09:59:47

微服務架構分布式系統

2017-07-04 14:57:40

微服務paasdocker

2019-02-12 06:38:13

2020-06-10 10:20:24

微服務架構WEB2.0

2015-07-29 16:23:07

2022-11-02 08:31:53

BFF架構App

2018-04-20 10:38:25

2022-08-08 13:55:47

通信設計模式微服務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久成人国产精品 | 蜜桃视频在线观看免费视频网站www | 精品在线一区二区三区 | 国产精品夜夜夜一区二区三区尤 | 亚洲一区二区三区在线视频 | 国产高清免费 | 欧美日韩一区二区三区在线观看 | 一区二区免费 | 3级毛片| 久久99深爱久久99精品 | 日韩久久久久久久 | 亚洲综合一区二区三区 | 九色视频网站 | 久久久久黑人 | 久草新在线 | 91视频国产精品 | 日韩av在线不卡 | 中文字幕在线第一页 | 国产成人精品午夜视频免费 | 欧美在线观看一区 | 午夜精品福利视频 | 国产午夜视频 | 日韩电影免费观看中文字幕 | 国产99免费视频 | 精品欧美一区二区精品久久久 | 久久网一区二区 | 久久亚 | 黄色毛片免费看 | 国产精品视频一区二区三区不卡 | 免费久久精品视频 | 国产成人av在线 | 国内精品久久久久久久影视简单 | 97日韩精品 | 国产欧美在线播放 | 日韩不卡一区二区 | 精品国产91乱码一区二区三区 | 全免费a级毛片免费看视频免 | 天堂综合网久久 | 欧美一区二区成人 | 亚洲一区三区在线观看 | 精品欧美一区二区三区久久久 |