Java實現(xiàn)百萬并發(fā)(整理)
點擊上方藍(lán)色字體,選擇“標(biāo)星公眾號”
優(yōu)質(zhì)文章,第一時間送達(dá)
1 初始架構(gòu)圖

在一般的傳統(tǒng)架構(gòu)中,包括反向代理實現(xiàn)負(fù)載均衡,搭建緩存服務(wù)器實現(xiàn)減少數(shù)據(jù)庫訪問壓力,實現(xiàn)數(shù)據(jù)庫的讀寫分離和搭建主從關(guān)系實現(xiàn)數(shù)據(jù)庫的高可用,通過如上圖的搭建下的項目系統(tǒng),基本實現(xiàn)了處理高并發(fā)的框架,下面來一個一個介紹一下。
2 反向代理
2.1 反向代理概念
反向代理服務(wù)器位于用戶與目標(biāo)服務(wù)器之間,但是對于用戶而言,反向代理服務(wù)器就相當(dāng)于目標(biāo)服務(wù)器,即用戶直接訪問反向代理服務(wù)器就可以獲得目標(biāo)服務(wù)器的資源。同時,用戶不需要知道目標(biāo)服務(wù)器的地址,也無須在用戶端作任何設(shè)定。反向代理服務(wù)器通常可用來作為Web加速,即使用反向代理作為Web服務(wù)器的前置機(jī)來降低網(wǎng)絡(luò)和服務(wù)器的負(fù)載,提高訪問效率。
特點:
1.反向代理服務(wù)器是位于用戶和目標(biāo)服務(wù)器之間的.
2. 用戶以為反向代理服務(wù)器就是真實的服務(wù)器. 用戶不知道真實的服務(wù)器到底是誰.
3. 反向代理服務(wù)器保護(hù)服務(wù)端信息,稱之為服務(wù)器端代理.
代理存在的原因: 用戶由于某種原因無法直接訪問目標(biāo)服務(wù)器,完成指定的功能.

2.2 正向代理
2.2.1 正向代理介紹
正向代理,意思是一個位于客戶端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶端向代理發(fā)送一個請求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端。客戶端才能使用正向代理。
特點:
1.代理服務(wù)器位于用戶與服務(wù)器之間
2.用戶請求時,非常明確目標(biāo)服務(wù)器到底是誰. 服務(wù)器不清楚到底是誰訪問的我.以為是代理服務(wù)器直接發(fā)起的請求.
3.正向代理服務(wù)器保護(hù)了用戶的信息,所以稱之為客戶端代理.

2.2.2 關(guān)于代理總結(jié)
1.反向代理是服務(wù)器端代理. 只要用戶訪問服務(wù)器,其實都是反向代理機(jī)制. 實現(xiàn)業(yè)務(wù)調(diào)用
2.正向代理是客戶端代理.主要用戶上網(wǎng)就就使用正向代理 實現(xiàn)的是網(wǎng)絡(luò)通信頭 網(wǎng)穿工具 夜神模擬器/花生殼
2.3 Nginx
2.3.1 Nginx服務(wù)器介紹
Nginx是一款輕量級的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,在BSD-like 協(xié)議下發(fā)行。其特點是占有內(nèi)存少,并發(fā)能力強(qiáng),事實上nginx的并發(fā)能力在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,中國大陸使用nginx網(wǎng)站用戶有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。
特點:
1.占用內(nèi)存少 2M tomcat啟動 200M左右
2.并發(fā)能力強(qiáng) 5萬/秒 實際2-4萬/秒
2.3.2 Nginx安裝使用
WIN10安裝
1).啟動Nginx nginx啟動會生成2個進(jìn)程項
1.主進(jìn)程 主要的作用是提供反向代理服務(wù)的. 在關(guān)閉主進(jìn)程 內(nèi)存大的
2.守護(hù)進(jìn)程 防止主進(jìn)程意外關(guān)閉的. 先關(guān)閉守護(hù)

2.3.3 Nginx命令
工作目錄說明: 要求在nginx.exe所在的根目錄中執(zhí)行
1.啟動命令
start nginx Linux ./nginx
2.重名命令
nginx -s reload Linux: ./nginx -s reload
3.關(guān)閉命令
nginx -s stop Linux: ./nginx -s stop
2.3.4 Nginx反向代理原理
1.入門案例說明: http://localhost:80

2.配置項
http{
server { #服務(wù)1
listen 80;
server_name localhost;
location / {
#root html;
root D:/jt_images;
index index.html;
}
}
server { #服務(wù)1
listen 80;
server_name xxxxxx; #服務(wù)名稱不能重復(fù)
location / {
#root html;
root D:/jt_images;
index index.html;
}
}
}
2.3.5 編輯hosts文件
作用: 實現(xiàn)本地域名與IP地址的映射
路徑:

2.3.6 修改HOSTS文件


