偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一文看懂Java微服務(wù)架構(gòu),WEB2.0,垂直架構(gòu),分布式架構(gòu),微服務(wù)架構(gòu)

開發(fā) 架構(gòu) 分布式
在基于單體架構(gòu)的設(shè)計(jì)中,無(wú)法滿足WEB2.0對(duì)項(xiàng)目的需求,需要在單體架構(gòu)上搭建集群(多個(gè)服務(wù)器),可以提升項(xiàng)目的穩(wěn)定性,并且并發(fā)量增加,也可以承受住。

Java微服務(wù)架構(gòu)

目錄:

  1.  了解開發(fā)環(huán)境&生成環(huán)境
  2.  WEB1.0 & WEB2.0
  3.  垂直架構(gòu)
  4.  分布式架構(gòu)
  5.  微服務(wù)架構(gòu)

1.了解開發(fā)環(huán)境&生產(chǎn)環(huán)境

1.1 開發(fā)環(huán)境

平時(shí)在寫代碼的時(shí)候,大多都在WIN10/WIN7/Mac.

這些系統(tǒng)都可以稱為開發(fā)環(huán)境。咱們?yōu)榱烁咝У拈_發(fā)應(yīng)用程序,安裝很多的軟件,會(huì)

導(dǎo)致操作系統(tǒng)不安全,穩(wěn)定性降低。

2.1. 生產(chǎn)環(huán)境(學(xué)會(huì)如何操作,Linux操作系統(tǒng))

在生產(chǎn)環(huán)境中,操作不會(huì)采用Win10/Mac。這種操作系統(tǒng)相對(duì)不安全,生產(chǎn)環(huán)境是要面向全體用戶的,一般會(huì)采用專業(yè)的操作系統(tǒng)。

大多數(shù)市面上使用的都是基于Linux的操作系統(tǒng),還有Windows版本的服務(wù)器操作系統(tǒng)

Windows 2003 service

02. WEB1.0 & WEB2.0

2.1. WEB1.0時(shí)期

在WEB1.0時(shí)期,由于帶寬不足,這時(shí)的項(xiàng)目大多是內(nèi)容少,用戶量也不多,甚至有一些項(xiàng)目不需要對(duì)外開放,對(duì)安全性和穩(wěn)定性的要求是不高的,

單體架構(gòu)就足以應(yīng)對(duì)

2.2. WEB2.0時(shí)期

隨之到來的WEB2.0 實(shí)現(xiàn)了ADSL撥號(hào)上網(wǎng),寬帶提速,最高可以達(dá)到8M 用戶量也就不斷增加,一些門戶網(wǎng)站也開始活躍,項(xiàng)目就需要考慮安全性,和穩(wěn)定性。

在基于單體架構(gòu)的設(shè)計(jì)中,無(wú)法滿足WEB2.0對(duì)項(xiàng)目的需求,需要在單體架構(gòu)上搭建集群(多個(gè)服務(wù)器),

在搭建集群之后,可以提升項(xiàng)目的穩(wěn)定性,并且并發(fā)量增加,也可以承受住

2.3. 搭建集群后出現(xiàn)的問題

  1.  用戶的請(qǐng)求到底要發(fā)送到那臺(tái)服務(wù)器上,如何才能保證請(qǐng)求平均的分發(fā)給不同的服務(wù)器,從而緩解用戶量增加的壓力
  2.  編寫項(xiàng)目時(shí),如果用戶登錄成功,將用戶的標(biāo)識(shí)存放到的Session中,在搭建集群之后,數(shù)據(jù)共享問題
  3.  當(dāng)數(shù)據(jù)量特別龐大時(shí),如果還直接去數(shù)據(jù)庫(kù)查詢,速度很慢,如何提升查詢效率
  4.  針對(duì)大家在搜索一些數(shù)據(jù)時(shí),where content like '%#{xxx}% ’

2.4. 針對(duì)上述問題,如何解決(中間件)

1.Nginx,用來解決用戶請(qǐng)求平均分發(fā)

2.Redis, 用來解決數(shù)據(jù)共享并實(shí)現(xiàn)緩存功能

