【系統架構師】-案例篇(十五)SOA、微服務與數據庫

1、可復用構件應具備哪些屬性

可用性:構件必須易于理解和使用。

質量:構件及其變形必須能正確工作。

適應性:構件應該易于通過參數化等方式在不同語境中進行配置。

可移植性:構件應能在不同的硬件運行平臺和軟件環境中工作。

可變性(Variability):構件應能針對不同的應用系統,只需對其可變部分進行適當的調節等

2、王工:客戶端——web服務器——數據庫服務器;

李工:客戶端——web服務器——多應用服務器-數據庫服務器

3、O/RM的含義及優點

O/R映射指的是對象/關系映射,是一種編程技術,將關系數據庫中的關系型數據與面向對象編程語言中類型系統定義的 數據進行格式轉換。

三點好處:

(1)可以將業務邏輯與數據邏輯分離。

(2)可以使得開發人員采用面向對象的方式訪問底層關系型數據庫。

(3)能夠做到上層應用與底層的具體數據庫無關,兩者解耦合。

4、影響Web應用系統性能的三個主要因素:

(1)數據庫的連接與銷毀。可以采用數據池的方式緩存數據庫連接,實現數據庫連接復用,提高系統的數據訪問效率。

(2)構件或中間件的加載與卸載。可以采用分布式對象池的方式緩存創建開銷大的對象,實現對象復用,用以提高效率。

(3)線程的創建與銷毀。可以采用線程池的方式緩存己經創建的線程,提高系統的反應速度。

提高數據訪問性能

5、傳統分層架構與SOA架構區別

6、基于SOA的企業集成中的“數據整合——信息服務”

(1)聯邦服務(Federation,Service):提供將各種類型的數據聚合的能力,它既支持關系型數據,也支持XML數據、文本數據和內容數據等非關系型數據。同時,所有的數據仍然按照自己本身的方式管理。

(2)復制服務(Replication,Service):提供遠程數據的本地訪問能力,它通過自動的實時復制和數據轉換,在本地維護一個數據源的副本。本地數據和數據源在技術實現上可以是獨立的。

(3)轉換服務(Transformation,Service):用于數據源格式到目標格式的轉換,可以是批量的或者是基于記錄的。

(4)搜索服務(Search,Service):提供對企業數據的查詢和檢索服務,既支持數據庫等結構化數據,也支持如PDF等非結構化數據。, 

7、SOA架構設計的注意事項

當基于SOA來構建一個企業級的系統架構時,一定要注意對原有系統架構中的集成需求進行細致的分析和整理。而關于系統中最重要的元素,也就是SOA系統中服務的構建有兩點需要特別注意的地方:

①是對于服務粒度的控制;

②是對于無狀態服務的設計。

8、針對每條SQL語句都建立索引的不合理原因:

①如果建立索引不當,數據庫管理系統將不利用已經建立的索引,而采取全表掃描。

②當更新操作成為系統瓶頸時,因為每次更新操作會重建表的索引,則需要考慮刪除某些索引。

③應該針對不同應用情況選擇適當的索引類型。例如,如果經常使用范圍查詢,則B樹索引比散列索引更加高效。

④應該將有利于大多數據查詢和更新的索引設為聚類索引。

⑤需要對建立的索引進行實際的測試,因為索引的使用是由數據庫管理系統(數據庫優化器)決定的。

9、SQL優化的基本策略:

①建立物化視圖或盡可能減少多表查詢。

②以不相干子查詢替代相干子查詢。

③只檢索需要的列。

④用帶IN的條件子句等價替換OR子句。

⑤經常提交COMMIT,以盡早釋放鎖。

⑥避免嵌套的游標(Cursor)和多重循環等

10、微服務的優缺點

微服務優點:

(1)每個微服務都很小,這樣能聚焦一個指定的業務功能或業務需求。

(2)微服務能夠被小團隊單獨開發,這個小團隊是2到5人的開發人員組成。

(3)微服務是松耦合的,是有功能意義的服務,無論是在開發階段或部署階段都是獨立的。

(4)微服務能使用不同的語言開發。

(5)去中心化。每個微服務都有自己的存儲能力,可以有自己的數據庫。也可以有統一數據庫。

?微服務缺點:

(1)很難在不采用分布式事務的情況下跨服務實現功能

(2)測試工作更加困難

(3)跨服務實現要求功能要求團隊之間的緊密協作

(4)部署復雜

微服務架構的涵義和關鍵原則

微服務是一種軟件開發技術,是面向服務的體系結構(SOA)架構風格的一種變體。微服務將應用程序構造為一組松散耦合的服務,微服務中單個應用程序由許多松散耦合且可獨立部署的較小組件或服務組成。

微服務風格的關鍵原則:

1. 每一個 URI 代表 1 種資源

2. 客戶端使用 HTTP Web 表示操作方式的動詞對服務端資源進行操作

3. 通過操作資源的表現形式來操作資源

4. 資源的表現形式是 XML 或者 HTML

