微服務技術架構實戰(zhàn)_第1頁
微服務技術架構實戰(zhàn)_第2頁
微服務技術架構實戰(zhàn)_第3頁
微服務技術架構實戰(zhàn)_第4頁
微服務技術架構實戰(zhàn)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

微服務技術架構實戰(zhàn)背景系統(tǒng)架構持續(xù)集成/持續(xù)發(fā)布典型問題剖析未來規(guī)劃背景業(yè)務背景

巧房主要是為房產(chǎn)中介經(jīng)紀人提供一個安全、穩(wěn)定、高效、智能的SAAS平臺,主要涵蓋如下幾塊功能:房源管理、客源管理、交易管理、財務管理、人事OA、運營分析等功能。

目前服務4000多家房產(chǎn)中介公司,30W房產(chǎn)經(jīng)紀人,分布在全國20多個省份,100多個城市。當前有上海、廣州兩個IDC機房作為兩個分區(qū)并在阿里云上面搭建了第三個分區(qū)。單體架構房源管理財務管理客源管理人事OATomcat交易管理運營分析技術挑戰(zhàn)開發(fā)上線成本高周期長牽一發(fā)而動全身系統(tǒng)擴展、架構演進難度大成本高應用擴容成本高、效率低微服務系統(tǒng)架構技術選型Spring

Cloud

組件豐富,兼容性好

開發(fā)部署,簡單快速

系統(tǒng)組件,

擴展性強Kubernetes

管理維護docker,功能強大

超強的擴容、縮容能力

系統(tǒng)穩(wěn)定,容錯能力強基于Spring

Cloud和Kubernetes的微服務系統(tǒng)微服務1.0架構核心Eureka微服務2RibbonHystrixFeignEurekaDocker微服務1DockerKubernetes微服務1RibbonHystrixFeign調用微服務2Docker

最大限度地實現(xiàn)解耦,開發(fā)效率大大提升、部署上線簡單快速。

各個微服務高內聚,各司其職,接口設計更加輕量、合理。

降低了整個服務器的成本,擴容縮容簡單易用微服務1.0架構不足

服務上線與下線,調用服務需要一段時間后才從自己緩存的服務列表中移除。

在客戶端做負載均衡,對開發(fā)來說需要感知,且微服務有點重。

無法兼容與使用Kubernetes在微服務運維與監(jiān)控方面做的很好的一些功能,比如擴容縮容,灰度發(fā)布等等。微服務2.0架構核心

相對于之前的客戶端負載均衡來說,這是典型的服務端負載均衡,此時客戶端非常輕量,只做業(yè)務的處理。

使用Kubernetes代替Eureka做服務治理。

繼續(xù)使用Spring

Cloud中的其他組件,原來配置name來訪問其他組件的地方,全部換成使用url來訪問。Service1RibbonHystrixFeignhttp://service2/abc/defService2KubeDNSKubeProxyPod2FeignRibbonHystrixPod1FeignRibbonHystrix︵架構總覽圖︶客戶端配置中心(SpringCloudConfig)Kafka反向代理K8S平臺DNSNginx服務網(wǎng)關層網(wǎng)關1(zuul)網(wǎng)關2(zuul)服務BFF層服務BFF1服務BFF2底層服務層底層服務1底層服務2底層服務3底層服務4RabbitMQLTSESRedisKubeDNS+KubeProxyKubeDNS+KubeProxyKubeDNS+KubeProxyGit日志平臺監(jiān)控平臺NodeDockerFlannelKubeletKube-proxyNodeDockerFlannelKubeletKube-proxyMasterKube-dns Kube-proxy d Kube-

rdashboaApiserver Kube- Kube- -schedule controllermanagerDocker Etcd Flannel︵Kubernetes︶架構詳解~配置中心Config

Serverconfig-repocommon-onlineservice1-online.ymlonlineGitLabService1Service2調用獲取配置調用service2-online.ymlapplication.yml

SearchPath中定義兩個路徑,分別存放服務具體配置與公共配置。

優(yōu)先使用文件名與服務名完全一致的配置文件,如果沒有再去application*.yml中查找并使用找到的配置值。架構詳解~服務網(wǎng)關服務路由:配置時指定url,服務端負載均衡找到bffToken認證:Filter中調用用戶中心驗證tokenGatewayUserCenter服務路由Token認證gateway-online.ymlzuul:routes:service1bff-route:url:http://service1bff:8080path:

