1. 程式人生 > >Spring Cloud與微服務學習總結(1)——Spring Cloud及微服務入門

Spring Cloud與微服務學習總結(1)——Spring Cloud及微服務入門

一、Spring Cloud是什麼鬼?

 Spring Cloud為開發者提供了快速建立一些常見的模式在分散式系統的工具(如配置管理、服務發現、斷路器、智慧路由、微代理,控制匯流排,一次性令牌,全球鎖,領導選擇,分散式會話叢集狀態)。分散式系統之間的協調導致鍋爐板模式,開發人員使用Spring Cloud可以迅速地建立服務和應用程式來實現這些模式。這些模式在任何分散式環境下都能很好執行,其中包括開發人員使用的膝上型電腦,裸機資料中心,以及託管平臺,如Cloud Foundry。中文文件:https://springcloud.cc/


官方文件:http://projects.spring.io/spring-cloud/


二、談Spring Cloud撇不開微服務

微服務並不神祕,只是在網際網路技術發展過程中的一個產物,整個架構系統隨著客戶端的多樣性,服務越來越多,devops的發展而產生的架構變種。
許多公司,通過採用微處理結構模式解決單體應用的問題,分解的服務之間互相連線提供支援。
每個微服務都是六邊形應用,都有自己的業務邏輯和介面卡。服務之間通過API互相通訊,提供介面供客戶端使用。每個例項可能是一個雲VM或者是Docker容器。
之前的web應用拆分成一系列簡單的服務應用。拆分之後可以對不同使用者,不同裝置,不同場景進行自行部署。
微服務之間通過REST API或者MQ非同步方式通訊,供外網使用的API,通過Gateway來傳遞資訊。
微服務的拆分,不像傳統多個服務共享一個數據庫,微服務架構每個服務都有自己的資料庫,每種服務都可以有自己適合的資料庫型別。
微服務好處
分解了單體應用提供多個服務的複雜性問題,拆分之後每個服務都有一個用RPC或是MQ或是API定義的邊界。由於傳統單體應用沒有清晰的邊界,存在開發,理解,維護,部署的複雜問題;
每個服務都可以有單獨的團隊維護開發,開發者客戶選擇自己擅長和合適的技術;
每個服務都可以獨立部署,開發者不需要協調因其他服務呼叫,部署對本服務的影響。加快部署速度,更好的執行AB測試。持續部署變為可能。
每個服務都可以獨立擴充套件。
微服務不足
需要考慮和關心更多服務之間呼叫的問題。
需要考慮多個服務的編排和依賴關係,包括開發和部署。
多個服務的配置,部署,擴充套件,監控。
微服務的特徵
每個服務僅僅對單個業務負責,這個業務也是這個服務的完整容量;
每個微服務都可以獨立部署,不需依賴其他服務的相關資源,如資料庫,記憶體快取等;
輕量級的通訊協議,如REST,AMQP等;
服務具有可代替性,每個服務原則上都可以被不同的開發語言,開發框架進行技術實現,替換後不影響原有微服務對外提供的功能;
每個服務擁有自己獨立的資料儲存;
每個微服務由小的團隊維護,服務以業務單元進行拆分;
服務之間可通過組成聚合服務對外提供較粗粒度的服務功能;
微服務名詞
Gateway:為客戶端提供API管理功能,負責負載均衡,快取,訪問控制,API計費監控等任務,可通過Eureka或者NGINX實現;
服務註冊於發現模組;
斷路器;
微服務選型
Dubbo,DubboX(不再維護);
Spring Cloud(整合框架);
Motan;
Thrift,gRPC(算不上框架);
本次主要使用Spring Cloud;
基礎框架選擇 Spring Cloud和Dubbo:
Dubbo:
國內影響力較大,實現了服務治理的基礎,但是完成一個完備的微服務架構,還需要在各環節去擴充套件和完善以保證叢集健康,文件較穩定。
Spring Cloud:
國外影響大,社群活躍度領先,將成熟框架融為一體,繼承了Spring Boot的簡單配置,快速開發,部署輕鬆特點,更新較快,文件有差異。
日誌監控
由Docker通過Syslog日誌驅動將日誌寫入Logstash,參照ELK解決方案。
Devops
使用Docker作為微服務交付標準組件。
整合Docker
通過Consul整合Docker。


相關推薦

Spring Cloud服務學習總結1——Spring Cloud服務入門