5. 客戶端與服務端之間的交互是無狀態的,客戶端每個請求必須包含理解請求所必需的所有信息

11、網關的主要作用

1、提供統一入口

2、可以進行權限身份認證等安全管理

3、可以根據流量進行限流

4、數據緩存

5、性能監控等

6、異常重試

7、服務降級

12、ATAM架構評估方法的主要過程:

描述和介紹階段:描述ATAM方法,描述業務動機,描述架構

調查和分析階段:確定架構方法,生成質量屬性效用樹,分析架構方法

測試階段:討論場景和對場景分級,分析架構方法

最終階段:描述評估結果

13、數據結構優化

設備信息(設備標識、登記標識、所屬用戶、設備狀態)

設備心跳(設備標識、最后一次心跳時間)

設備異常(設備標識、異常類型、異常發現時間、是否推送)

問題1. 設備與用戶間存在多對多的關系,如單個設備既屬于社區安防用戶,又屬于消防站監管。

問題2. 設備狀態屬于設備動態屬性,不應與靜態屬性混合存儲,會增加靜態信息表的IO。

問題3. 設備心跳不應只存儲最后一次,無法獲取全部設備狀態。

問題4. 設備異常的推送是否僅單一一個用戶一次,如果存在多條推送,則存在一對多的關系。

14、使用MySQL作為數據庫,而軟件研發團隊的架構師卻提出要使用由MySQL、HBase和Redis組成的多種多組數據庫。請給出適當建議。

技術總監的建議中,MySQL屬于關系型數據庫,實際應用中一般用來作為操作數據存儲。研發架構師提出的HBase和Redis屬于NoSQL,實際應用中一般用來做大數據量和高即時性數據存儲。該案例屬于物聯網應用,建議增加NoSQL數據庫提高數據存儲的容量和即時性。

但是HBase屬于列族數據庫,不便于關聯數據的查詢,既降低查詢速度,又增加IO操作,建議采用MongoDB替換掉HBase。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14315.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14315.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14315.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Boot實現RabbitMQ監聽消息的幾種方式

Spring Boot實現RabbitMQ監聽消息的幾種方式 在現代的分布式系統中,消息隊列扮演著至關重要的角色,用于解耦服務之間的通信,實現異步消息傳遞。而RabbitMQ作為其中一種常用的消息隊列服務,在Spring Boot中得到了廣泛的應用。本文…

pip(包管理器) for Python

pip是什么 pip是Python的包安裝程序,即python包管理器。您可以使用 pip 從Python包索引和其他索引安裝包。 1. pip 安裝 python 包 pip install 包名 例如:pip install pymssql : 使用pip安裝數據庫驅動包 pymssql 2.pip 卸載 python 包 pi…

【Axure教程】拖動換位選擇器

拖動換位選擇器通常用于從一個列表中選擇項目并將其移動到另一個列表中。用戶可以通過拖動選項來實現選擇和移動。這種交互方式在許多Web應用程序中很常見,特別是在需要對項目分組的情況下。 所以今天作者就教大家怎么在Axure用中繼器制作一個拖動換位選擇器的原型…

告別硬編碼:Spring條件注解優雅應對多類場景

一、背景 在當今的軟件開發中,服務接口通常需要對應多個實現類,以滿足不同的需求和場景。舉例來說,假設我們是一家2B公司,公司的產品具備對象存儲服務的能力。然而,在不同的合作機構部署時,發現每家公司底…

RedisTemplateAPI:List

文章目錄 ?介紹?List的常見命令有?RedisTemplate API????添加緩存????將List放入緩存????設置過期時間(單獨設置)????獲取List緩存全部內容(起始索引,結束索引)????從左或從右彈出一個元素????根據索引查詢元素?…

探索 Rust 語言的精髓:深入 Rust 標準庫

探索 Rust 語言的精髓:深入 Rust 標準庫 Rust,這門現代編程語言以其內存安全、并發性和性能優勢而聞名。它不僅在系統編程領域展現出強大的能力,也越來越多地被應用于WebAssembly、嵌入式系統、分布式服務等眾多領域。Rust 的成功&#xff0…

Day25:Leetcode:669. 修剪二叉搜索樹 + 108.將有序數組轉換為二叉搜索樹 + 538.把二叉搜索樹轉換為累加樹

LeetCode&#xff1a;669. 修剪二叉搜索樹 問題描述 解決方案&#xff1a; 1.思路 2.代碼實現 class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if (root null) {return null;}if (root.val < low) {return trimBST(root.right, low, hi…

Nginx文件解析漏洞復現:CVE-2013-4547

漏洞原理 CVE-2013-4547漏洞是由于非法字符空格和截止符導致Nginx在解析URL時的有限狀態機混亂&#xff0c;導致攻擊者可以通過一個非編碼空格繞過后綴名限制。假設服務器中存在文件1. jpg&#xff0c;則可以通過改包訪問讓服務器認為訪問的為PHP文件。 漏洞復現 開啟靶場 …

Energia單片機實驗-飲水機模擬