2.4 實現(xiàn)域名代理
2.4.1 需求說明
需求: 要求用戶通過 http://manage.smilefit.shop 訪問localhost:8091的服務(wù)器.
實現(xiàn)方式: 利用反向代理機(jī)制實現(xiàn)
2.4.2 配置nginx
#2.配置后端服務(wù)器 manage.jt.com:80 localhost:8091
server {
listen 80;
server_name manage.smilefit.shop;
location / {
#發(fā)起url請求地址
proxy_pass http://localhost:8091;
}
}
2.5 Nginx實現(xiàn)tomcat集群部署
2.5.1 集群搭建原理

2.5.2 動態(tài)展現(xiàn)端口號

2.6 Nginx負(fù)載均衡
2.6.1 輪詢策略
說明: 根據(jù)配置文件的順序,依次訪問服務(wù)器.

2.6.2 權(quán)重策略
說明: 讓性能更優(yōu)的服務(wù)器處理更多的用戶請求.

2.6.3 IPHASH策略
需求: 需要將用戶與某臺服務(wù)器進(jìn)行綁定.

原理:

缺點:
容易造成負(fù)載不均現(xiàn)象.
如果IP地址與用戶綁定在一起,如果tomcat服務(wù)器宕機(jī),則直接影響用戶.
IPhash實用場景:一般進(jìn)行壓力測試時使用.
2.7 Nginx高級屬性
2.7.1 down屬性
說明:如果服務(wù)器宕機(jī),則可以通過down屬性進(jìn)行標(biāo)識,被標(biāo)識的服務(wù)器則不會再為用戶提供支持.

2.7.2 backup 屬性
備用機(jī)的設(shè)定. 一般條件下備用機(jī)不干活的,但是當(dāng)主機(jī)遇忙時,或者主機(jī)宕機(jī)時,才會訪問備用機(jī).

2.7.3 tomcat服務(wù)器高可用
說明:如果人為的添加down屬性 效率不高, 能否自動的檢測服務(wù)器是否宕機(jī),如果宕機(jī),能否自動的標(biāo)識為down.

注冊中心實現(xiàn)原理:
1.當(dāng)服務(wù)器啟動時,會將服務(wù)器的狀態(tài)(服務(wù)名稱/IP/端口)一起寫入注冊中心
2.注冊中心接受到服務(wù)器信息時,會動態(tài)的維護(hù)服務(wù)列表數(shù)據(jù)
3/4.當(dāng)客戶端(消費者)啟動時,首先會鏈接注冊中心,獲取所有的服務(wù)列表數(shù)據(jù),并且將服務(wù)列表數(shù)據(jù)保存到本地
5.當(dāng)消費者執(zhí)行業(yè)務(wù)時,如果有多個服務(wù)的生產(chǎn)者時,采用負(fù)載均衡的思想挑選其中的一個服務(wù)進(jìn)行訪問(RPC).
6.當(dāng)服務(wù)器發(fā)生宕機(jī)時,由于注冊中心有心跳檢測機(jī)制,所有會動態(tài)的維護(hù)服務(wù)列表數(shù)據(jù).會全網(wǎng)廣播通知所有的客戶端(消費者)更新服務(wù)列表數(shù)據(jù). 在更新服務(wù)列表時,數(shù)據(jù)的同步會陷入阻塞的狀態(tài).
關(guān)于微服務(wù)思想負(fù)載均衡
集中式負(fù)載均衡
說明:所有的請求都必須由某個服務(wù)器進(jìn)行統(tǒng)一的管理
案例:Nginx是集中式的負(fù)載均衡
4 Dubbo框架介紹
提供了六大核心能力:面向接口代理的高性能RPC調(diào)用,智能容錯和負(fù)載均衡,服務(wù)自動注冊和發(fā)現(xiàn),高度可擴(kuò)展能力,運(yùn)行期流量調(diào)度,可視化的服務(wù)治理與運(yùn)維。
4.2 Dubbo 入門案例
4.2.1 導(dǎo)入jar包
<!--引入dubbo配置 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
4.2.1 導(dǎo)入項目

4.3 關(guān)于入門案例說明
4.3.1 定義接口
1)項目結(jié)構(gòu)

2)定義接口

4.3.2 服務(wù)生產(chǎn)者

4.3.3 服務(wù)消費者
4.3.3.1 編輯消費者的接口文件

4.3.3.2 編輯服務(wù)消費者的yml文件

單點登錄實現(xiàn)步驟:
1.用戶通過用戶名和密碼訪問web服務(wù)器
2.web服務(wù)器通過sso校驗用戶名和密碼是否正確。
3.如果用戶名和密碼正確,則將數(shù)據(jù)保存到redis仲,TICKET密鑰:USERJSON,之后將密鑰返回給用戶即可
4.web服務(wù)器將密鑰信息保存到用戶的Cookie中 并且設(shè)定cookie的共享/有效時間
————————————————
版權(quán)聲明:本文為CSDN博主「Ch-Ang」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:
https://blog.csdn.net/weixin_42770603/article/details/111152366
鋒哥最新SpringCloud分布式電商秒殺課程發(fā)布
??????
??長按上方微信二維碼 2 秒
感謝點贊支持下哈 
