前台服務和后台服務需要為用戶提供服務,兩者都要Service為其提供服務。Service在Zookeeper中注冊服務,cotroller和portal在需要服務時直接在zookeeper 尋找服務。Dao層則負責服務的具體實現.
- Dao 層做數據持久層的工作,負責與數據庫進行聯絡的任務都在Dao層。
- Service 負責業務模塊的邏輯應用設計。
- Controller 層負責具體的業務模塊流程控制,調用Service 層的接口來實現控制業務流程。
使用doubbo把項目拆分后:
- Controller作為一個項目的消費者。
- Service和Dao作為服務的提供者。
- Zookeeper作為doubbo服務的注冊中心,可以做到集群管理數據。
當Service封裝到Controller中時,就是ssm設計模式。同時會使前后台都分別要有對應服務,即在同一台服務器上進行服務。而通過zookeeper可以是數據管理更有效,服務效率更高。
當大量用戶訪問同一個互聯網業務,會有很多問題:高吞吐,高並發,低延遲和負載均衡。
高吞吐,即同時承載大量用戶的使用。整個系統同時服務的用戶數,這個吞吐量可定不是一台服務器可以解決的。所以就需要多台服務器同時協調服務。
高並發是高吞吐的一個延伸需求,當我們承載海量用戶時,希望每台服務器能及其所能的工作,最好不要出現無謂的消耗和等待的情況。
低延時,要求我們在大量用戶訪問時很快地返回計算結果。
負載均衡,是為了有效的應對用戶來源的復雜性。要讓同時發生的請求有效的讓多個不同的服務器承載。
產生的問題:
- 如何利用多台服務器,不讓一部分服務器影響整個系統的處理能力。
- 如何既可能多的處理任務,減少消耗。
- 請求的分揀和轉發,如何盡可能讓請求較快得到處理。
分布式系統就是為了解決這些問題的基本方法。
分布式架構:
- 系統訪問的特點遵循二八定律,即80%的業務訪問集中在20%的數據上。將數據庫中訪問集中的一部分數據儲存在緩存服務器上,減少數據庫的訪問次數,降低數據庫的訪問壓力。
- 多台服務器通過負載均衡同時向外部提供服務,解決單台服務器處理能力和存儲上限的問題。
- 系統上按照業務進行拆分改造,應用服務器按照業務區分進行分別部署。
- ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、名字服務、分布式同步、組服務等。目標就是封裝好復雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。