3.ElacticSearch,用來解決搜索數(shù)據(jù)的功能

03. 垂直架構(gòu)

比如項(xiàng)目包含了三個(gè)模塊,用戶模塊,商品模塊,訂單模塊,商品模塊。

一般商品瀏覽的商品模塊流量最大,為了防止商品模塊壓力過大,一般直接有效的方法就是搭建集群。

在單體架構(gòu)的集群上去搭建,效果相對(duì)比較差。隨著項(xiàng)目的不斷更新,項(xiàng)目中的功能月越來越多,最嚴(yán)重的可能會(huì)導(dǎo)致項(xiàng)目無(wú)法啟動(dòng)

關(guān)于單體架構(gòu)中,完美的體驗(yàn)了低內(nèi)聚,高耦合。(開發(fā)的要求是高內(nèi)聚,低耦合)

為了解決上述的各種問題,更新了垂直架構(gòu)

04. 分布式架構(gòu)

4.1 項(xiàng)目迭代

隨著項(xiàng)目的不斷迭代,新老功能之間需要相互交互,服務(wù)器與服務(wù)器之間需要通信的。

項(xiàng)目一般分為三層的 Controller Service Dao。導(dǎo)致程序變慢的重災(zāi)區(qū),一般是Service和Dao,在搭建集群時(shí),確實(shí)針對(duì)三層都搭建集群,效果不是很好。

架構(gòu)從垂直架構(gòu),演變到了分布式架構(gòu)

分布式架構(gòu)落地的技術(shù):

為了解決各個(gè)服務(wù)之間的通信,國(guó)內(nèi)通訊的方式有兩種:

1.Dubbo 采用的RPC方式

2.SpringCloud 采用的HHTP方式

05. 分布式架構(gòu)常見問題

5.1服務(wù)之間的異步通訊

在使用分布式架構(gòu)之后,服務(wù)之間的通信都是同步的。

在一些不是核心業(yè)務(wù)的功能上,咱們希望實(shí)現(xiàn)異步通訊。

為了實(shí)現(xiàn)服務(wù)之間的異步通訊,需要學(xué)習(xí)MQ. MQ-RabbitMQ(消息隊(duì)列)

 

5.2 服務(wù)之間通信地址的維護(hù)

由于服務(wù)越來越多,每個(gè)服務(wù)的訪問地址都是不一樣的。協(xié)議://地址:端口號(hào)

由于我們的模塊繁多,并且模塊搭建的集群數(shù)量增加,會(huì)導(dǎo)致其他模塊需要維護(hù)各種ip地址等信息,導(dǎo)致項(xiàng)目的維護(hù)性極低,耦合性變高,并且也無(wú)法實(shí)現(xiàn)負(fù)載均衡的功能

需要使用一個(gè)技術(shù)來解決當(dāng)前問題:

Eureka注冊(cè)中心幫助我們管理服務(wù)信息 :實(shí)現(xiàn)通訊地址維護(hù)

Robbin可以幫助我們實(shí)現(xiàn)服務(wù)之間的負(fù)載均衡 :實(shí)現(xiàn)服務(wù)之間的負(fù)載均衡

5.3 服務(wù)降級(jí)

在上述的架構(gòu)中,如果說訂單模塊出現(xiàn)了問題。

只要是涉及到訂單模塊的功能,全部都無(wú)法使用。

可能會(huì)導(dǎo)致服務(wù)器提供的線程池耗盡,給用戶友好的提示都是無(wú)法做到的

為了解決上述的問題,使用Hystrix處理,

Hystrix提供了線程池隔離的方式,避免服務(wù)器線程池耗盡,在一個(gè)服務(wù)無(wú)法使用時(shí),可以提供斷路器的方式解決

使用Hystrix 幫我們實(shí)現(xiàn)斷路器和隔離,并最終服務(wù)降級(jí)

Eureka,Robbin,Hystrix 都是SpringClod中的組件

5.4 海量數(shù)據(jù)

