亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1.分布式開發(fā)簡介

  1. 分布式開發(fā)的思考點(diǎn):如何可以讓代碼更安全;如何有效的通訊;

在進(jìn)行分布式處理的時候如何進(jìn)行程序功能劃分;

  1. web集群:考慮多用戶并發(fā)訪問的處理速度

業(yè)務(wù)中心:在進(jìn)行一些龐大的項(xiàng)目設(shè)計(jì)過程之中,應(yīng)該有更加完善的業(yè)務(wù)處理,這樣所有的客戶端(服務(wù)器),用這些業(yè)務(wù)中心的操作就可以完成具體的功能。

數(shù)據(jù)庫集群:解決了數(shù)據(jù)的存儲問題,以及數(shù)據(jù)的分片管理。

對于分布式的項(xiàng)目開發(fā)按照歷史的發(fā)展經(jīng)歷過如下的一些技術(shù):

CORBA:公共對象請求代理架構(gòu),它是一種開發(fā)的標(biāo)準(zhǔn),而且也是許多語言都支持的開發(fā)標(biāo)準(zhǔn)。

RMI(遠(yuǎn)程方法調(diào)用):該技術(shù)是sun提出的,該技術(shù)出現(xiàn)的最大特征是希望可以與CORBA進(jìn)行市場的競爭,于是這技術(shù)出現(xiàn)時,很多公司不認(rèn)可這些技術(shù)。

SpringCloud開發(fā)框架入門知識

 

2、RMI實(shí)現(xiàn)方案

用戶->接口(存根)->接口及實(shí)現(xiàn)類(骨架)

發(fā)現(xiàn)RMI很好用,單不如CORBA廣泛。后基于CORBA設(shè)計(jì)了RMI-IIOP協(xié)議,這個協(xié)議應(yīng)用在了EJB上。

3.EJB思想

用戶->WEB容器->EJB容器(WebSphere、WebLogic、JBoss)

優(yōu)秀的理論,糟糕的實(shí)現(xiàn)。后因XML的出現(xiàn),基于XML作為交互語言的WebService登場了。

4.Web服務(wù)及Soa服務(wù)思想

1、.Net 與JAVA通過SOAP協(xié)議相互調(diào)用(WebService=XML+SOAP).

2、WebService技術(shù)開發(fā),存在如下問題:

速度太慢了;

想要采用遠(yuǎn)程接口方式調(diào)用,就要利用開發(fā)工具生成一堆工具類代碼;

3、基于上述SOA思想出現(xiàn),即將所有的服務(wù)統(tǒng)一管理起來,就成了服務(wù)總線,那么所有的開發(fā)者直接調(diào)用里面的服務(wù)就完成一些功能。后來又不斷出現(xiàn)了許多的RPC開發(fā)技術(shù),其中國內(nèi)具有代表性的dubbo開發(fā)技術(shù),不過成長最快的Rest,因?yàn)镴SON的廣泛引用,就如同最初XML技術(shù)造就了WebService,JSON造就了Rest服務(wù);

利用Rest進(jìn)行RPC技術(shù)實(shí)現(xiàn),這樣的操作速度很快,而且占用的帶寬要少,SpringCloud就將整個Rest作為了RPC實(shí)現(xiàn)技術(shù),并且這一技術(shù)已經(jīng)開始出現(xiàn)現(xiàn)有行業(yè)的統(tǒng)一之勢。而且Spring Cloud依照Spring Boot開發(fā)技術(shù),可以實(shí)現(xiàn)項(xiàng)目的打包發(fā)布以及單獨(dú)運(yùn)行,這一點(diǎn)符合當(dāng)前云時代的開發(fā)要求。

5.微服務(wù)的缺點(diǎn)

SpringCloud整體核心架構(gòu)只有一點(diǎn):Rest服務(wù),也就是說在整個SpringCloud配置過程之中,所有的配置處理都是圍繞著Rest完成的,在整個Rest處理之中,一定要有兩個端:服務(wù)的提供者(Provider)及服務(wù)的消費(fèi)者(Consumer),所以對于整個SpringCloud基礎(chǔ)結(jié)構(gòu)就是如下所示:

用戶-反向代理-Web微服務(wù)-(Restful即服務(wù)地址:端口)-微服務(wù)提供者

微架構(gòu)缺點(diǎn):只有業(yè)務(wù)層才能規(guī)劃為微架構(gòu),

