http://www.lxweimin.com/p/8e510857e23f
一、為什么要集群?
A:并發處理能力有限(一般單臺服務器處理的并發量為250左右,超過250,可能會出現數據丟失,鏈接不穩定的情況)。因為單服務器的性能有限制。所以單臺Tomcat的最大連接數有限制,
B:容錯率低,一旦服務器故障,整個服務就無法訪問了。
eBay于 1999年6月停機22小時的事故,中斷了約230萬的拍賣,使eBay的股票下降了9.2個百分點。
C:單臺服務器計算能力低,無法完成復雜的海量數據計算。
二、什么是集群
集群是是指將多臺服務器集中在一起,每臺服務器都實現相同的業務,做相同的事情。
但是每臺服務器并不是缺一不可,存在的作用主要是緩解并發壓力和單點故障轉移問題。
可以利用一些廉價的符合工業標準的硬件構造高性能的系統。
實現:高擴展、高性能、低成本、高可用!
2.1伸縮性(Scalability)
在一些大的系統中,預測最終用戶的數量和行為是非常困難的,伸縮性是指系統適應不斷增長的用戶數的能力。提高這種并發會話能力的一種最直觀的方式就增加資源(CPU,內存,硬盤等),
集群是解決這個問題的另一種方式,它允許一組服務器組在一起,像單個服務器一樣分擔處理一個繁重的任務,我們只需要將新的服務器加入集群中即可,對于客戶來看,服務無論從連續性還是性能上都幾乎沒有變化,好像系統在不知不覺中完成了升級
2.2高可用性(High availability)
單一服務器的解決方案并不是一個健壯方式,因為容易出現單點失效。
像銀行、賬單處理這樣一些關鍵的應用程序是不能容忍哪怕是幾分鐘的死機。它們需要這樣一些服務在任何時間都可以訪問并在可預期的合理的時間周期內有響應。高可用性集群的出現是為了使集群的整體服務盡可能可用,以便考慮計算硬件和軟件的易錯性。
如果高可用性集群中的主節點發生了故障,那么這段時間內將由次節點代替它。次節點通常是主節點的鏡像,所以當它代替主節點時,它可以完全接管其身份,并且因此使系統環境對于用戶是一致的。
2.3負載均衡(Load balancing)
負載均衡集群為企業需求提供了更實用的系統。如名稱所暗示的,
該系統使負載可以在計算機集群中盡可能平均地分攤處理。
該負載可能是需要均衡的應用程序處理負載或網絡流量負載。這樣的系統非常適合于運行同一組應用程序的大量用戶。每個節點都可以處理一部分負載,并且可以在節點之間動態分配負載,以實現平衡。
2.4高性能 (High Performance )
通常,第一種涉及為集群開發并行編程應用程序,以解決復雜的科學問題。這是并行計算的基礎,盡管它不使用專門的并行超級計算機,這種超級計算機內部由十至上萬個獨立處理器組成。但它卻使用商業系統,如通過高速連接來鏈接的一組單處理器或雙處理器 PC,并且在公共消息傳遞層上進行通信以運行并行應用程序。因此,您會常常聽說又有一種便宜的 Linux 超級計算機問世了。但它實際是一個計算機集群,其處理能力與真的超級計算機相等
三、為什么要進行分布式
傳統的項目中,我們將各個模塊放在一個系統中,系統過于龐大,開發維護困難,各個功能模塊之間的耦合度增高,無法針對單個模塊進行優化,也無法進行水平擴展。
四、什么是分布式
分布式是指將多臺服務器集中在一起,
每臺服務器都實現總體中的不同業務,做不同的事情。
并且每臺服務器都缺一不可,如果某臺服務器故障,則網站部分功能缺失,或導致整體無法運行。
存在的主要作用是大幅度的提高效率,緩解服務器的訪問和存儲壓力。
注意:該圖中最大特點是:每個Web服務器(Tomcat)程序都負責一個網站中不同的功能,缺一不可。如果某臺服務器故障,則對應的網站功能缺失,也可以導致其依賴功能甚至全部功能都不能夠使用。
五、分布式和集群的關系。
在開發中我們可以將分布式和集群分開嗎?
針對這個問題,我們可以根據分布式的介紹看出,其主要的功能是用了將我們的系統模塊化,將系統進行解耦的,方便我們的維護和開發的,但是其并不能解決我們的并發問題,也無法保證我們的系統在服務器宕機后的正常運轉。
而集群呢?其恰好彌補了分布式的缺陷,
集群,就是多個服務器處理相同的業務,這在一方面可以解決或者說改善我們系統的并發問題,一方面可以解決我們服務器如果出現一定數量的宕機后,系統仍然可以正常運轉。
因此我說,分布式和集群式一堆好基友,誰也離不開誰。。。。
服務器最低配置:
pinyougou項目業務就需要30臺左右的服務器;
工具服務器還要加 zookeeper(3臺) redis(6臺) solr(6臺)
nginx(2臺) activemq(3臺) cas(2臺)
mysql(10臺+)
fastdfs(2臺)
一個pinyougou項目要65臺以上。
測試并發量2000-3000
(接口)單元測試,集成測試
測試服務器:保證測試環境和線上環境是一致的。
git+maven+docker+jekins(持續集成測試環境)
svn+maven+hudson+jekins(持續集成測試環境)
c)責任描述:你干了什么?
i.后臺系統:運營商系統維護
1.商品管理
a)品牌管理
b)規格屬性管理
c)模版維護
d)商品類別維護
e)貨品—商品維護
2,表之間關系
3,權限—spring security實現安全認證
4,活動管理—秒殺活動,團購管理
5,積分管理
ii.報表
1.(今日熱銷商品,周熱銷商品,月銷售情況)
2.今日用戶活躍數
3.周用戶活躍數
4.月用戶活躍數
5.今日銷售金額
6.周銷售金額
7.月銷售金額
8.并發數統計
廣告管理:
1,表設計
2,廣告維護
3,廣告緩存—spring data redis
iii.Poi
iv.后臺系統:商家系統維護
1.商品入駐申請
2.商品審核
3.商家商品維護
4.商品審核上架
搜索: spring data solr
1,主關鍵詞搜索
2,分類搜索
3,屬性搜索
4,價格搜索
5,品牌搜索
6,排序搜索
7,面包屑導航-----數據雙向綁定實現面包屑導航
8,同步索引庫
activeMQ同步索引庫
匹配生成索引庫數據
MQ同步索引庫
消息持久化
消息重發機制
連接池
頁面靜態化技術: 提高訪問速度,提高并發能力
1,freemarker實現頁面靜態化
2,把生成頁面靜態化html直接上傳linux,實現動靜分離
3,linux靜態頁面使用nginx訪問,nginx作為http服務器
4,mq同步靜態頁面(業務流程)
購物車系統:
1,未登錄
2,登錄
訂單系統:
1,提交訂單—把購物車數據保存訂單表
2,生成訂單號
3,生成總金額
支付系統:
微信支付
技術:
1,dubbo+zookeeper實現面向服務分布式架構
2,spring security 安全認證框架
3,spring data redis ---- redis服務器操作
4,spring data solr ------ solr
5,nginx
6,freemarker
7,activeMQ
8,cas 單點登錄框架
9,zookeeper
10,springboot
………