PHP程序員如何簡單的開展服務治理架構(三)

服務治理所治理的服務須要合理的部署與管理,本章咱們講一下SOA(面向服務架構),本人語言文筆很差,因此本章內容使用問答模式,參考了 [SOA面試題(http://www.jdon.com/soa/soa-i...] 的面試題,經過對此站複雜的描述進行簡單的講解。html

概述

SOA表明了面向服務架構,僅僅是一種概念,經過這種概念而演變出的各類各樣的服務架構均可稱爲SOA架構,SOA核心的概念就是 「鬆耦合」。git

非SOA的架構

多語言開發

clipboard.png

同語言開發

clipboard.png

服務與服務之間可能會是不一樣的開發語言或相同語言開發,他們的調用方式依舊只能夠經過http去獲取,或者比較流行的Restful Api的形式,不管是在性能與開發的過程當中都是很笨的辦法。程序員

什麼是SOA的服務

clipboard.png

在現實世界中,服務是一種咱們花費購買到的一種預期的服務。github

一、(來自真實世界):你去餐館訂餐,您的訂單首先進入到櫃檯,而後在廚房進行食物準備,最後服務員提供的食物。所以,爲了實現一個餐廳訂購服務,您須要三個邏輯部門/服務協同工做(計賬,廚房和服務員)。在軟件世界一樣的方法稱爲業務服務。

二、(軟件世界):你去亞馬遜訂購了一本書,有不一樣的服務,如支付網關,庫存系統,貨運系統等共同完成一本書的訂購。面試

clipboard.png

  全部的服務是自包含的,合乎邏輯。他們就像黑盒子。總之,咱們並不須要瞭解業務服務的內部工做細節。對於外部世界,它只是一個可以使用消息交互的黑盒子。例如在「支付網關」業務服務得到消息「檢查信貸」後會給出輸出:這個客戶的信貸有或沒有。對於「訂單系統」,「支付網關」的服務是一個黑盒子。segmentfault

服務的主要特色是什麼

A) SOA組件是鬆耦合的。當咱們說鬆耦合,這意味着每個服務是自包含單獨存在的邏輯。舉例來講,咱們採起了「支付網關」的服務,並將它附加到不一樣的系統。安全

B) SOA服務是黑匣子。在SOA中,服務隱藏有內在的複雜性。他們只使用交互消息,服務接受和發送消息。經過虛擬化一個服務爲黑盒子,服務變得更鬆散的耦合。架構

C) SOA服務應該是自定義: SOA服務應該可以本身定義。框架

D) SOA服務維持在一個列表中: SOA服務保持在一箇中央存儲庫。應用程序能夠在中央存儲庫中搜索服務,並調用相應服務。性能

E) SOA服務能夠編排和連接實現一個特定功能: SOA服務可使用了即插即用的方式。例如,「業務流程」中有兩個服務「安全服務」和「訂單處理服務」 。從它的業務流程能夠實現兩種類型:一,您能夠先檢查用戶,而後處理訂單,或反之亦然。是的,你猜對了,使用SOA能夠鬆散耦合的方式管理服務之間的工做流。

什麼是SOA

SOA表明了面向服務的架構。 SOA是一種使用鬆耦合的黑盒子服務構建業務應用的體系架構,這些服務能夠經過編排鏈接在一塊兒以實現特定的功能。

什麼是合同,地址和綁定?

這是三個SOA的標準術語。每一個服務對外開放地址,在服務開發中進行合同約定,客戶端綁定服務進行開發調用。

  • 合同是兩方或多方之間的協議。它定義了一種客戶端如何與服務通訊的協議。從技術上講,它有描述參數和返回值的方法。
  • 地址代表在哪兒能找到這種服務。地址是一個URL,它指向服務的位置。
  • 綁定是決定這個端點如何能夠訪問。它決定了如何完成通訊。例如,你暴露你的服務,可使用SOAP over HTTP或經過TCP的BINARY進行訪問。所以,對於這些通訊介質將被建立兩個綁定。
    n

什麼是可重用的服務?

服務是一個自主的,可重複使用的,可發現的,無狀態的,有必定粒度的功能,而且是一個複合應用程序或一個組合服務的一部分。

可重複使用的服務經過業務活動標識,這個業務活動是使用服務規範(設計時合同)描述的。

一個服務約束是,包括安全性,QoS,SLA,使用策略,能夠由多個運行時的合同 多個接口(WSDL中的Web服務)以及多個實現(代碼)定義的。

可重複使用的服務應在被管制在其從設計到運行整個企業級生命週期。其重用應經過規範流程來推進,重用應該是可測量的。

在一個SOA中如何實現鬆耦合?

實現鬆耦合一種策略是使用服務接口(WSDL中爲SOAP Web服務)來限制服務之間的依賴性,對消費者隱藏服務實現。鬆耦合能夠經過實施服務的功能封裝以及限制服務接口的實現變化影響來解決。然而,在某些時候,你須要改變接口,也不會影響服務的消費者,除了管理多個安全約束,多種傳輸,以及其餘方面的考慮。

SOA的服務無狀態或有狀態?

服務應該是無狀態的。它有一個無狀態的執行上下文,但它不會有中間狀態來等待一個事件或一個回調。狀態有關的數據的保留必定不能超出的服務的請求/響應。這是由於狀態管理消耗了大量的資源,這可能會影響服務的可重用 可伸縮性和可用性。

在RPC服務啓動後,服務一直保持沉睡狀態,只有在有請求時纔會喚醒,你能夠稱他爲無狀態或有狀態

在SOA中咱們是否須要從頭開始構建系統?

否。若是您須要集成現有系統爲業務服務,你只須要建立鬆耦合的包裝,包裝您的現有系統,並以一種通用的方式暴露功能給外部世界。

其實並不須要從新構建,只須要將每一個服務繼續分解,分類出對外與對內。

clipboard.png

什麼是服務和組件之間的區別?

服務組件來實現業務功能的邏輯組件分組。組件是爲實現服務這個目標的途徑。組件可使用Java,C#,C,但服務將以通用格式如像Web服務方式被暴露。

說的就是咱們經過RPC調用其餘服務 (thrift)

預告

看到這裏大概瞭解了SOA,這個時候我透露一個祕密,SOA其實還有另一個名字叫「服務治理」,是的,就是咱們一直在講的服務治理。下一章回到正題,講一下服務治理實現

PHP程序員如何簡單的開展服務治理架構(一)
https://segmentfault.com/a/11...

PHP程序員如何簡單的開展服務治理架構(二)
https://segmentfault.com/a/11...

本猿人寫了一個服務治理的框架
https://github.com/CrazyCodes...

相關文章
相關標籤/搜索