15-SpringBoot項目使用Dubbo搭建分布式系統1

2020-09-24 亮子說編程

第一節 系統架構介紹


1、系統框架介紹

1)、單體系統

我想大家最最最熟悉的就是單機結構,一個系統業務量很小的時候所有的代碼都放在一個項目中就好了,然後這個項目部署在一臺伺服器上就好了。整個項目所有的服務都由這臺伺服器提供。這就是單機結構。

那麼,單機結構有啥缺點呢?我想缺點是顯而易見的,單機的處理能力畢竟是有限的,當你的業務增長到一定程度的時候,單機的硬體資源將無法滿足你的業務需求。此時便出現了集群模式,往下接著看。

2)、集群結構

單機處理到達瓶頸的時候,你就把單機複製幾份,這樣就構成了一個「集群」。集群中每臺伺服器就叫做這個集群的一個「節點」,所有節點構成了一個集群。每個節點都提供相同的服務,那麼這樣系統的處理能力就相當於提升了好幾倍。

但問題是用戶的請求究竟由哪個節點來處理呢?最好能夠讓此時此刻負載較小的節點來處理,這樣使得每個節點的壓力都比較平均。要實現這個功能,就需要在所有節點之前增加一個「調度者」的角色,用戶的所有請求都先交給它,然後它根據當前所有節點的負載情況,決定將這個請求交給哪個節點處理。這個「調度者」有個牛逼了名字——負載均衡伺服器。

集群結構的好處就是系統擴展非常容易。如果隨著你們系統業務的發展,當前的系統又支撐不住了,那麼給這個集群再增加節點就行了。但是,當你的業務發展到一定程度的時候,你會發現一個問題——無論怎麼增加節點,貌似整個集群性能的提升效果並不明顯了。這時候,你就需要使用微服務結構了。

3)、分布式架構

從單機結構到集群結構,你的代碼基本無需要作任何修改,你要做的僅僅是多部署幾臺伺服器,每臺伺服器上運行相同的代碼就行了。但是,當你要從集群結構演進到微服務結構的時候,之前的那套代碼就需要發生較大的改動了。所以對於新系統我們建議,系統設計之初就採用微服務架構,這樣後期運維的成本更低。但如果一套老系統需要升級成微服務結構的話,那就得對代碼大動幹戈了。所以,對於老系統而言,究竟是繼續保持集群模式,還是升級成微服務架構,這需要你們的架構師深思熟慮、權衡投入產出比。

分布式結構就是將一個完整的系統,按照業務功能,拆分成一個個獨立的子系統,在分布式結構中,每個子系統就被稱為「服務」。這些子系統能夠獨立運行在web容器中,它們之間通過RPC方式通信。

舉個例子,假設需要開發一個在線商城。按照微服務的思想,我們需要按照功能模塊拆分成多個獨立的服務,如:用戶服務、產品服務、訂單服務、後臺管理服務、數據分析服務等等。這一個個服務都是一個個獨立的項目,可以獨立運行。如果服務之間有依賴關係,那麼通過RPC方式調用。

這樣的好處有很多:

  1. 系統之間的耦合度大大降低,可以獨立開發、獨立部署、獨立測試,系統與系統之間的邊界非常明確,排錯也變得相當容易,開發效率大大提升。
  2. 系統之間的耦合度降低,從而系統更易於擴展。我們可以針對性地擴展某些服務。假設這個商城要搞一次大促,下單量可能會大大提升,因此我們可以針對性地提升訂單系統、產品系統的節點數量,而對於後臺管理系統、數據分析系統而言,節點數量維持原有水平即可。
  3. 服務的復用性更高。比如,當我們將用戶系統作為單獨的服務後,該公司所有的產品都可以使用該系統作為用戶系統,無需重複開發。

2、集群與分布式的區別

集群是個物理形態,分布式是個工作方式。

只要是一堆機器,就可以叫集群,他們是不是一起協作著幹活,這個誰也不知道;一個程序或系統,只要運行在不同的機器上,就可以叫分布式,嗯,C/S架構也可以叫分布式。

