垂直系統(tǒng)VS微服務(wù)
垂直系統(tǒng)的弊端:
1眶熬、 隨著業(yè)務(wù)量的增加蒙秒,復(fù)雜性逐漸變高勃黍、代碼耦合太深,不利于開發(fā)和維護(hù)
2晕讲、技術(shù)債務(wù)逐漸積累加劇覆获,很多代碼都是為了解決問題兒開發(fā)
3马澈、阻礙新技術(shù)的引入和使用,只能依賴于原有舊的技術(shù)框架開發(fā)
4弄息、無法進(jìn)行高可用痊班、負(fù)載均衡、水平擴展和合理的伸縮
5摹量、部署的服務(wù)速度會隨著代碼累積逐漸變慢涤伐、性能降低、隨著數(shù)據(jù)量增大而下降
微服務(wù)框架
一個微服務(wù)要有清晰的業(yè)務(wù)邊界缨称、高度的模塊化服務(wù)化解耦凝果。每個模塊都完成自己的功能,并且每個模塊都可以靈活的使用自己本身所需要的技術(shù)睦尽,他們是分而治之器净,獨立部署運行,又可以相互進(jìn)行數(shù)據(jù)通信当凡,可以使用Rest方式掌动,也可以使用rpc方式,更可以使用消息中間件進(jìn)行消息總線處理宁玫。
微服務(wù)的優(yōu)缺點
優(yōu)點:
1、擴展性強柑晒、便于開放和維護(hù)欧瘪,局部修改簡單
2、啟動較快匙赞、性能佛掖、壓力測試更有針對性。調(diào)節(jié)cpu涌庭、內(nèi)存芥被、磁盤IO性能等參數(shù)指標(biāo)方便
3、技術(shù)棧不受限制坐榆,可以使用任何技術(shù)框架拴魄、也可以選擇其它編程語言實現(xiàn)
4、可伸縮席镀、擴展性匹中、高可用性都可控可調(diào)
缺點:
1、運維要求比較高豪诲,需要分布式監(jiān)控顶捷、自動化部署測試等
2、分布式的復(fù)雜性屎篱、邏輯復(fù)雜服赎、以及分布式事務(wù)等問題
3葵蒂、接口調(diào)試、模塊與模塊之間聯(lián)調(diào)測試比較復(fù)雜
Spring Cloud 相關(guān)組件
Spring Cloud Config:配置管理開發(fā)工具包重虑,可以讓你把配置放到遠(yuǎn)程服務(wù)器践付,目前支持本地存儲、Git以及Subversion嚎尤。
Spring Cloud Bus:事件荔仁、消息總線,用于在集群(例如芽死,配置變化事件)中傳播狀態(tài)變化乏梁,可與Spring Cloud Config聯(lián)合實現(xiàn)熱部署。
Spring Cloud Netflix:針對多種Netflix組件提供的開發(fā)工具包关贵,其中包括Eureka遇骑、Hystrix、Zuul揖曾、Archaius等落萎。
Netflix Eureka:云端負(fù)載均衡,一個基于 REST 的服務(wù)炭剪,用于定位服務(wù)练链,以實現(xiàn)云端的負(fù)載均衡和中間層服務(wù)器的故障轉(zhuǎn)移。
Netflix Hystrix:容錯管理工具奴拦,旨在通過控制服務(wù)和第三方庫的節(jié)點,從而對延遲和故障提供更強大的容錯能力媒鼓。
Netflix Zuul:邊緣服務(wù)工具,是提供動態(tài)路由错妖,監(jiān)控绿鸣,彈性,安全等的邊緣服務(wù)暂氯。
Netflix Archaius:配置管理API潮模,包含一系列配置管理API,提供動態(tài)類型化屬性痴施、線程安全配置操作擎厢、輪詢框架、回調(diào)機制等功能晾剖。
Spring Cloud for Cloud Foundry:通過Oauth2協(xié)議綁定服務(wù)到CloudFoundry锉矢,CloudFoundry是VMware推出的開源PaaS云平臺养铸。
Spring Cloud Sleuth:日志收集工具包遗淳,封裝了Dapper,Zipkin和HTrace操作。
Spring Cloud Data Flow:大數(shù)據(jù)操作工具猛计,通過命令行方式操作數(shù)據(jù)流循头。
Spring Cloud Security:安全工具包绵估,為你的應(yīng)用程序添加安全控制炎疆,主要是指OAuth2。
Spring Cloud Consul:封裝了Consul操作国裳,consul是一個服務(wù)發(fā)現(xiàn)與配置工具形入,與Docker容器可以無縫集成。
Spring Cloud Zookeeper:操作Zookeeper的工具包缝左,用于使用zookeeper方式的服務(wù)注冊和發(fā)現(xiàn)亿遂。
Spring Cloud Stream:數(shù)據(jù)流操作開發(fā)包,封裝了與Redis,Rabbit渺杉、Kafka等發(fā)送接收消息蛇数。
Spring Cloud CLI:基于 Spring Boot CLI,可以讓你以命令行方式快速建立云組件是越。