真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

微服務(wù)技術(shù)選型之路

微服務(wù)技術(shù)選型之路
本文以筆者個人經(jīng)歷講述關(guān)于微服務(wù)方面的技術(shù)選型和相關(guān)知識點。微服務(wù)模式的項目從初建到上線部署應(yīng)用,每一個環(huán)節(jié)都會涉及到相當(dāng)多的技術(shù)細(xì)節(jié)(上線后的性能調(diào)優(yōu)更需要)。本文著重介紹一套微服務(wù)搭建流程中面臨的一些技術(shù)選型,戰(zhàn)略性的技術(shù)方案及相關(guān)技術(shù)的簡要介紹,不做每一項技術(shù)的深入說明。

成都創(chuàng)新互聯(lián)公司專業(yè)提供成都主機(jī)托管四川主機(jī)托管成都服務(wù)器托管四川服務(wù)器托管,支持按月付款!我們的承諾:貴族品質(zhì)、平民價格,機(jī)房位于中國電信/網(wǎng)通/移動機(jī)房,四川電信機(jī)房托管服務(wù)有保障!

?微服務(wù)簡介

微服務(wù)是指開發(fā)一個單個小型的但有業(yè)務(wù)功能的服務(wù),每個服務(wù)都有自己的處理和輕量通訊機(jī)制,可以部署在單個或多個服務(wù)器上。微服務(wù)也指一種種松耦合的、有一定的有界上下文的面向服務(wù)架構(gòu)。

微服務(wù)是系統(tǒng)架構(gòu)上的一種設(shè)計風(fēng)格,主旨是將一個原本獨立的系統(tǒng)拆分成多個小型服務(wù),這些小型服務(wù)都在各自獨立的進(jìn)程中運(yùn)行,服務(wù)之間通過基于HTTP/HTTPS協(xié)議的RESTful API進(jìn)行通信協(xié)作,也可以通過RPC協(xié)議進(jìn)行通信協(xié)作。被拆分成的每一個小型服務(wù)都圍繞著系統(tǒng)中一些耦合度較高的業(yè)務(wù)功能進(jìn)行構(gòu)建,并且每個服務(wù)都維護(hù)著自身的數(shù)據(jù)存儲,業(yè)務(wù)開發(fā),自動化測試案例以及獨立部署機(jī)制。由于有了輕量級的通信協(xié)作基礎(chǔ),所以這些微服務(wù)可以使用不同的語言來編寫。

微服務(wù)的優(yōu)點

  • 每個微服務(wù)都很小,這樣能夠聚焦一個指定的業(yè)務(wù)功能或業(yè)務(wù)需求。
  • 微服務(wù)能夠被小團(tuán)隊單獨開發(fā),這個小團(tuán)隊是2到5人的開發(fā)人員組成。
  • 微服務(wù)是松耦合的,是有功能意義的服務(wù),無論是在開發(fā)階段或部署階段都是獨立的。
  • 微服務(wù)能使用不同的語言開發(fā),如Java、Python、PHP、C#等。
  • 微服務(wù)允許容易且靈活的方式集成自動部署,通過持續(xù)集成工具,如Jenkins, Travis CI等工具。
  • 一個團(tuán)隊的新成員能夠更快投入生產(chǎn)。
  • 微服務(wù)易于被一個開發(fā)人員理解,修改和維護(hù),這樣小團(tuán)隊能夠更關(guān)注自己的工作成果。無需通過合作才能體現(xiàn)價值。
  • 微服務(wù)方便融合最新技術(shù)。
  • 微服務(wù)只是業(yè)務(wù)邏輯的代碼,不會和HTML,CSS 或其他界面組件混合。
  • 微服務(wù)能夠即時被要求擴(kuò)展。
  • 微服務(wù)能部署中低端配置的服務(wù)器上。
  • 易于和第三方應(yīng)用系統(tǒng)集成。
  • 每個微服務(wù)都有自己的存儲能力,可以有自己的數(shù)據(jù)庫,也可以有統(tǒng)一數(shù)據(jù)庫。