一、Spring Cloud是什麼鬼? Spring Cloud為開發者提供了快速建立一些常見的模式在分散式系統的工具(如配置管理、服務發現、斷路器、智慧路由、微代理,控制匯流排,一次性令牌,全球鎖,領

Spring Boot學習總結1——Spring Boot入門

摘要:Spring Boots是為了幫助開發人員很容易的創建出獨立執行和產品級別的基於 Spring 框架的應用。 從 Spring Boot 專案名稱中的 Boot 可以看出來,Spring

Quartz學習總結1——Spring整合Quartz框架

一、Quartz簡介 Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源專案,它可以與J2EE與J2SE應用程式相結合也可以單獨使用。Quartz可以用來建立簡單或為執行十個,百個,甚至是好幾萬個Jobs這樣複雜的程式。J

Spring-Batch學習總結1——重要概念,環境搭建,名詞解釋,第一個項目異常處理

img truct 設定 uil sna sta col key services Spring-batch框架學習總結(1)一.初識Spring-batch框架:1.核心名詞解釋:Job:是Spring-batch框架的核心概念,它包含了批處理的所有操作Step:每一個J

事務學習總結2——spring事務

一、spring事務:       spring針對事務的解決方案,在基礎的隔離性基礎上,又增加了事務傳播行為、只讀事務、事務超時的機制。 二、事務傳播:       其實就是兩個事務傳播。     &n

服務學習筆記1--springboot

Spring Boot HelloWorld 瀏覽器傳送 hello 請求,伺服器接受請求並處理,響應 Hello World 字串; 1.  建立一個 maven 工程;(jar) 2.  匯入 spring boot 相關的依賴 <parent> <

Spring Boot學習總結14——Spring Boot常見面試題彙總

1、什麼是 Spring Boot? Spring Boot 是 Spring 開源組織下的子專案,是 Spring 元件一站式解決方案,主要是簡化了使用 Spring 的難度,簡省了繁重的配置,提供了各種啟動器,開發者能快速上手。 2、為什麼要用 Spring Boot

Spring學習總結27——Spring常用註解再總結

1、宣告Bean的註解 @Component  元件,沒有明確的角色。 @Service  在業務邏輯層使用(service層)。 @Repository  在資料訪問層使用(dao層)。 @Controller  在展現層使用,控制器的宣告(Controller層)

Spring學習總結21——Spring整合阿里巴巴資料庫連線池DruidDataSource配置及其常見問題彙總

一、參考配置如下    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-          

Spring MVC學習總結13——Spring MVC整合Swagger時文件無法排序問題

新增排序屬性: window.swaggerUi = new SwaggerUi({      ...      apisSorter: "alpha", // can also be a funct

Spring學習總結23——Spring Framework 5.0 新特性

Spring Framework 5.0 是自 2013年12月版本 4 釋出之後 Spring Framework 的第一個主發行版。Spring Framework 專案的領導人 Juergen

服務學習筆記1——使用MagicOnion實現gRPC

tco cred time sharp ref 服務端 eve rpo 實現接口 1.什麽是gRPC 官方文檔:https://grpc.io/docs/guides/index.html 2.什麽是MagicOnion MagicOnion開源地址:https://git

Spring Boot學習總結2——Spring Boot整合Jsp

怎麼使用jsp上面起了疑問,查閱了多方資料,找到過其他人的部落格的描述,也找到了spring在github上的給出的例子,看完後稍微改動後成功 整合jsp,於是決定將整合過程記載下來。 無論使用

Jenkins學習總結1——Jenkins詳細安裝構建部署使用教程

  Jenkins是一個開源軟體專案,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。Jenkins是基於Java開發的一種持續整合工具,用於監控持續重複的工作,功能包括: 1、持續的軟體版本釋出/測試專案。 2、監控外部呼叫執行的工作。 本文使用的Linux

ActiveMQ學習總結——spring整合ActiveMQ

本文有兩篇參考文獻,因此有兩個例項,專案結構如下圖所示:3.例項1資訊傳送者:HelloSender.javapackage edu.sjtu.erplab.springactivemq;import javax.jms.JMSException;import javax.jms.Session;import

springboot學習總結Spring security配置

class turn tor light 重寫 name brush 學習 authent (一)配置類 Spring security的配置和Spring MVC的配置類似,只需在一個配置類上註解@EnableWebSecurity(Springboot項目可以不用),

springboot學習總結Spring security原理淺談

學習 security uwp manage adg aac dsi sin aci 認證是由 AuthenticationManager 來管理的,但是真正進行認證的是 AuthenticationManager 中定義的 AuthenticationProvider。A

MEF學習總結1---總體架構

attr 總結 技術分享 dir target get gre round 管理 用了很久的MEF框架來做依賴註入,最近想把它的原理和機構總結一下,主要包括如下幾個方面: 1. 總體架構 2. .Net Composition Primitive 3. Attribu

phthon學習總結1

pytho 保留字 大小寫 特殊字符 int 開頭 字母數 操作 定義 1、print("hello word") 2、變量、常量:   變量是存儲信息、方便調用、修改操作   常量固定不變的量,python用字母大寫區分。無常量。 命名規則: 1)字母數字下劃線組成。 2

Redis學習總結1——Redis記憶體資料庫詳細教程

1.Redis是什麼 2.redis的作者何許人也 3.誰在使用redis 4.學會安裝redis 5.學會啟動redis 6.使用redis客戶端 7.redis資料結構 – 簡介 8.redis資料結構 – strings 9.redis資料結構 – lists 10.redis