海量數(shù)據(jù)最終會(huì)導(dǎo)致數(shù)據(jù)庫(kù)無(wú)法存儲(chǔ)全部的內(nèi)容。即便數(shù)據(jù)庫(kù)可以存儲(chǔ)海量的數(shù)據(jù),在查詢數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)的響應(yīng)是極其緩慢的

在用戶高并發(fā)的情況下,數(shù)據(jù)庫(kù)也是無(wú)法承受住的

為了解決上述的問題,可以基于MyCat實(shí)現(xiàn)數(shù)據(jù)庫(kù)的分庫(kù)分表。

06. 微服務(wù)架構(gòu)

雖然已經(jīng)將每個(gè)模塊獨(dú)立的做開發(fā),比如商品模塊,壓力最大的是商品的查詢。

在單獨(dú)模塊中再次拆分項(xiàng)目的方式就可以稱為微服務(wù)架構(gòu)。微服務(wù)架構(gòu)其實(shí)屬于分布式架構(gòu)的

6.2 容器化技術(shù)

為了解決模塊過多,運(yùn)維成本增加的問題。采用Docker容器化技術(shù)來幫助我們管理

后期在學(xué)習(xí)的時(shí)候,也需要大量的軟件,可以使用Docker來幫助我們按照軟件。

6.3 分布式架構(gòu)下的其他問題

分布式架構(gòu)幫助我們解決了很多問題,但是隨之也帶來了跟多問題:

1. 分布式事務(wù):

最傳統(tǒng)的操作事務(wù)的方式,是通過Connection連接對(duì)象的方式操作,

Spring也提供了聲明式事務(wù)的操作,為了解決事務(wù)的問題,后續(xù)會(huì)使用到RabbitMQ 或者使用到 LCN 方式解決

2.分布式鎖:

傳統(tǒng)的鎖方式,一種是synchronize 或者 Lock鎖,在分布式環(huán)境下,傳統(tǒng)的鎖是沒有效果的。為了解決鎖的問題,后續(xù)會(huì)使用Redis 或者 Zookeeper來解決

3.分布式任務(wù):

在傳統(tǒng)的定時(shí)任務(wù)下,由于分布式環(huán)境的問題,可能會(huì)造成任務(wù)重復(fù)執(zhí)行,一個(gè)比較大的任務(wù)希望可以拆分。為了解決這個(gè)問題,后續(xù)會(huì)使用Redis + Quartz 或者 Elastic-Job。 

 

責(zé)任編輯:龐桂玉 來源: JAVA高級(jí)架構(gòu)
相關(guān)推薦

2023-09-12 22:58:51

分布式架構(gòu)微服務(wù)

2023-11-21 08:37:09

2019-05-28 10:30:16

Java架構(gòu)微服務(wù)

2023-07-28 09:23:24

微服務(wù)架構(gòu)

2021-03-17 10:51:16

架構(gòu)運(yùn)維技術(shù)

2018-03-02 16:11:29

Spring Clou分布式服務(wù)跟蹤

2017-03-14 11:52:52

微服務(wù)架構(gòu)數(shù)據(jù)管理

2021-06-09 09:00:00

微服務(wù)架構(gòu)技術(shù)

2020-05-12 11:38:08

存儲(chǔ)架構(gòu)分布式

2018-04-16 14:56:56

微服務(wù)架構(gòu)分布式服務(wù)

2018-04-18 16:07:49

Spring Clou微服務(wù)分布式

2018-03-13 16:42:26

分布式服務(wù)跟蹤

2018-04-09 13:56:13

微服務(wù)架構(gòu)分布式

2018-04-02 15:01:31

微服務(wù)架構(gòu)分布式服務(wù)

2024-05-07 08:49:45

微服務(wù)架構(gòu)模式

2021-09-28 09:43:11

微服務(wù)架構(gòu)技術(shù)

2017-07-28 16:41:53

Spring Clou微服務(wù)架構(gòu)

2020-04-14 11:14:02

PostgreSQL分布式數(shù)據(jù)庫(kù)

2023-05-29 14:07:00

Zuul網(wǎng)關(guān)系統(tǒng)

2018-05-23 15:58:27

Spring Clou微服務(wù)架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)