springcloud(一)基礎概念及Rest微服務構建案例工程模塊

一,微服務

1,什麼是微服務?

微服務化的核心就是將傳統的一站式應用,根據業務拆分成一個一個的服務,徹底
地去耦合,每一個微服務提供單個業務功能的服務,一個服務做一件事,
從技術角度看就是一種小而獨立的處理過程,類似進程概念,能夠自行單獨啓動
或銷燬,擁有自己獨立的數據庫。

2,微服務與微服務架構

【微服務】
強調的是服務的大小,它關注的是某一個點,是具體解決某一個問題/提供落地對應服務的一個服務應用,狹意的看,可以看作是一個個微服務工程/或者Module
【微服務架構】
微服務架構是⼀種架構模式,它提倡將單⼀應⽤程序劃分成⼀組⼩的服務,服務之間互相協調、互相配合,爲⽤戶提供最終價值。每個服務運⾏在其獨⽴的進程中,服務與服務間採⽤輕量級的通信機制互相協作(通常是基於HTTP協議的RESTful API)。每個服務都圍繞着具體業務進⾏構建,並且能夠被獨⽴的部署到⽣產環境、類⽣產環境等。另外,應當儘量避免統⼀的、集中式的服務管理機制,對具體的⼀個服務⽽⾔,應根據業務上下⽂,選擇合適的語⾔、⼯具對其進⾏構建。

3,微服務的優缺點

【優點】
每個服務足夠內聚,足夠小,代碼容易理解這樣能聚焦一個指定的業務功能或業務需求
開發簡單、開發效率提高,一個服務可能就是專一的只幹一件事。
微服務能夠被小團隊單獨開發,這個小團隊是2到5人的開發人員組成。
微服務是鬆耦合的,是有功能意義的服務,無論是在開發階段或部署階段都是獨立的。
微服務能使用不同的語言開發。
易於和第三方集成,微服務允許容易且靈活的方式集成自動部署,通過持續集成工具,如Jenkins, Hudson, bamboo 。
微服務易於被一個開發人員理解,修改和維護,這樣小團隊能夠更關注自己的工作成果。無需通過合作才能體現價值。
微服務允許你利用融合最新技術。
微服務只是業務邏輯的代碼,不會和HTML,CSS 或其他界面組件混合。
每個微服務都有自己的存儲能力,可以有自己的數據庫。也可以有統一數據庫。

【缺點】
開發人員要處理分佈式系統的複雜性
多服務運維難度,隨着服務的增加,運維的壓力也在增大
系統部署依賴
服務間通信成本
數據一致性
系統集成測試
性能監控……

4,微服務的技術棧

微服務條目 落地技術
服務開發 Springboot、Spring、SpringMVC
服務配置與管理 Netflix公司的Archaius、阿里的Diamond等
服務註冊與發現 Eureka、Consul、Zookeeper等
服務調用 Rest、RPC、gRPC
服務熔斷器 Hystrix、Envoy等
負載均衡 Ribbon、Nginx等
服務接口調用 Feign等
消息隊列 Kafka、RabbitMQ、ActiveMQ等
服務配置中心管理 SpringCloudConfig、Chef等
服務路由(API網關) Zuul等
服務監控 Zabbix、Nagios、Metrics、Spectator等
全鏈路追蹤 Zipkin,Brave、Dapper等
服務部署 Docker、OpenStack、Kubernetes等
數據流操作開發包 SpringCloud Stream(封裝與Redis,Rabbit、Kafka等發送接收消息)
事件消息總線 Spring Cloud Bus

二,springcloud

1,什麼是 springcloud ?

SpringCloud,基於SpringBoot提供了一套微服務解決方案,包括服務註冊與發現,配置中心,全鏈路監控,服務網關,負載均衡,熔斷器等組件,除了基於NetFlix的開源組件做高度抽象封裝之外,還有一些選型中立的開源組件。

2,SpringCloud 和 SpringBoot 是什麼關係

SpringBoot專注於快速方便的開發單個個體微服務。

SpringCloud是關注全局的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合並管理起來,爲各個微服務之間提供,配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分佈式會話等等集成服務

SpringBoot可以離開SpringCloud獨立使用開發項目,但是SpringCloud離不開SpringBoot,屬於依賴的關係.

SpringBoot專注於快速、方便的開發單個微服務個體,SpringCloud關注全局的服務治理框架。

三,Rest微服務構建案例工程模塊

Maven的分包分模塊架構

一個Project帶着多個Module子模塊
microservice父工程(Project)下初次帶着3個子模塊(Module)
–microservice-api【封裝的整體entity/接口/公共配置等】
–microservice-provider-dept-8001【微服務落地的服務提供者】
–microservice-consumer-dept-80【微服務調用的客戶端使用】

四,參考資料

https://martinfowler.com/articles/microservices.html
http://www.chilangedu.com/sectionq/1910610451/E45F6ED4FAB77F58

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章