集群一般是物理集中、統一管理的,而分布式系統則不強調這一點。

所以,集群可能運行著一個或多個分布式系統,也可能根本沒有運行分布式系統;分布式系統可能運行在一個集群上,也可能運行在不屬於一個集群的多臺(2臺也算多臺)機器上。

以上內容來自知乎網站,地址如下:

https://www.zhihu.com/question/20004877

相關焦點

  • 使用SpringBoot+Dubbo 搭建一個簡單的分布式服務
    將項目打成 jar 包供其他項目使用開始實戰 3 :實現服務提供者 dubbo-provider1. dubbo-provider 項目創建2. pom:Dubbo、RPC、分布式、由於本文的目的是帶大家使用SpringBoot+Dubbo 搭建一個簡單的分布式服務,所以這些概念我只會簡單給大家普及一下,不會做深入探究。
  • 15-SpringBoot項目使用Dubbo搭建分布式系統3
    第三章 使用dubbo搭建分布式系統1、dubbo簡介高性能java RPC框架Apache Dubbo |ˈdʌbəʊ| 是一款高性能2)、智能負載均衡內置多種負載均衡策略,智能感知下遊節點健康狀況,顯著減少調用延遲,提高系統吞吐量。3)、服務自動註冊與發現支持多種註冊中心服務,服務實例上下線實時感知。
  • 15-SpringBoot項目使用Dubbo搭建分布式系統2
    第二節 Docker安裝zookeeper1、zookeeper簡介zookeeper是一個分布式的,開放源碼的分布式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。
  • springboot整合dubbo+zookeeper(三)
    現在越來越多的公司開發項目中使用了springboot作為搭建服務的框架,而dubbo是一款國內使用較多的SOA架構開發的中間件,其主要由三個部分組成:生產者,消費者,註冊中心。註冊中心一般使用的是zookeeper。於是我們從頭來捋一捋如何搭建一個springboot+dubbo項目。
  • springboot整合dubbo+zookeeper(二)
    現在越來越多的公司開發項目中使用了springboot作為搭建服務的框架,而dubbo是一款國內使用較多的SOA架構開發的中間件,其主要由三個部分組成:生產者,消費者,註冊中心。註冊中心一般使用的是zookeeper。於是我們從頭來捋一捋如何搭建一個springboot+dubbo項目。
  • 15-第三節 使用dubbo搭建分布式系統
    1、dubbo簡介高性能java RPC框架Apache Dubbo |ˈdʌbəʊ| 是一款高性能、輕量級的開源Java RPC框架,它提供了三大核心能力2)、智能負載均衡內置多種負載均衡策略,智能感知下遊節點健康狀況,顯著減少調用延遲,提高系統吞吐量。3)、服務自動註冊與發現支持多種註冊中心服務,服務實例上下線實時感知。
  • springboot整合dubbo+zookeeper(一)
    現在越來越多的公司開發項目中使用了springboot作為搭建服務的框架,而dubbo是一款國內使用較多的SOA架構開發的中間件,其主要由三個部分組成:生產者,消費者,註冊中心。註冊中心一般使用的是zookeeper。於是我們從頭來捋一捋如何搭建一個springboot+dubbo項目。
  • dubbo實戰之二:與SpringBoot集成
    實戰》系列的第二篇,一起來實戰SpringBoot(2.3.3.RELEASE版本)與dubbo的集成,這也是分布式服務的常用技術組合,本文由以下內容組成:xml version="1.0" encoding="UTF-8"?
  • Dubbo 分布式架構搭建教育 PC 站
    學員使用手機號註冊登錄後,可以選擇適合自己的課程,並觀看課程視頻,當然,有免費的課程,也有 VIP 專屬課程。項目結構與命名單一架構:tomcat-[view -> controller -> service -> dao -> mySQL]分布式架構:tomcat-[view
  • Springboot 項目搭建入門
    Springboot 項目搭建入門環境準備ideamaven工程搭建springboot項目由於其自動配置了很多的依賴,簡化了開發者的配置,因此加快了開發者的開發速度,但是如果對spring 底層等不太了解的人,還是有些懵的,建議大家學習spring 之後再來使用spring boot項目來搭建。
  • 小試牛刀,SpringBoot+Dubbo 的直連模式
    dubbo框架? 投票
  • SpringBoot+vue.js搭建圖書管理系統 開源項目
    2021-01-10 15:21:45 來源: 詩詞痴情客 舉報
  • 分布式-zookeeper+dubbo入門demo
    完成這個demo的搭建,先簡單說一下dubbo常識的概念1.什麼是SOA架構SOA 是Service-Oriented Architecture的首字母簡稱,它是一個面向服務的架構模式(俗稱:分布式;面服務的分布式)為什麼網際網路項目會採用SOA架構呢?
  • 01:springboot最快入門之三分鐘啟動springboot項目
    三、本章目標使用springboot完成一個簡單的web(springmvc)應用程式,通過@restController輸出"HelloWord"到界面,讓我們初步體驗springboot的快速開發、簡單的特性。目標時間:三分鐘。
  • 輕量級的分布式日誌追蹤利器,十分鐘可接入,從此日誌追蹤無難事
    這時候很多童鞋會開始考慮上SkyWalking,Pinpoint等分布式追蹤系統來解決,基於OpenTracing規範,而且通常都是無侵入性的,並且有相對友好的管理界面來進行鏈路Span的查詢。但是搭建分布式追蹤系統,熟悉以及推廣到全公司的系統需要一定的時間周期,而且當中涉及到鏈路span節點的存儲成本問題,全量採集還是部分採集?
  • 輕量級分布式日誌追蹤利器,十分鐘即可接入,從此日誌追蹤無難事
    這時候很多童鞋會開始考慮上SkyWalking,Pinpoint等分布式追蹤系統來解決,基於OpenTracing規範,而且通常都是無侵入性的,並且有相對友好的管理界面來進行鏈路Span的查詢。但是搭建分布式追蹤系統,熟悉以及推廣到全公司的系統需要一定的時間周期,而且當中涉及到鏈路span節點的存儲成本問題,全量採集還是部分採集?
  • 2020年排名前20基於SpringBoot搭建的開源項目,幫你快速項目搭建
    無論是日常學習,還是當做自己項目搭建的腳手架,這20款開源項目都是非常合適的。使用Spring整合開源框架。使用Maven對項目進行模塊化管理,提高項目的易開發性、擴展性。系統包括4個子系統:系統管理Service、系統管理Web、業務Service、業務Web。系統管理:包括用戶管理、權限管理、數據字典、系統參數管理等等。可以無限的擴展子系統,子系統之間使用Dubbo或MQ進行通信。
  • SpringBoot中使用dubbo實現RPC調用
    Dubbo(來自於阿里巴巴)Dubbo是一個分布式服務框架,致力於提供高性能和透明化的PRC遠程調用服務調用方案。通過zookeeper設置達到註冊服務和心跳檢測,通過gateWay前置網關(Clound使用Zuul實現負載均衡將請求轉向Eureka伺服器)隔絕外部直接調用原子服務的風險SpringBoot中使用
  • Spring Cloud 和 Dubbo,到底用哪個好?
    即:springboot>dubbo>springcloud。我喜歡springboot這種大道至簡的風格,keep it simple and stupid。雖然Dubbo 支持短連接大數據量的服務提供模式,但絕大多數情況下都是使用長連接小數據量的模式提供服務使用的。所以,對於類似於電商等同步調用場景多並且能支撐搭建Dubbo 這套比較複雜環境的成本的產品而言,Dubbo 確實是一個可以考慮的選擇。
  • 搭建springboot+javaFX項目
    搭建JavaFX Scene Builder環境介紹JavaFX Scene Builder是一種可視布局工具,允許用戶快速設計JavaFX應用程式用戶界面,而無需編碼。它的結果是一個FXML文件,然後可以通過綁定到應用程式的邏輯與Java項目組合。