?微服務(wù)技術(shù)選型

前幾年較為火的微服務(wù)技術(shù)有阿里的Dubbo方案。后面又出現(xiàn)了Spring體系下的微服務(wù)方案。本文主要介紹Spring體系下的微服務(wù)技術(shù)選型方案。

微服務(wù)技術(shù)選型之路

構(gòu)建一套微服務(wù)最基本的是需要搭建網(wǎng)關(guān),注冊中心,開發(fā)具體實現(xiàn)業(yè)務(wù)功能的服務(wù)。對于各個微服務(wù)之間的通信,可通過Feign方案處理。具體搭建一套微服務(wù)技術(shù)選型可參考如下方案:

微服務(wù)技術(shù)選型之路

不同的技術(shù)選擇應(yīng)用的場景不同:

  • 網(wǎng)關(guān):若整個公司業(yè)務(wù)都基于java開發(fā),可以直接使用Spring Gateway做網(wǎng)關(guān)。若還存在其他的開發(fā)語言,也可選擇kong網(wǎng)關(guān)模式。
  • 注冊中心:基于java開發(fā),Spring體系下可直接用 Spring Eureka。若還存在其他語言編寫的服務(wù),可使用Consul。
  • 微服務(wù)搭建:各自語言都可以搭建。若采用java開發(fā),可參考Spring boot方案搭建微服務(wù)。
  • 持續(xù)集成的方案,三種都可以。若基于java開發(fā),第一種最為傳統(tǒng),運(yùn)維人員或開發(fā)人員工作更多,需編寫啟動腳本,使用jdk命令啟動java程序。建議使用第二種方案。第三種方案操作更為簡便,但需用阿里云的產(chǎn)品。
  • Spring Boot 項目構(gòu)建:采用Spring Boot模式搭建微服務(wù)項目時,對于Maven項目pom.xml配置文件的使用需注意pom文件配置單項目模式和項目聚合模式的區(qū)別。對于網(wǎng)關(guān),注冊中心可采用單項目模式。但在搭建真正業(yè)務(wù)的服務(wù)時,建議采用父子級項目聚合的方式。筆者最初做微服務(wù)開發(fā)時,采用了單項目的模式,當(dāng)開發(fā)了多個業(yè)務(wù)的微服務(wù)后,單項目模式在引用依賴項目版本,管理項目時極為不便。

微服務(wù)相關(guān)知識點

本文針對Spring體系下微服務(wù)常用的幾個知識點做簡要說明,具體細(xì)節(jié),原理,如何應(yīng)用可通過關(guān)鍵詞搜索詳細(xì)了解。

Spring Boot

Spring Boot是由 Pivotal團(tuán)隊提供的全新框架,其設(shè)計目的是用來簡化新 Spring應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進(jìn)行配置,從而使開發(fā)人員不再需要定義樣板化的配置。

Spring Boot的核心思想就是約定大于配置,一切自動完成。采用 Spring Boot可以大大的簡化開發(fā)模式,通過組件的模式集成常用的框架。

Spring Cloud

Spring Cloud是一系列框架的有序集合。它利用 Spring Boot的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),如服務(wù)發(fā)現(xiàn)注冊、配置中心、消息總線線、負(fù)載均衠、斷路器、數(shù)據(jù)監(jiān)控等,都可以用 Spring Boot的開發(fā)風(fēng)格做到一鍵啟動和部署。 Spring并沒有重復(fù)制造輪子,它只是將目前各家公司開發(fā)的比較成熟、經(jīng)得起實際考驗的服務(wù)框架組臺起來,通過 Spring Boot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實現(xiàn)原理,最終給開發(fā)者留出了一套簡單易懂、易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包。

微服務(wù)是可以獨立部署、水平擴(kuò)展、獨立訪問(或者有獨立的數(shù)據(jù)庫)的服務(wù)單元, Spring Cloud就是這些微服務(wù)的大管家,采用了微服務(wù)這種架構(gòu)之后,項目的數(shù)量會非常多, Spring Cloud做為大管家就需要提供各種方案來維護(hù)整個生態(tài)。

