微服務學習之微服務概述

一、微服務:

將一個完整的單體應用拆分成不同的服務,每個服務可以單獨的開發、部署、擴展。每個單獨的微服務之間用網絡通信協議進行通信。實現高內聚,低耦合。便於後期的維護。

三、微服務好處:

微服務一般是根據業務劃分的,更加符合單一職責原理,更好的避免了業務邏輯的高耦合,由於每個服務是單獨部署的所以可以很快的發現系統瓶頸,解決性能問題。

四、微服務目前存在的問題:

1,微服務是是相當於傳統單體服務而言的,那麼,如何拆分微服務是我們面臨的一個大問題,如何把控微服務拆分的粒度也是一個很大的難題。

2,在微服務的開發過程中協調溝通增加了難度,在單體應用中所有的代碼都在一個應用中開發人員可以很快的發現已經存在的接口和公共代碼並加以重複使用。但是在微服務中由於每個服務都是單獨部署的,有可能都是不同的人員、團隊開發,有可能重複開發已經存在的接口,重複業務邏輯加大了系統的複雜度。和後期維護難度維護成本。

3、微服務拆分後部署產生了難度。拆分微服務後傳統的人工部署已經不再實用,自動化部署、監控、運維迫在眉睫對運維人員的能力要求大大提高。

4、由於微服務是分佈式部署的所以如何管理微服務、如何減少網絡延遲,提高微服務間的調用效率是不可避免的一個難題。

5、微服務獨立運行,在數據共享、分佈式事務控制、併發協同方面也是非常困難的。

6、單體系統的服務鑑權很容易實現,但是在微服務中系統權限控制鑑別也變的不易了。

7、部署的服務多了自然成本也就上去了,對於一些小型企業也就不太實用了。

五、微服務目前主流的一些框架、技術

微服務條目  落地技術

服務開發 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、Specatator等

全鏈路追蹤     Zipkin、Brave、Dapper等

  服務部署   Docker、OpenStack、Kubernetes等

數據流操作開發包 SpringCloud Stream(封裝與Redis,Rabbit,Kafka等發送接收消息)

事件消息總線  SpringCloud Bus 

微服務中SpringCloud與Dubbo的區別

Dubbo Spring

服務註冊中心 Zookeeper Spring Cloud Netfilx Eureka

服務調用方式 RPC  REST API 

服務監控 Dubbo-monitor Spring Boot Admin 

斷路器 不完善  Spring Cloud Netflix Hystrix

服務網關  無  Spring Cloud Netflix Zuul

分佈式配置  無  Spring Cloud Config

服務跟蹤  無  Spring Cloud Sleuth

消息總線  無  Spring Cloud Bus 

數據流  無  Spring Cloud Stream

批量任務  無  Spring Cloud Task

六、微服務的技術要點

微服務的構建

微服務的治理

微服務的服務註冊

微服務的服務發現

客戶端負載均衡策略

接口調用

熔斷機制

全局配置

網關控制

微服務的全全局監控

微服務的權限控制鑑權

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