/api/service1bff/**架構詳解~服務調用(1)Service1

TestClientService2

TestFacadepublicinterfaceTest1Facade{publictestabc(request);}實現(xiàn)接口Service2

TestFacadeImplpublicclassTest1FacadeImpl{@RequestMapping(value="/testabc")publictestabc(request){//實現(xiàn)代碼}}調用接口@FeignClient(url="${feign.url.service1}")publicinterfaceTestClient

{@RequestMapping(value="/testabc")publictestabc();}架構詳解~服務調用(2)}Service1Service2

TestFacade@FeignClient(url="${feign.url.service1}")publicinterfaceTest1Facade{@RequestMapping(value="/testabc")publictestabc(request);Service2

TestFacadeImplpublicclassTest1FacadeImpl{publictestabc(request){//實現(xiàn)代碼}}依賴service2接口jar包實現(xiàn)接口調用service2接口架構詳解~服務調用(3)NexusService2-StubService2ImplService1依賴發(fā)布appliaction.ymlfeign:url:service1:

http://service2:8080獲取stub.jar調用Service1獲取配置架構詳解~日志處理(1)Storm釘釘發(fā)送報警ElasticSearchLogService查詢數(shù)據(jù)異常報警關鍵字服務負責人映射Kafka消費日志消費日志微服務1生成日志微服務2架構詳解~日志處理(2)持續(xù)集成/持續(xù)發(fā)布CICD

代碼分支管理DevelopFeature1Feature2MasterHotfix1.0Tag1.0.1Tag1.0.2︵CICD流程圖︶LocalIDE代碼靜態(tài)檢查GitlabGit

Commit消息校驗SonarQube增量代碼靜態(tài)檢查合并代碼Dev拉取代碼全量代碼靜態(tài)檢查單元測試DevTest單元測試全量代碼靜態(tài)檢查生成鏡像Test生成鏡像UAT拉取鏡像Online拉取鏡像DevTestUATOnline部署鏡像部署鏡像部署鏡像部署鏡像單元測試UATOnline觸發(fā)觸發(fā)KubernetesHarborJenkins典型問題分析服務拆分錯了怎么辦(1)服務1Start子服務Jvm內部調用子服務bFacade-stubFacadeServiceCacheDao子服務aFacade-stubFacadeServiceCacheDao服務拆分錯了怎么辦(2)服務1DaoServiceCache子服務aFacade-stubFacadeStart子服務服務bDaoServiceCacheFacadeFacade-stubFeign調用數(shù)據(jù)庫連接不夠問題(1)單體:20(連接數(shù))*10(服務實例數(shù))*1(服務數(shù)量)*100(公司數(shù))

=20000連接數(shù)微服務:10(連接數(shù))*5(服務實例數(shù))*50(微服務數(shù)量)*100(公司數(shù))=250000

連接數(shù)一臺數(shù)據(jù)庫服務器所能接受的連接數(shù)也就是幾萬,微服務架構下遠遠超過這個值。Common數(shù)據(jù)庫Service1.根據(jù)公司uuid獲取公司數(shù)據(jù)庫信息2.返回公司數(shù)據(jù)庫信息公司數(shù)據(jù)庫4.訪問公司庫3.獲取數(shù)據(jù)源數(shù)據(jù)庫連接不夠問題(2)微服務:100(連接數(shù))*5(服務實例數(shù))*1(數(shù)據(jù)庫服務器)

*50(微服務數(shù)量)=25000

連接數(shù)Common數(shù)據(jù)庫Service1.根據(jù)公司uuid獲取公司數(shù)據(jù)庫信息2.返回公司數(shù)據(jù)庫信息公司數(shù)據(jù)庫修改SQL,添加“usecompanyDB”3.以數(shù)據(jù)庫serverId為

4.Mybatis攔截器來key,創(chuàng)建數(shù)據(jù)源5.訪問數(shù)據(jù)庫數(shù)據(jù)庫連接不夠問題(3)USE

dbName;connection.setCatalog(dbName)com.microsoft.sqlserver.jdbc.SQLServerException:Thepreparedstatementhandle6isnotvalidinthis

context.

Please verify

thatcurrentdatabase,userdefaultschema,andANSI_NULLSandQUOTED_IDENTIFIERsetoptionsarenotchangedsincethehandleis

prepared.unabletocreatenewnative

threadCaused

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論