使用一套小服務來開發單個應用的方式,每一個服務運行在獨立的進程裏,通常採用輕量級的通信機制互聯,而且它們能夠經過自動化的方式部署。java
一、單一職責
二、輕量級通信
三、隔離性
四、業務數據的獨立性(有本身的數據)
五、技術多樣性spring
一、互聯網行業的快速發展
二、敏捷開發,精溢方法深刻人心
三、容器技術的成熟--使微服務的落地成爲可能服務器
一、獨立性
二、敏捷性
三、技術棧靈活
四、高效團隊框架
一、額外的工做
須要確認如何拆分業務,微服務的拆分粒度
二、數據一致性
三、溝通成本異步
一、從通信模式角度考慮:
一對一?一對多?
同步?異步?
分佈式
二、從通信協議角度考慮
REST API
RPC
MQspring-boot
如何選擇RPC框架?
一、I/O、線程調試模型
二、序列化方式(JSON/二進制)
三、多語言支持
四、服務治理微服務
經常使用RPC框架:Dubbo/Dubbox(噹噹)/Thrift(A)/Motan(新浪微博)/gRPC(谷歌)
工具
傳統服務的發現
線程
微服務的發現:
一、客戶端的發現
二、服務端的發現
服務編排:部署、更新、擴容
流行的服務編排工具:Mesos/Docker Swarm/Kubernetes
Spring Boot的使命:化繁爲簡
Spring Boot核心功能:獨立運行、內嵌Web服務器、簡化配置、準生產的應用監控
Spring Boot與微服務的關係:Java的潤滑劑
Spring Cloud的使命:簡化Java的分佈式系統
一系列框架的集合
簡化java的分佈式系統
Spring Boot 封裝
Java的微服務
側重功能,側重開發
Spring Cloud核心組件
Netflix Eureka
Netflix Ribbon
Netflix Hystrix
Netflix Zuul
Spring Cloud Config
Spring Boot 意在簡化,是一種開發、配置風格 Spring Cloud意在簡化分佈式,是功能的集合,風格統一