REST指的一種軟件架構(gòu)風(fēng)格、設(shè)計(jì)風(fēng)格,而不是標(biāo)準(zhǔn),只是提供了一組設(shè)計(jì)原則和約束條件。滿足這些約束條件和原則的應(yīng)用程序或設(shè)計(jì)就是 RESTful。它主要用于客戶端和服務(wù)器交互類的軟件。基于這個風(fēng)格設(shè)計(jì)的軟件可以更簡潔,更有層次,更易于實(shí)現(xiàn)緩存等機(jī)制。

SpringCloud開發(fā)框架入門知識

 

6.Feign-robbon-Eureka-Hystrix熔斷處理機(jī)制

客戶端(WEB)-注冊中心-業(yè)務(wù)層-數(shù)據(jù)層-MySQL

Web端通過Nginx實(shí)現(xiàn)負(fù)載均衡,業(yè)務(wù)端通過在Eureka注冊中心之中進(jìn)行注冊,通過robbon進(jìn)行業(yè)務(wù)端負(fù)載均衡配置。通過feign偽造接口實(shí)現(xiàn),將robbon偽造為接口。Hystrix熔斷處理機(jī)制,保證某一個微服務(wù)即使出現(xiàn)了問題,依然可以正常使用。(原理為某個微服務(wù)出現(xiàn)問題,返回定義好的錯誤信息,而不是報(bào)錯或無返回)

Feign-robbon-Eureka-Hystrix熔斷處理機(jī)制

7.Zuul代理機(jī)制:

客戶端-調(diào)用微服務(wù)X(RPC前端/springBoot)-Rest(zuul代理)-調(diào)用微服務(wù)X(RPC后端SpringCloud)-數(shù)據(jù)層-數(shù)據(jù)庫。

通過Zuul代理的用戶只需要知道指定路由的路徑,就可以訪問指定微服務(wù)信息,這樣更好的體現(xiàn)了java中的“key=value”的設(shè)計(jì)思想,而且所有的微服務(wù)Zuul進(jìn)行代理。

springCloud設(shè)計(jì)的時候提供有一個SpringCloudConfig程序組件,利用這個組件就可以直接基于GIT或SVN來進(jìn)行配置文件的管理。

springBoot-zuul代理及Eureka注冊服務(wù)-可通過GitHup管理的Config及微服務(wù)。

在整體設(shè)計(jì)上SpringCloud更好的實(shí)現(xiàn)了RPC架構(gòu),而且使用了Rest作為通訊的基礎(chǔ),且大量使用的netfix公司的產(chǎn)品技術(shù),這些技術(shù)也有了可靠的保證。

8.Restful基礎(chǔ)架構(gòu)配置項(xiàng)目開發(fā)環(huán)境

對于rest基礎(chǔ)架構(gòu)實(shí)現(xiàn)處理是Springcloud核心所在。

創(chuàng)建一個microcloud的整體父pom項(xiàng)目,將創(chuàng)建三個子模塊: microcloud-api子模塊,作為公共的信息導(dǎo)入配置模塊; microcloud-provider-dept-8001作為服務(wù)提供者,該提供者負(fù)責(zé)使用Mybatis與數(shù)據(jù)庫的交互;

Microcloud-consumer-80:作為微服務(wù)調(diào)用的客戶端使用。

  1. 創(chuàng)建一個新的maven項(xiàng)目:microcloud;
  2. 修改pom.xml文件,主要追加spring boot及Spring cloud兩個開發(fā)包的依賴關(guān)系;

Ps:springCloud離不開springBoot,所以需要配置此依賴包。

  1. microcloud-api 建立一個api的公共模塊,該模塊的主要功能是提供有公共處理類,本次預(yù)計(jì)建立一個Dept數(shù)據(jù)表,里面的字段:

Deptno(long)、dname(String)、dbname(保存的數(shù)據(jù)庫的名字)

  1. microcloud-provider-dept-8001

創(chuàng)建一個Rest提供者的項(xiàng)目模塊,在這個模塊主要定義要使用的數(shù)據(jù)庫腳本;

由于在整個微服務(wù)里面需要進(jìn)行負(fù)載均衡操作,所以我們本次在使用的時候加入了數(shù)據(jù)庫的名稱信息。

 

9.創(chuàng)建Dept微服務(wù):

所謂微服務(wù)的核心本質(zhì)就是JSON的傳輸,那么既然現(xiàn)在要求使用Mybatis進(jìn)行數(shù)據(jù)庫操作,所以應(yīng)該在項(xiàng)目里面配置Druid的數(shù)據(jù)庫連接池,而后對外進(jìn)行項(xiàng)目的發(fā)布。

①microcloud-provider-dept-8001:修改pom.xml配置文件,追加相關(guān)的依賴程序支持包。

②microcloud-provider-dept-8001:創(chuàng)建IDeptDAO數(shù)據(jù)操作接口,這個接口里面將提供有三個數(shù)據(jù)操作方法。

