如何提升java服務器並發性能


參考鏈接:https://blog.csdn.net/yilijun246437/article/details/103044421

如有侵權請告知刪除

 

給大家分享一下提高java服務器並發性能的常用架構策略。

一.針對網絡層建議使用keepalive+nginx

1、負載均衡解釋

負載均衡 建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。
負載均衡,英文名稱為Load Balance,其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。

2、常用的負載均衡種類

(1)、HTTP重定向
HTTP 重定向可以將 HTTP 請求進行轉移,在 Web 開發中我們經常會用它來完成自動跳轉,比如用戶登錄成功后跳轉到相應的管理頁面。 這種重定向完全由HTTP 定義,並且由HTTP 代理和Web 服務器共同實現。很簡單,當HTTP 代理(比如瀏覽器)向Web服務器請求某個URL后,Web 服務器可以通過HTTP 響應頭信息中的Location 標記來返回一個新的URL,這意味着HTTP代理需要繼續請求這個新的URL ,這便完成了自動跳轉。當然,如果你自己寫了一個 HTTP 代理,也可以不支持重定向,也就是對於Web 服務器返回的Location 標記視而不見,雖然這可能不符合HTTP 標准,但這完全取決於你的應用需要。 也正是因為HTTP 重定向具備了請求轉移和自動跳轉的本領,所以除了滿足應用程序需要的各種自動跳轉之外,它還可以用於實現負載均衡,以達到Web 擴展的目的。

(2)、DNS負載均衡
DNS負責提供域名解析服務,當我們訪問某個站點時,實際上首先需要通過該站點域名的DNS服務器來獲取域名指向的IP 地址,在這一過程中,DNS服務器完成了域名到IP 地址的映射,同樣,這種映射也可以是一對多的,這時候,DNS 服務器便充當了負載均衡調度器(也稱均衡器),它就像前面提到的重定向轉移策略一樣,將用戶的請求分散到多台服務器上,但是它的實現機制完全不同。

(3)、反向代理負載均衡
反向代理服務器的核心工作便是轉發 HTTP 請求,因此它工作在 HTTP 層面,也就是 TCP 七層結構中的應用層(第七層),所以基於反向代理的負載均衡也稱為七層負載均衡,實現它並不困難,目前幾乎所有主流的 Web 服務器都熱衷於支持基於反向代理的負載均衡。

(4)、IP負載均衡
事實上,在數據鏈路層(第二層)、網絡層(第三層)以及傳輸層(四層)都可以實現不同機制的負載均衡,但有所不同的是,這些負載均衡調度器的工作必須由Linux 內核來完成,因為我們希望網絡數據包在從內核緩沖區進入進程用戶地址空間之前,盡早地被轉發到其他實際服務器上,沒錯,Linux 內核當然可以辦得到,位於內核的Netfilter和IPVS可以解決問題,而用戶空間的應用程序對此卻束手無策。 另一方面,也正是因為可以將調度器工作在應用層以下,這些負載均衡系統可以支持更多的網絡服務協議,比如FTP 、SMTP 、DNS ,以及流媒體和VoIP 等應用。

二.針對服務器架構層,目前分布式服務架構比較流行,像dubbo,springclould等,這里只介紹dubbo
1. Dubbo是什么?
Dubbo是一個分布式服務框架,致力於提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。簡單的說,dubbo就是個服務框架,如果沒有分布式的需求,其實是不需要用的,只有在分布式的時候,才有dubbo這樣的分布式服務框架的需求,並且本質上是個服務調用的東東,說白了就是個遠程服務調用的分布式框架(告別Web Service模式中的WSdl,以服務者與消費者的方式在dubbo上注冊)
2. 其核心部分包含:
(1). 遠程通訊: 提供對多種基於長連接的NIO框架抽象封裝,包括多種線程模型,序列化,以及“請求-響應”模式的信息交換方式。
(2). 集群容錯: 提供基於接口方法的透明遠程過程調用,包括多協議支持,以及軟負載均衡,失敗容錯,地址路由,動態配置等集群支持。
(3). 自動發現: 基於注冊中心目錄服務,使服務消費方能動態的查找服務提供方,使地址透明,使服務提供方可以平滑增加或減少機器。

3. Dubbo能做什么?
(1).透明化的遠程方法調用,就像調用本地方法一樣調用遠程方法,只需簡單配置,沒有任何API侵入。
(2).軟負載均衡及容錯機制,可在內網替代F5等硬件負載均衡器,降低成本,減少單點。
(3). 服務自動注冊與發現,不再需要寫死服務提供方地址,注冊中心基於接口名查詢服務提供者的IP地址,並且能夠平滑添加或刪除服務提供者。

Dubbo采用全Spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring加載Dubbo的配置即可,Dubbo基於Spring的Schema擴展進行加載。

節點角色說明:
Provider: 暴露服務的服務提供方。
Consumer: 調用遠程服務的服務消費方。
Registry: 服務注冊與發現的注冊中心。
Monitor: 統計服務的調用次調和調用時間的監控中心。
Container: 服務運行容器。

三.針對消息通訊,可以采用像activemq這類消息中間件,減少並發對性能的損耗
1.ActiveMQ是Apache推出的一款開源的,完全支持JMS1.1和J2EE1.4規范的JMS Provider實現的消息中間件(Message Oriented Middleware,MOM)

2.ActiveMQ能干什么
   最主要的功能是:實現JMS Provider,用來幫助實現高可用、高性能、可伸縮、易用和安全的企業級面向消息服務的系統

3. ActiveMQ的特點
   完全支持JMS1.1和J2EE 1.4規范(持久化、XA消息、事務)
   支持多種傳送協議: in-VM、TCP、SSL、NIO、UDP、JGroups、JXTA
   可插拔的體系結構,可以靈活定制,如:消息存儲方式、安全管理等
   很容易和Application Server集成使用
   多種語言和協議編寫客戶端。如:Java、C、C++、PHP
   可以很容易的和Spring結合使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM