什麼是SOA,什麼是SCA,什麼是微服務?

這裏是修真院後端小課堂,每篇分享文從java

【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴展思考】【更多討論】【參考文獻】mysql

八個方面深度解析後端知識/技能,本篇分享的是:程序員

【什麼是SOA,什麼是SCA,什麼是微服務?】redis

 

 

你們好,我是IT修真院深圳分院第十一期學員,一枚正直純潔善良的JAVA程序員。spring

今天給你們分享一下,修真院官網JAVA任務九的一個知識點:什麼是SOA,什麼是SCA,什麼是微服務?sql

1    背景介紹
1.1    微服務的引入
從任務八的RMI開始,咱們逐漸接觸到了一個新的概念,即服務架構。經過對服務架構的瞭解,咱們接觸了幾個概念:SOA、SCA、微服務,那麼什麼是SOA,什麼是SCA,什麼是微服務呢?
2    知識剖析
2.1    什麼是SOA?
面向服務的架構(SOA)是一個組件模型,它將應用程序的不一樣功能單元(稱爲服務)經過這些服務之間定義良好的接口和契約聯繫起來。接口是採用中立的方式進行定義的,它應該獨立於實現服務的硬件平臺、操做系統和編程語言。這使得構建在各類各樣的系統中的服務能夠以一種統一和通用的方式進行交互。
2.2    SOA的特色有哪些?
A)SOA組件是鬆耦合的。當咱們說鬆耦合,這意味着每個服務是自包含單獨存在的邏輯。舉例來講,咱們採起了「支付網關」的服務,並將它附加到不一樣的系統。
B)SOA服務是黑匣子。在SOA中,服務隱藏有內在的複雜性。他們只使用交互消息,服務接受和發送消息。經過虛擬化一個服務爲黑盒子,服務變得更鬆散的耦合。
C) SOA服務應該是自定義: SOA服務應該可以本身定義。
D) SOA服務維持在一個列表中: SOA服務保持在一箇中央存儲庫。應用程序能夠在中央存儲庫中搜索服務,並調用相應服務。
E) SOA服務能夠編排和連接實現一個特定功能:SOA服務可使用了即插即用的方式。例如,「業務流程」中有兩個服務「安全服務」和「訂單處理服務」。從它的業務流程能夠實現兩種類型:一,您能夠先檢查用戶,而後處理訂單,或反之亦然。是的,你猜對了,使用SOA能夠鬆散耦合的方式管理服務之間的工做流。
2.3    什麼是SCA?
服務組件體系結構 (SCA) 是一個規範,它描述用於使用 SOA 構建應用程序和系統的模型。它可簡化使用 SOA 進行的應用程序開發和實現工做。數據庫

2.4    什麼是微服務?
微服務是一種架構風格,一個大型複雜軟件應用由一個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是鬆耦合的。每一個微服務僅關注於完成一件任務並很好地完成該任務。在全部狀況下,每一個任務表明着一個小的業務能力。
2.5    微服務由來
    微服務最先由Martin Fowler與James Lewis於2014年共同提出,微服務架構風格是一種使用一套小服務來開發單個應用的方式途徑,每一個服務運行在本身的進程中,並使用輕量級機制通訊,一般是HTTP API,這些服務基於業務能力構建,並可以經過自動化部署機制來獨立部署,這些服務使用不一樣的編程語言實現,以及不一樣數據存儲技術,並保持最低限度的集中式管理。
3    常見問題
一、    如何搭建一個SpringCloud項目
4    解決方案
一、見編碼實戰
5    編碼實戰apache

SpringCloud項目結構編程

clipboard.png

pom文件後端

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.jnshu</groupId><artifactId>carrots</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><modules><module>eureka-server</module><module>service-hi</module><module>config-server</module><module>service-zuul</module></modules><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Finchley.SR1</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skip>true</skip></configuration></plugin></plugins></build><repositories><repository><id>spring-milestone</id><url>http://repo.spring.io/libs-release</url></repository></repositories></project>

6    擴展思考
6.1    什麼是單體架構?
  一個歸檔包(例如war格式)包含了應用全部功能的應用程序,咱們一般稱之爲單體應用。架構單體應用的方法論,咱們稱之爲單體架構。
6.2    單體架構和微服務有什麼區別?
單體架構全部的模塊全都耦合在一塊,代碼量大,維護困難,微服務每一個模塊就至關於一個單獨的項目,代碼量明顯減小,遇到問題也相對來講比較好解決。
單體架構全部的模塊都共用一個數據庫,存儲方式比較單一,微服務每一個模塊均可以使用不一樣的存儲方式(好比有的用redis,有的用mysql等),數據庫也是單個模塊對應本身的數據庫。
單體架構全部的模塊開發所使用的技術同樣,微服務每一個模塊均可以使用不一樣的開發技術,開發模式更靈活。

7    參考文獻
CSDN、百度百科
8    更多討論

8.1  SCA的特色有哪些?有什麼優點?
SCA 可簡化使用 SOA 構建的業務應用程序的建立和集成。SCA 提供了構建粗粒度組件的機制,這些粗粒度組件由細粒度組件組裝而成。
SCA 將傳統中間件編程從業務邏輯分離出來,從而使程序員免受其複雜性的困擾。它容許開發人員集中精力編寫業務邏輯,而沒必要將大量的時間花費在更爲底層的技術實現上。
SCA 方法的優點包括:
★簡化業務組件開發 
★簡化做爲服務網絡構建的業務解決方案的組裝和部署 
★提升可移植性、可重用性和靈活性 
★經過屏蔽底層技術變動來保護業務邏輯資產 
★提升可測試性 

8.2    爲何須要微服務?在傳統的IT行業軟件大多都是各類獨立系統的堆砌,這些系統的問題總結來講就是擴展性差,可靠性不高,維護成本高。到後面引入了SOA服務化,可是,因爲 SOA 早期均使用了總線模式,這種總線模式是與某種技術棧強綁定的,好比:J2EE。這致使不少企業的遺留系統很難對接,切換時間太長,成本過高,新系統穩定性的收斂也須要一些時間。最終 SOA 看起來很美,但卻成爲了企業級奢侈品,中小公司都望而生畏。8.3    微服務有什麼缺點?運維開銷及成本增長:總體應用可能只需部署至一小片應用服務區集羣,而微服務架構可能變成須要構建/測試/部署/運行數十個獨立的服務,並可能須要支持多種語言和環境。這致使一個總體式系統若是由20個微服務組成,可能須要40~60個進程。隱式接口及接口匹配問題:把系統分爲多個協做組件後會產生新的接口,這意味着簡單的交叉變化可能須要改變許多組件,並需協調一塊兒發佈。在實際環境中,一個新品發佈可能被迫同時發佈大量服務,因爲集成點的大量增長,微服務架構會有更高的發佈風險。分佈式系統的複雜性:做爲一種分佈式系統,微服務引入了複雜性和其餘若干問題,例如網絡延遲、容錯性、消息序列化、不可靠的網絡、異步機制、版本化、差別化的工做負載等,開發人員須要考慮以上的分佈式系統問題。異步機制:微服務每每使用異步編程、消息與並行機制,若是應用存在跨微服務的事務性處理,其實現機制會變得複雜化。

相關文章
相關標籤/搜索