③microcloud-provider-dept-8001:修改Application.yml配置文件,追加mybatis和服務(wù)的相關(guān)配置信息;

④microcloud-provider-dept-8001:定義src/main/resources/mybatis/mybatis.cfg.xml配置文件:

⑤microcloud-provider-dept-8001:修改src/main/resources/mybatis/mapper/cn/mldn/Dept.xml配置文件;

⑥microcloud-provider-dept-8001:建立IDeptService接口,做業(yè)務(wù)實(shí)現(xiàn):

⑦microcloud-provider-dept-8001:定義接口的運(yùn)行主類。

⑧microcloud-provider-dept-8001:進(jìn)行業(yè)務(wù)接口測試編寫。

⑨microcloud-provider-dept-8001:建立DeptRest服務(wù)類。

@Controller

Public class DeptRest{

@ResquestMapping(value=“dept/get”,method=RequestMethod.GET)

Public Dept get(){

Return xx;

}

}

  1. 修改hosts配置文件,追加一個映射路徑。

(C:windowsSystem32driversetchosts)

追加“127.0.0.1 dept-8001.com”

  1. 觀察Rest服務(wù)能否正常提供;

調(diào)用get操作;dept-8001.com:8001/dept/get/1;

調(diào)用list操作;調(diào)用add操作。

 

10.客戶端調(diào)用微服務(wù):

  1. 創(chuàng)建一個Maven的新的模塊:microcloud-consumer-80
  2. microcloud-consumer-80:修改application.yml配置文件:

Server:

port:80

  1. microcloud-consumer-80:創(chuàng)建一個Rest的配置程序類,主要進(jìn)行RestTemplate類對象創(chuàng)建。

@Configuration

Public class RestConfig{

@Bean

Public RestTemplate getRestTemplate(){

Return new RestTemplate();

}

}

  1. microcloud-consumer-80:創(chuàng)建一個控制器,為了簡化處理,本次不再進(jìn)行頁面定義,所有服務(wù)結(jié)果都使用REST返回。
  2. 編寫啟動程序類
  3. 修改hosts配置文件,追加訪問控制路徑。

127.0.0.1 client.com

7、進(jìn)行代碼測試調(diào)用

調(diào)用數(shù)據(jù)返回任務(wù):http://client.com/consumer/dept/get?id=1?

 

SpringCloud開發(fā)框架入門知識

 

11.1Rest提供者安全訪問:

所有Rest服務(wù)最終都是暴露在公網(wǎng),Rest訪問,安全性是首要因素。

11.1配置安全驗(yàn)證

如果要想進(jìn)行安全的驗(yàn)證處理,那么首先一定要先在服務(wù)提供方進(jìn)行處理。

  1. 【microcloud-provider-dept-8001】修改pom.xml配置文件,追加SpringSecurity相關(guān)依賴包引入;

如果你現(xiàn)在配置了安全框架,則在啟動時會出現(xiàn)如下提示信息:

Using default security password:73df5......

  1. Rest提供者安全訪問配置

security:

Basic:

Enabled:true #啟用springSecurity的安全配置項(xiàng)。

User:

name:mldnjava #認(rèn)證用戶名

password:hello #認(rèn)證密碼

role: #授權(quán)角色

隨后在項(xiàng)目之中訪問Rest服務(wù)接口http://client.com/consumer/dept/get?id=1?,此時在訪問的時候會要求用戶輸入用戶名與密碼,這個時候有一個更簡化方法進(jìn)行內(nèi)容的輸入:http://mldnjava:hello@client.com/consumer/dept/get?id=1?

11.2SpringSecurity安全訪問介紹

在安全的開發(fā)之中,對于Rest服務(wù)提供者不可能被用戶直接訪問的,所以肯定需要一個rest客戶端springboot進(jìn)行調(diào)用,可是現(xiàn)在Rest提供者的服務(wù)上有了認(rèn)證信息,那么該如何訪問呢?

如果這個時候在Rest客戶端上直接使用用戶名和密碼做加密處理,那么根本無法訪問,此時會出現(xiàn)有401的錯誤代碼,因?yàn)檎J(rèn)證出現(xiàn)了錯誤。是因?yàn)樗械恼J(rèn)證的處理操作,應(yīng)該以頭信息的模式進(jìn)行處理。而后使用base64進(jìn)行加密處理后才可以得到一個正確的訪問路徑。

  1. 【microcloud-consumer-80】修改RestConfig配置類,在這個配置類上追加有新的bean配置項(xiàng);
  2. 【microcloud-consumer-80】修改ConsumerDeptController配置類,在進(jìn)行Rest訪問的時候設(shè)置好這個頭部的信息。

