初見微服務之架構概述

来源:http://www.cnblogs.com/willsuna/archive/2016/04/08/5366687.html
-Advertisement-
Play Games

一、應用背景 隨著計算技術的進步,記憶體、CPU、磁碟等資源不再是稀缺的,電腦作為應用程式的載體從單伺服器轉變為多伺服器,集中計算演化為分散式計算。原有的“巨石”應用難以適應業務的發展速度,可擴展、自適應的能力不足,程式員面對著數以萬計的源代碼文件抓耳撓腮(O M G!),越來越多的工程師渴望小而美 ...


一、應用背景

隨著計算技術的進步,記憶體、CPU、磁碟等資源不再是稀缺的,電腦作為應用程式的載體從單伺服器轉變為多伺服器,集中計算演化為分散式計算。原有的“巨石”應用難以適應業務的發展速度,可擴展、自適應的能力不足,程式員面對著數以萬計的源代碼文件抓耳撓腮(O M G!),越來越多的工程師渴望小而美、易於擴展的架構體系,微服務應運而生。自2005年首次由Peter Rodgers提出微服務概念以來,風靡一時,隨著近些年的發展,已經逐步被千萬企業所採用,多數為互聯網企業。我於工作半年之後有幸參與到後端微服務架構遷移的產品設計和開發中,有些體會,與大家分享。

二、設計原則

  • SRP(Single Responseble Principle)即單一職責原則,每一個服務提供者僅暴露自己職責範圍內的介面,操作職責範圍內的DB,不繼承其他服務提供者的協議。簡單點說,該你乾的才去乾,不該乾的調用其他人的服務來乾。
  • RESTful,作為Web Service的替代者,其面向資源的特性註定是為微服務而生的,介面設計符合REST設計原則將使服務易於理解和接受。需要註意的是,靈活的使用,而不是生硬的照搬REST設計,如保持請求風格一致,GET/POST,少用DELETE/PUT(仁者見仁,智者見智);保證同類資源首碼的一致性等。REST和RPC的優劣如表2-1。說一下可擴展性吧,RPC多以client擁有server的interface來實現通信,當介面變動後,client必須馬上升級,而REST的介面協議可以不強制升級。
     
    響應時間
    用戶友好程度
    可擴展性
    REST

    ***

    *****

    *****

    RPC

    *****

    **

    ****

  • 協議,也就是實體或者Bean了,作為各個服務組件共有的內容,是組件之間調用的橋梁。服務組件之間的調用通過協議進行調用,協議儘量不去彼此繼承。如果說微服務是個分散式的世界,那麼協議就是這個世界的法律文書(感覺很嚴肅的樣子)。

三、架構圖

jiagou

 

關鍵點:

1.服務註冊中心,zookeeper集群作為分散式調度中心,各個服務註冊在zookeeper之上,註冊內容包括服務的請求url,請求ip地址和埠,服務組件名稱,註冊時間等;

2.Gateway,服務網關作為系統的入口,具有服務轉發、授權驗證、負載均衡等作用,使用高併發框架netty實現高速轉發等;

3.訪問控制服務,用戶首先需要獲得系統授權才可以訪問業務服務,授權通過token來實現;

4.業務服務1~N,是系統內具體業務組件的劃分;

5.用戶服務,實現用戶信息的註冊、修改、共用等;

6.配置中心,整個系統的配置均位於配置中心,組件通過訪問配置中心獲取配置參數;

7.監控系統,檢測ECS、RDS、zookeeper集群等的各項狀態;

8.Kafka消息隊列系統,支撐其他系統。

 

後續會對各個子系統和子系統用到的技術跟大家簡要分享。晚安。

By Will


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 2016年新版 恆信六合彩系統 帶新開獎結果》》》》》玩法齊全》連碼自由對碰》各類玩法內附說明。資料庫文件 hs001 修改資料庫連接 文件夾 configs 文件config後臺管理 admin admin前臺會員目錄 member <ignore_js_op> <ignore_js_op> <i ...
  • 變數 String yourPast = "Good Java Programmer"; val yourPast : String = "Good Java Programmer" val yourPast = "Good Java Programmer" var yourFuture = "Go ...
  • 一、萊布尼茲發明二進位 1679年3月25日,萊布尼茲寫了題為“二進位算術的解釋”的論文。在文中,萊布尼茲給出了二進位的計數方法,系統地討論了二進位和十進位相互轉化的法則 ;並給出了二進位的加法與乘除法法則。但萊布尼茲要求不要馬上發表他的論文。在論文中他把二進位學術地位定位成“發明”。 1701年1 ...
  • 前幾天做了一個文件替換功能用到些python os的功能,感覺python os模塊的功能非常的強大,如果你希望你的python程式能夠與平臺無關的話,這個模塊是尤為重要的。即它允許一個程式在編寫後不需要任何改動,也不會發生任何問題,就可以在Linux和 Windows下運行,看到這裡覺得pytho ...
  • 平時用$_post[''],$_get['']獲取表單中參數時會出現Notice: Undefined index: ; 雖然可以通過設置錯誤顯示方式來隱藏這個提示,但是這樣也有隱患,就是在伺服器的日誌中會記錄這些提示,導致日誌文件異常龐大。 通過在網上搜索和自己自身的實戰總結幾種解決方法; 方法1 ...
  • 上回寫了[使用Redis實現關註關係][1],這次說說使用Redis實現Timeline。 Timeline的實現一般有推模式、拉模式、推拉結合這幾種。 推模式:某人發佈內容之後推送給所有粉絲,空間換時間,瓶頸在寫入; 拉模式:粉絲從自己的關註列表中讀取內容,時間換空間,瓶頸在讀取; 推拉結合:某人 ...
  • 項目中經常會遇到單例的情況。大部分的單例代碼都差不多像這樣定義: internal class SingletonOne { private static SingletonOne _singleton; private SingletonOne() { } public static Single... ...
  • 在前段時間呢陸陸續續的更新了一系列關於重構的文章。在重構我們既有的代碼時,往往會用到設計模式。在之前重構系列的博客中,我們在重構時用到了“工廠模式”、“策略模式”、“狀態模式”等。當然在重構時,有的地方沒有點明使用的是那種設計模式。從今天開始,我們就圍繞著設計模式這個主題來討論一下我們常用的設計模式 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...