Spring Cloud就是一套分布式服務(wù)治理的框架,既然它是一套服務(wù)治理的框架,那么它本身不會提供具體功能性的操作,更專注于服務(wù)之間的通訊、熔斷、監(jiān)控等。因此就需要很多的組件來支持一套功能。

Spring Cloud的子項目,大致可分成兩類,一類是對現(xiàn)有成熟框架”Spring Boot化”的封裝和抽象,也是數(shù)量最多的項目;第二類是開發(fā)了一部分分布式系統(tǒng)的基礎(chǔ)設(shè)施的實現(xiàn),如Spring Cloud Stream扮演的就是kafka, ActiveMQ這樣的角色。

?Spring Cloud Eureka

Spring Cloud Eureka是Spring Cloud Netflix項目下的服務(wù)治理模塊。而Spring Cloud Netflix項目是Spring Cloud的子項目之一,主要內(nèi)容是對Netflix公司一系列開源產(chǎn)品的包裝,它為Spring Boot應(yīng)用提供了自配置的Netflix OSS整合。通過一些簡單的注解,開發(fā)者就可以快速的在應(yīng)用中配置一下常用模塊并構(gòu)建龐大的分布式系統(tǒng)。它主要提供的模塊包括:服務(wù)發(fā)現(xiàn)(Eureka),斷路器(Hystrix),智能路由(Zuul),客戶端負(fù)載均衡(Ribbon)等。

Spring Cloud Gateway

Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技術(shù)開發(fā)的網(wǎng)關(guān),Spring Cloud Gateway旨在為微服務(wù)架構(gòu)提供一種簡單微服務(wù)技術(shù)選型之路而有效的統(tǒng)一的API路由管理方式。Spring Cloud Gateway作為Spring Cloud生態(tài)系中的網(wǎng)關(guān),目標(biāo)是替代Netflix ZUUL,其不僅提供統(tǒng)一的路由方式,并且基于Filter鏈的方式提供了網(wǎng)關(guān)基本的功能,例如:安全,監(jiān)控/埋點,和限流等。

Spring Cloud Feign

Feign是一個偽客戶端,即它不做任何的請求處理。Feign通過處理注解生成request,從而實現(xiàn)簡化HTTP API開發(fā)的目的,即開發(fā)人員可以使用注解的方式定制request api模板,在發(fā)送http request請求之前,feign通過處理注解的方式替換掉request模板中的參數(shù),這種實現(xiàn)方式顯得更為直接、可理解。

Feign封裝了Http調(diào)用流程,更適合面向接口化的編程習(xí)慣。在服務(wù)調(diào)用的場景中,我們經(jīng)常調(diào)用基于Http協(xié)議的服務(wù),而我們經(jīng)常使用到的框架可能有HttpURLConnection、Apache HttpComponnets、OkHttp3 、Netty等等,這些框架在基于自身的專注點提供了自身特性。而從角色劃分上來看,他們的職能是一致的提供Http調(diào)用服務(wù)。


文末彩蛋

針對于上面所涉及到的知識點我總結(jié)出了有1到5年開發(fā)經(jīng)驗的程序員在面試中涉及到的絕大部分架構(gòu)面試題及答案做成了文檔和架構(gòu)視頻資料免費(fèi)分享給大家(包括Dubbo、redis、Netty、zookeeper、Spring cloud、分布式、高并發(fā)等架構(gòu)技術(shù)資料),希望能幫助到您面試前的復(fù)習(xí)且找到一個好的工作,也節(jié)省大家在網(wǎng)上搜索資料的時間來學(xué)習(xí),也可以關(guān)注我一下以后會有更多干貨分享。

資料獲取方式 QQ群搜索“708-701-457” 即可免費(fèi)領(lǐng)取

微服務(wù)技術(shù)選型之路
微服務(wù)技術(shù)選型之路
微服務(wù)技術(shù)選型之路


分享標(biāo)題:微服務(wù)技術(shù)選型之路
文章地址:http://weahome.cn/article/pjpgcc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部