一,微服務
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