一、要求分析 利用狀態機程序思想&#xff0c;使用MSP-EXP430F5529 Launchpad板卡實現以下模擬飲水機的功能。 飲水機是我們生活中常見的家用設備。假設一個簡易的飲水機有兩個按鍵&#xff1a;童鎖按鍵[PUSH1]和熱水按鍵[PUSH2]。 按鍵功能說明&#xff1a; 1.童鎖按鍵&#x…

聯盟 | 歌者 AIPPT X HelpLook攜手,開啟企業高效辦公新時代

面對日益增長的工作負荷和追求效率優化的壓力&#xff0c;企業知識的積累與傳播顯得愈發重要。如何系統化地沉淀員工與企業的知識精華&#xff1f;如何快速分享內外部知識&#xff1f;更重要的是&#xff0c;如何在獲取這些知識后&#xff0c;迅速將其轉化為精美的PPT&#xff…

USB-HID 鍵盤描述符簡介

USB-HID 鍵盤描述符簡介 USB-HID鍵盤設備描述符&#xff1a; #define DEVICE_DESCRIPTOR_SIZE 0x12 #define USB_CTRL_TEST_SZIE 8 #define CONFIG_DESCRIPTOR_SIZE_DUSB 0x0029 //0x0022//0x0029 #define HID_REPORT_DESCRIPTOR_SIZE_DUSB 0x004…

人類交互3 皮膚感覺與運動系統

皮膚感覺概述 皮膚是人體最大的器官之一&#xff0c;具有多種感覺功能&#xff0c;包括&#xff1a; 觸覺&#xff1a;通過觸覺&#xff0c;我們能感知物體的形狀、質地&#xff0c;幫助我們與外界環境進行互動和感知周圍物體的特征。 熱覺&#xff1a;熱覺使我們能感知周圍環…

ridge lightgbm catboost

本文從理論基礎、代碼實踐、內容總結三個方面來展示預測的三大基礎模型與手動調參自動調參內容細節。 一、理論基礎 ridgeRegression 圖片: https://uploader.shimo.im/f/uX43BitluzbQeqht.jpg!thumbnail?accessTokeneyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1Q…

哪款電腦桌面日歷記事本軟件好用?推薦優秀的電腦日歷記事本

對于眾多上班族而言&#xff0c;每天在電腦前忙碌已成為生活常態。若想提升工作效率&#xff0c;簡化繁瑣的工作流程&#xff0c;選擇一款出色的電腦桌面日歷與記事本軟件就顯得至關重要。 然而&#xff0c;在Windows操作系統上設定提醒顯得相當繁瑣&#xff0c;而系統自帶的記…

機器學習之注意力機制

概念 注意力機制(Attention Mechanism)是機器學習,特別是深度學習中一種重要的技術,最初被用于自然語言處理(NLP)任務,如機器翻譯。它的核心思想是,讓模型在處理輸入數據時,能夠“關注”到數據中的重要部分,而不是一視同仁地處理所有部分。這種機制極大地提高了模型…

Python貪心算法

貪心算法&#xff08;Greedy Algorithm&#xff09;是一種常見的算法設計策略&#xff0c;它在每一步選擇當前最優解&#xff0c;希望通過局部最優解最終得到全局最優解。貪心算法通常適用于滿足一些特定條件的問題&#xff0c;例如貨幣找零、活動選擇、任務調度等。貪心算法的…

Discourse 中可能使用的 HMAC 算法 Java 實現

在 DiscourseConnect 中&#xff0c;對數據的簽名使用的是 HMAC 算法。 實際使用的算法為 HmacSHA256。 Java 生成簽名的方法很簡單。 String hmac new HmacUtils(HmacAlgorithms.HMAC_SHA_256, "55619458534897682511405307018226").hmacHex(ssoPayload);HmacUti…

lvm磁盤創建失敗Couldn‘t create temporary archive name

問題情況: 在客戶單位創建lvm時,執行vgextend提示異常信息: 掛載磁盤報如下錯誤: ]# vgextend centos /dev/xvdb Physical volume “/dev/xvdb” successfully created. Couldn’t create temporary archive name. 原因:存儲使用100%,無法掛載,須預留部分空間出來。 解…

工程項目核算報價-項目CPQ報價系統控成本高效完成工程項目報價

首先了解一下CPQ報價如何解決工程項目報價難的? 目前市場上的工程項目報價方案制作效率低&#xff0c;易出錯&#xff0c;反復修改&#xff0c;成本核算的過程不夠嚴謹&#xff0c;憑以經驗和數據大差不差的估算當下項目&#xff0c;報價過程中會忽略側面因素&#xff0c;導致…

Elasticsearch 分析器的高級用法二(停用詞,拼音搜索)

Elasticsearch 分析器的高級用法二&#xff08;停用詞&#xff0c;拼音搜索&#xff09; 停用詞簡介停用詞分詞過濾器自定義停用詞分詞過濾器內置分析器的停用詞過濾器注意&#xff0c;有一個細節 拼音搜索安裝使用相關配置 停用詞 簡介 停用詞是指&#xff0c;在被分詞后的詞…