❶ java怎樣架構大項目
Java構架方法
增加伺服器
大部分的訪問都在小部分的數據(緩存)上
增加緩存(具有哪種回業務特點的答數據適合使用緩存)
遠程單機緩存
遠程分布式緩存 (集群)
分布式緩存在擴容時會遇到什麼問題
分布式緩存的演算法有哪幾種,優缺點
遠程緩存
本地緩存
負載均衡調度伺服器(橫向擴展伺服器,解決伺服器處理能力瓶頸)
調度策略都有哪些,優缺點,場景(輪詢,權重,地址散列,加權…..)
❷ Java的技術架構有哪些
服務分離
隨著系統的的上線,用戶量也會逐步上升,很明顯一台伺服器已經滿足不了系統的負載,這時候,我們就要在伺服器還沒有超載的時候,提前做好准備。
由於我們是單體架構,優化架構在短時間內是不現實的,增加機器是一個不錯的選擇。這時候,我們可能要把應用和資料庫服務單獨部署,如果有條件也可以把文件伺服器單獨部署。
反向代理
為了提升服務處理能力,我們在Tomcat容器前加一個代理伺服器,我一般使用Nginx,當然你如果更熟悉apache也未嘗不可。
用戶的請求發送給反向代理,然後反向代理把請求轉發到後端的伺服器。
嚴格意義上來說,Nginx是屬於web伺服器,一般處理靜態html、css、js請求,而Tomcat屬於web容器,專門處理JSP請求,當然Tomcat也是支持html的,只是效果沒Nginx好而已。
反向代理的優勢,如下:
隱藏真實後端服務
負載均衡集群
高可用集群
緩存靜態內容實現動靜分離
安全限流
靜態文件壓縮
解決多個服務跨域問題
合並靜態請求(HTTP/2.0後已經被弱化)
防火牆
SSL以及http2
動靜分離
基於以上Nginx反向代理,我們還可以實現動靜分離,靜態請求如html、css、js等請求交給Nginx處理,動態請求分發給後端Tomcat處理。
Nginx 升級到1.9.5+可以開啟HTTP/2.0時代,加速網站訪問。
當然,如果公司不差錢,CDN也是一個不錯的選擇。
服務拆分
在這分布式微服務已經普遍流行的年代,其實我們沒必要踩過多的坑,就很容易進行拆分。市面上已經有相對比較成熟的技術,比如阿里開源的Dubbo(官方明確表示已經開始維護了),spring家族的spring cloud,當然具體如何去實施,無論是技術還是業務方面都要有很好的把控。
Dubbo
SpringCloud
服務發現——Netflix Eureka
客服端負載均衡——Netflix Ribbon
斷路器——Netflix Hystrix
服務網關——Netflix Zuul
分布式配置——Spring Cloud Config
微服務與輕量級通信
同步通信和非同步通信
遠程調用RPC
REST
消息隊列
持續集成部署
服務拆分以後,隨著而來的就是持續集成部署,你可能會用到以下工具。
Docker、Jenkins、Git、Maven
圖片源於網路,基本拓撲結構如下所示:
整個持續集成平台架構演進到如下圖所示:
服務集群
Linux集群主要分成三大類( 高可用集群, 負載均衡集群,科學計算集群)。其實,我們最常見的也是生產中最常接觸到的就是負載均衡集群。
負載均衡實現
DNS負載均衡,一般域名注冊商的dns伺服器不支持,但博主用的阿里雲解析已經支持
四層負載均衡(F5、LVS),工作在TCP協議下
七層負載均衡(Nginx、haproxy),工作在Http協議下
分布式session
大家都知道,服務一般分為有狀態和無狀態,而分布式sessoion就是針對有狀態的服務。
分布式Session的幾種實現方式
基於資料庫的Session共享
基於resin/tomcat web容器本身的session復制機制
基於oscache/Redis/memcached 進行 session 共享。
基於cookie 進行session共享
分布式Session的幾種管理方式
Session Replication 方式管理 (即session復制)
簡介:將一台機器上的Session數據廣播復制到集群中其餘機器上
使用場景:機器較少,網路流量較小
優點:實現簡單、配置較少、當網路中有機器Down掉時不影響用戶訪問
缺點:廣播式復制到其餘機器有一定廷時,帶來一定網路開銷
Session Sticky 方式管理
簡介:即粘性Session、當用戶訪問集群中某台機器後,強制指定後續所有請求均落到此機器上
使用場景:機器數適中、對穩定性要求不是非常苛刻
優點:實現簡單、配置方便、沒有額外網路開銷
缺點:網路中有機器Down掉時、用戶Session會丟失、容易造成單點故障
緩存集中式管理
簡介:將Session存入分布式緩存集群中的某台機器上,當用戶訪問不同節點時先從緩存中拿Session信息
使用場景:集群中機器數多、網路環境復雜
優點:可靠性好
缺點:實現復雜、穩定性依賴於緩存的穩定性、Session信息放入緩存時要有合理的策略寫入
❸ 大公司網站java網站都一般採用什麼架構
系統大了,架構就和java無關,一般是多語言開發的。
❹ 大公司網站java網站都一般採用什麼架構
其實,java網站架構倒不分什麼大公司小公司,
主要看你的需求是怎樣的,以及運營維護方式
其實,java的架構還是比較固定的,主要就分為下面這五種,我來為大家簡單介譽者紹一下。
1、web框架
rose,基於springmvc,採用"約定優先於配置"的思想,編寫起來還是挺快的。
2、資料庫
jade,實現了資料庫讀寫分離,分庫分表等,一句簡單的sql就可以實現對資料庫的需求。
3、rpc架構
第一代rpc框架網路層採用netty,序列化層是json,基於http自定義協議。第二代框架就是完全基於thrift,thrift解決了上面辯弊的語言兼容性。
4、數據平台和處理
沒在這個組呆過,只是了解一些。基本和各大公司的大數據處理一樣,離線計算hive/pig,流式計算storm/Presto,內存計算spark,以此來滿足各個業務對數據的不同需求。
5、消息中間件
我們使用過kafka,主要用於log統計和一些不太重要的非同步處理。kafka的優點就是吞吐量很高,但是不能保證消息可靠性消費,這些可以在消費端自己做一些定製化處理。
網路發展速度之快超出想像,網站也像是水面上的船,也趁勢飛速發展,相信之後會有更好地工具、模式,發攜虛族展前景也是不可限量的。
❺ 採用java開發大型網站或B/S架構的企業管理軟體用什麼框架合適各種框架的優缺點是什麼
用Struts2 spring hibernate
這是比較常用的開源框架
資料庫的話 可以用mysql 或者 oracle
服務可以用weblogic整合
❻ 前端的全棧模式是什麼架構,node.js做中間端,JAVA或者其他語言做後端,該怎麼理解
前端的全棧模式其數拆實就是我們現在說的「大前端」概念。
老一輩的程序員應該都有印象,以前我們說的前端更多就是靜態頁面的布局和頁面交互的實現,用到的技術主要就是:DIV+CSS、JavaScript、Ajax。
那時候的「前後端分離」也不是完全的分薯伍棗離!前端做好頁面後是要交給後端開發人員進行整合的,更多的是種「模板」思想,前端做的只是「模板」,而模板里的數據填充還是要靠後端來處理。
而當下的「前後端分離」較之前要徹底一些!現在的前端不是傳統的前端了,也涉及以前後端的一些技術,比如我們也可以把PHP劃分到前端領域,用PHP來實現數據的渲染。
對於大型網站架構橘升,現在一般是這樣的:
PHP/NodeJS渲染頁面>Vue調用數據>JavaAPI>資料庫
這種架構模式的優點主要有以下:
實現了前後端的完全分離,前端各類終端(Web、H5、APP、TV等)的頁面風格展示方式不同,但不影響後端API的統一化;
術有專攻,便於控制;
並行開發,提升了開發效率。
❼ 現代Java Web開發架構分析
在本文中 我將集中討論現代的Java開發框架 分析它們的特徵和各自的兄配使用優點 另外 我還想比較目前流行的生產質量框架 例如Struts Spring和Hibernate 並詳細討論其基本相似性及有關基本概念
我將簡短分析被用於支持這些框架的企業開發環境或工具箱 例如Borland JBuilder Eclipse以及BEA Workbench 請記住 市場上有許多有關這些開發框架的圖書;然而 在任何一篇文章中 要對它們進行深入描述是不可能的 不過 我將盡力討論最廣泛地使用的概念
共同點
幾乎所有現代的網路開發框架都遵循了模型 視圖 控制(MVC)設計模式 商業邏輯和描述被分開 由一個邏輯流控制器來協調來自客戶端的請求和伺服器上將採取的行動 這條途徑成為了網路開發的事實上的標准 每個框架的羨液指內在的機制當然是不同的 但是開發者們使用來設計和實現他們的Web應用軟體的API是很類似的 差別還存在於每個框架提供的擴展方面 例如標簽庫 JavaServer Faces或JavaBean包裝器等
所有的框架使用不同的技術來協調在Web應用程序之內的導航 例如XML配製文件 java屬性文件或定製屬性 所有的框架在控制器模塊實現的方法方面也存在明顯的不同 例如 EJB可能實例化在每個請求中需要的類或使用Java反射動態地調用一個適當的行動(Action)類 另外 不同框架在各自引入的概念上也有所不同 例如 一個框架可能定義用戶請求和反應(以及錯誤)場所 而另外一個框架可能僅僅定義一個完整的流 從一個請求到多個響答和隨後的再請求……
各種Java框架在它們組織數據流的方法方面是很類似的 在請求發出後 在應用程序伺服器上產生一些行動;而作為響應 一些可能包含對象集的數據總是被發送到JSP層 然後 從那些對象 可能是有setter和getter方法的簡單類 javabeans 值對象 或者一些集合對象 中提取數據 現代的Java框架還想方設法簡化開發者的開發任務 如通過使用簡易的API 資料庫連接池 甚至資料庫調用包等提供自動化的追蹤方式來實現 一些框架或者能夠鉤進(hooked into)另外的J EE技術中 例如JMS(Java消息服務)或JMX 或把這些技術集成到一起 伺服器數據持續性和日誌也有可能成為框架的一部分
企業開發環境
一些框架在Web開發者社區和企業發展領域變得相當流行 隨著這些框架的日漸成熟並開始發行穩定的版本 商業的IDE(集成發展環境)開始為這些框架提供支持並把他們納入到自己的產品中 一些IDE甚至基於框架的概念開發出整個的產品 例如 BEA WebLogic Workshop就是基於Struts框架建立起來的
Borland Jbuilder為Struts提供了內建的支持 也支持JSF和JSTL
Eclipse平台已成為一個很流行的開發工具 部分因為它是基於插件的 部分因為它對於Web框架的支持埋亂 現在 出現了眾多的Eclipse插件 甚至完整的基於Eclipse的IDE 許多插件被設計適合於Struts框架開發 例如MyEclipse()或M
大多數IDE都具有圖形化的流程和可視化對象(類代理) 例如 下面是一個JBuilder的行動(Action)設計器 用於規劃Web應用程序的頁面順序
WebLogic Workshop引入Java頁面流程技術 它擴展了Struts框架而提供了一個簡化的開發模型並增加了另外一些特性 Workshop使用頁面流(Page Flows) 實現輕易地把用戶介面與導航和商業邏輯分離開來 頁面流由JSP頁組成 這些頁麵包含用戶介面元素和一個控制器文件(JPF) 它包含由用戶提供的數據將怎樣被處理的指令以及下一步什麼頁面將被返回到用戶的信息 頁面流動提供給開發者一個可視化的Web應用程序總體輪廓 它讓開發者能夠看到直觀地分析不同的JSP頁彼此相關聯 並實現Web應用程序整體結構的快速建立
MyEclipse提供類似的特徵 並帶有更多吸引人的代價標簽
Apache Struts框架
Struts框架是一開源產品 基於模型 視圖 控制器(MVC)設計範例來開發Web應用軟體 它使用並且擴展了Java Servlet API 最初由Craig McClanahan創建 在 年 月 它被捐贈到Apache Foundation Struts框架展示了一個強有力的定製標簽庫 平鋪顯示 表單檢驗和I N(國際化) 另外 Struts支持許多描述層 包括JSP XML/XSLT JavaServerFaces(JSF)和Velocity;還支持一些模型層 包括JavaBeans和EJB
Spring框架
Spring框架是一個分層的Java/J EE應用程序框架 基於Expert One on One J EE設計和發行的代碼 Spring框架提供一種簡單的開發技術 用於自動化處理工程中大量的屬性文件和助理類
Spring框架包括的主要特色有:
強有力的基於JavaBeans的配置管理 使用Inversion of Control(IoC)原則 一個核心bean工廠 可用在任何環境 從applets到J EE容器程序 通用的抽象層適合於資料庫事務管理 允許可插入的事務管理器 並且不需要處理低層次的問題就可容易地劃分各事務的界限 一個很有意義的異常處理的JDBC抽象層 與Hibernate集成到一起 DAO實現支持以及事務策略
Hibernate框架
Hibernate是一適合於Java語言的對象 關系映射(ORM)解決方案 它也是開源軟體 類似Struts 並且在LGPL保護下發布 Hibernate被一群來自世界各地的Java軟體開發者所共同開發 它提供一個易用的框架來實現把一個面向對象的域模型映射到一傳統的關系資料庫 它不僅負責從Java類到資料庫表格(以及來自Java數據類型的SQL數據類型)的映射 而且還提供數據查詢和檢索能力 並能大大減少花在SQL和JDBC手工數據處理上的開發時間
Hibernate的目標是減輕開發者的與大量普通的數據持續性相聯系的編程任務 Hibernate還能夠適應開發進程 無論它是剛開始設計還是來自一現成的資料庫 Hibernate可以自動生成SQL 使開發者擺脫了手工處理結果集和進行對象轉化的繁瑣任務 並能使應用程序移植到所有的SQL資料庫 它還能提供透明的持續性 對持續性類的唯一的要求的是實現一個無參數的構造器
這個框架典型地使用在JavaSwing應用軟體 基於Servlet的Java應用軟體和使用EJBsession beans的J EE應用軟體中
結論
lishixin/Article/program/Java/hx/201311/26488
❽ 大公司網站java網站都一般採用什麼架構
大型互聯網公司的網站一般都採用自研激察或自己內部薯衫定製的架構,不會完全照搬開源框架。
對於大型互聯網公司來說,沒有萬能的架構,他們的技術選型和框架設計是完全根據實際業務來決定的,因此些許的業務差異就會造成兩明手茄個看起來相似的公司採用了完全不同的架構設計,比如天貓和京東,美團和餓了么,其架構細節千差萬別。
❾ 網站的基本架構是什麼
網站架構按照製作步驟分為硬架構和軟架構。
一、硬架構
1、機房:在選擇機房的時候,根據網站用戶的地域分布,可以選擇網通、電信等單機房或雙機房。
2、帶寬:預估網站每天的訪問量,根據訪問量選擇合適的帶寬,計算帶寬大小主要涉及峰值流量和頁面大小兩個指標。
3、伺服器:選擇需要的伺服器,如圖片伺服器,頁面伺服器,資料庫伺服器,應用伺服器,日誌伺服器,對於訪問量大點的網站而言,分離單獨的圖片伺服器和頁面伺服器相當必要。
二、軟架構
1、網站的框架:現在的PHP框架有很多選擇,比如:CakePHP,Symfony,Zend Framework,根據創作團隊對各個框架熟悉程度選擇。
2、邏輯的分層
1)表現層:所有和表現相關的邏輯都應該被納入表現層的范疇。
2)應用層:主要作用是定義用戶可以做什麼,並把操作結果反饋給表現層。
3)領域層:包含領域邏輯的層,就是告訴用戶具體的操作流程的。
4)持久層:即資料庫,保存領域模型保存到資料庫,包含網站的架構和邏輯關系等。
(9)java大型網站架構擴展閱讀
網站的分類
1、根據網站所用編程語言分類:例如asp網站、php網站、jsp網站、Asp. net網站等;
2、根據網站的用途分類:例如門戶網站(綜合網站)、行業網站、娛樂網站等;
3、根據網站的功能分類:例如單一網站(企業網站)、多功能網站(網路商城)等等。
4、根據網站的持有者分類:例如個人網站、商業網站、政府網站、教育網站等。
5、根據網站的商業目的分類:營利型網站(行業網站、論壇)、非營利性型網站(企業網站、政府網站、教育網站)。
❿ 要成為一個Java架構師要怎麼做
架構師,我想很多人都知道,其實該職位頭銜在最早的IT領域是沒有的,它是近些年來由互聯網的發展所引發的需求,因為現階段的數據量及高並發的活躍好動,引起了不少傳統的技術人員的力不從心,企業愈發關注到了系統架構的重要性,所以不同行業開始招募架構技術人員,架構師就誕生了。
架構設計的條件
以下三個條件不適合做架構設計
對架構不感興趣,但又迫於需求;
入IT行業,年限小於4年的;
主觀能動性弱,又安於現狀的;
架構設計的優勢
更好的梳理業務的結構體系;
更好的拓展、維護及性能優化;
更好的適應企業業務靈活的推進;
更好的適應大數據的沖洗和應對;
更好的穩定性、低成本及快速迭代;
架構設計時候需要注意的地方
架構設計需要注意的地方,不是怎麼把架構搭建起來,而是必須根據業務需求,嚴格分析,實現該需求需要什麼技術會更好及更長遠發展的考慮;
另外,構建好的架構陸察哪雖然可以運行,但是性能需要跟起來,否則架構設計會適得其反,增加不必要的工作量,那麼下面就詳細介紹下架構設計的策略。
平台的需求
客戶需求
在線購物、在線支付或貨到付款;
購買商品後,客戶可以與客服溝通;
購買商品過程,物流的管理及跟蹤;
收取到商品後,商品、物流評價打分;
客戶的需求為最高,也代表了企業的核心需求,當然,企業需求還包括其它很多非功能性需求,具體請查看需求梳理部分。
平台的業務架構
根據業務的需求進行子系統模塊劃分,可以劃分為商品子系統、購物子系統、支付子系統、物流子系統、客服子系統、評論子系統;而非核心需求可拆分出客服子系統、評論子系統及介面子系統。另外,根據各個子系統的核心等級,可拆分出核心子系統和非核心子沒隱系統,前者包括商品子系統、購物子系統、支付子系統及物流子系統;後者,則包括評論子系統、客服子系統及介面子系統。需要注意的是一般大型電商平台的物流系統是單獨分離出來的系統(入庫、出庫、庫存管理、配送管理及貨品管理),而這里劃分為子系統的主要目的是為演示核心架構,本架構中物流子系統一般作為對接和管理獨立子系統的對接模塊哦。
1、業務拆分目早碼的
為了解決各個模塊子系統間的耦合、維護及拓展性;
方便單獨部署子系統,避免集中部署導致一個出問題,全部不能用;
分配專門的團隊,負責具體的子系統,最大化工作效率安排;
應對大數據,高壓力時,保護核心子系統正常使用;
2、業務的架構圖
在上面的業務架構圖中,將核心和非核心業務進行拆分,同時每個系統都要獨立部署實現,做到大數據量壓下,各個系統獨立運作,提高可用性,必要時可以暫停掉非核心系統的資源開銷,保證核心業務正常為用戶服務。
平台的技術架構
在上面業務架構圖基礎上,我們需要一個技術架構的演變過程,一切只為滿足用戶的體驗和支撐為前提,所以技術架構的搭建不是一蹴而就的,而是隨著業務的不斷衍變,系統的架構會逐漸完善更新,以實現應對業務數據量的沖擊。
1、基本的架構設計
記得很早的時候,很多中小企業所採用的架構設計十分簡單,基本使用一台伺服器來滿足一切需求部署,比如:一台伺服器同時用作應用部署、資料庫存儲以及圖片存儲等,不料的是待用戶數據達到50萬以上,系統出現很多性能問題,盡管對資料庫和程序做個各種性能優化,結果仍無明顯改善,架構如下:
後來,IT程序猿發現圖片的讀寫嚴重影響了系統性能,並將圖片單獨存放在獨立伺服器中,並且在架構中引入了Cache中間件,比如:Memcache,這種做法是可取的,而且比原來性能提高了1-2個性能級別,架構設計如下:
2、初級的架構設計
前幾年,一般的電商網站的做法是選用三台伺服器,一台部署應用,一台部署資料庫,一台部署NFS文件系統,做到將各個規模龐大並耗用性能的部分剝離到不同伺服器設備,再配備必要的緩存中間件,基本可以滿足近1000萬的數據量,具體的架構圖如下:
但是,目前主流使用的網站架構已經不同,大多採用集群的方式來實現負載均衡和高可用性,架構可以是下面的樣子:
注意:
如果涉及到多台網站伺服器的話,就會存在Session如何同步的問題,一般也是最為常用的做法,就是使用Cache中間件來存儲和管理Session信息。
3、優化的架構設計
這里為解決高並發,高可用的大型電商網站的架構設計方案,主要採用了分布式、集群、負載均衡、反向代理、消息隊列及多級緩存技術。該架構設計方案,是現今比較流程的大型電商網站採用的架構模式,比如:淘寶、京東等,也許會有細微不同的地方,但大同小異哦!具體的架構圖方案如下:
平台架構的總結
這里主要總結的是優化架構,架構按層次結構羅列組織,共分為四層,層次分工明確,高拓展,低耦合,負載均衡、集群、分布式及緩存等技術的使用,架構如下:
好了,電商平台的架構設計就介紹到這里,本篇主要是介紹架構設計的思路及應用的核心技術,供在架構設計的同學參考借鑒哦!有想了解更多的可以關注我