HttpHeaders headers = new HttpHeaders();

String auth=“user:password”

byte[] encodeAuth =Base64.getEncoder().encode(auth.getbytes(Charset.forName(“US-ASCII”)))

String authHeader = “basic ”+ new String(encodeAuth);

headers.set(“Authorization”,”authHeader”);

在進(jìn)行授權(quán)的頭信息內(nèi)容配置的時候加密的信息一定要與“Basic ”之間有一個空格。

對于rest而言,在spring課程講過,里面如果進(jìn)行參數(shù)的傳遞,有各自方式,例如:各種頁面的路徑信息組成,如果要是傳遞復(fù)雜內(nèi)容,建議你在整個處理的時候就去使用那些頁面的參數(shù)傳遞模式。

11.3 無狀態(tài)Session/rest配置

整個Rest項(xiàng)目中的一個問題所在,所有的Rest都是基于Http協(xié)議的應(yīng)用,這種應(yīng)用上所有的web容器一般都會提供有一個Session機(jī)制,也就是說每一個用戶訪問之后,如果該用戶一直連接,則認(rèn)為該用戶一直被服務(wù)器保存狀態(tài),但微服務(wù)有可能并發(fā)訪問幾W或幾十W人,那么如果所有的Session狀態(tài)都被維護(hù)著?

  1. 【microcloud-provider-member-8001】現(xiàn)在修改Rest程序類,追加一個取得session id的方法

request.getSession().getId();

隨后進(jìn)行提供者的Rest連接訪問,http://mldnjava:hello@dept-9=8001.com:8001/dept/sessionId:

  1. 在一個springCloud配置之中,默認(rèn)是會保存有session狀態(tài)的,而后如果用戶有需要則可以根據(jù)“sessionCreationPolicy”枚舉類進(jìn)行不同的session狀態(tài)設(shè)置,但是從整體的操作來說session最好設(shè)置為無狀態(tài)(服務(wù)端不保存你的session狀態(tài))。

application.yml配置文件

Security:

Session:always(保存狀態(tài),服務(wù)器內(nèi)存可能被占滿)

Stateless(無狀態(tài))

不管你以后的項(xiàng)目或者支持類中是否有設(shè)置的無狀態(tài)的問題,你最好都進(jìn)行一下設(shè)置,否則你的Rest服務(wù)將受到嚴(yán)重的內(nèi)存困擾,最嚴(yán)重的就是內(nèi)存溢出。

 

12.定義安全配置程序類

在進(jìn)行Rest服務(wù)開發(fā)的時候,為了保證安全所有的程序里面都需要進(jìn)行Spring-Security安全認(rèn)證處理,可是之前所進(jìn)行的認(rèn)證處理都是在application.yml配置文件完成的,這樣配置明顯不符合邏輯,如果你需要開發(fā)的微服務(wù)很多,這些微服務(wù)都要求使用統(tǒng)一的用戶名和密碼的時候就非常不方便了。所以現(xiàn)在最簡單的做法是進(jìn)行統(tǒng)一的設(shè)置。

  1. 創(chuàng)建一個microcloud-security的Maven模塊
  2. 【microcloud-security】修改pom.xml配置文件
  3. 【microcloud-security】建立一個統(tǒng)一的安全配置類:

WebSecurityConfig extends WebSecurityConfigurerAdapter{

Public void config(HttpSecurity http)

{

//表示所有訪問都必須進(jìn)行認(rèn)證處理后才能正常進(jìn)行

http.httpBasic().add().authorizeRequest().anyRequest().fullyAuthenticated();

//所有的Rest服務(wù)一定要設(shè)置為無狀態(tài),以提升操作性能。

http.sessionManager().sessionCreationPolicy(SessionCreation.Policy.STATELESS);

}

}

  1. 【microcloud-provider-member-8001】修改pom.xml配置文件,引入安全配置模塊

<dependency>

<groupId>cn.mldn<groupId>

<artifactId>microcloud-security<artifactId>

<dependency>

5、【microcloud-provider-member-8001】刪除掉application.yml中與安全有關(guān)的配置項(xiàng)。

security:

Basic:

Enabled:true #啟用springSecurity的安全配置項(xiàng)。

User:

name:mldnjava #認(rèn)證用戶名

password:hello #認(rèn)證密碼

role: #授權(quán)角色

 

由于現(xiàn)在所寫的安全處理類是在程序啟動類的子包之中,應(yīng)該可以自動掃描到。

6訪問地址:http://mldnjava@[email protected]:8001/dept/sessionId

分享到:
標(biāo)簽:SpringCloud
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定