簡介
AUTOBEAR的微服誤架構(gòu)的個(gè)人學(xué)習(xí)筆記喷面,本筆記隨時(shí)增添星瘾,用來鞏固知識(shí),查缺補(bǔ)漏惧辈。
幾種架構(gòu)對(duì)比
單體應(yīng)用架構(gòu):
優(yōu)點(diǎn):開發(fā)簡單琳状、適合小型應(yīng)用
缺點(diǎn):不易拓展、維護(hù)盒齿、代碼高度耦合
垂直應(yīng)用架構(gòu):
優(yōu)點(diǎn):解決高并發(fā)問題念逞、針對(duì)不同模塊優(yōu)化、方便水平擴(kuò)展边翁、容錯(cuò)
缺點(diǎn):系統(tǒng)間相互獨(dú)立翎承、重復(fù)開發(fā)工作
分布式架構(gòu)(展示層、ESB總線/DUBBO框架符匾、服務(wù)層叨咖、數(shù)據(jù)源):
優(yōu)點(diǎn):易拓展、維護(hù)、代碼可復(fù)用度高甸各、代碼低耦合
缺點(diǎn):服務(wù)的評(píng)估垛贤、治理、調(diào)度比較復(fù)雜趣倾。
SOA:
優(yōu)點(diǎn):抽取公共的共能為服務(wù)聘惦,提高開發(fā)效率,對(duì)不同的服務(wù)進(jìn)行集群化部署解決系統(tǒng)壓力誊酌,系統(tǒng)低耦合部凑。
缺點(diǎn):服務(wù)的粒度較大、服務(wù)提供方與調(diào)用方接口耦合度高碧浊。
微服務(wù)架構(gòu)(客戶端、服務(wù)網(wǎng)關(guān)瘟仿、服務(wù)層【粒度小】箱锐、數(shù)據(jù)源):
優(yōu)點(diǎn):服務(wù)原子化拆分,微服務(wù)的獨(dú)立打包劳较、部署驹止、升級(jí)、團(tuán)隊(duì)的交付周期將縮短观蜗、運(yùn)維成本降低臊恋。
微服誤遵循單一原則,采用輕量傳輸協(xié)議墓捻。
缺點(diǎn):微服務(wù)過多抖仅,治理成本高,不利于系統(tǒng)維護(hù)砖第。
分布式系統(tǒng)開發(fā)的技術(shù)成本高(容錯(cuò)撤卢、分布式事務(wù)等)
核心概念:
1.遠(yuǎn)程調(diào)用技術(shù)
RPC(Remote procedure call):屏蔽底層的傳輸方式做到透明、簡單梧兼,TCP(序列化放吩、網(wǎng)絡(luò)傳輸TCP協(xié)議、反序列化)羽杰,適合SOA架構(gòu)
RESTful:HTTP協(xié)議渡紫,性能略低、靈活度高考赛,適合微服務(wù)架構(gòu)惕澎。
2.CAP原理
C:一致性(多節(jié)點(diǎn)數(shù)據(jù)一致)
A:可用性(保持服務(wù)可用、多節(jié)點(diǎn))
P:分區(qū)容忍性(是否可以將數(shù)據(jù)存到多個(gè)地方)
AC:傳統(tǒng)物理數(shù)據(jù)庫欲虚、AP:短暫允許數(shù)據(jù)不一致集灌,如NOSQL、CP:放棄可用性,如zookeeper欣喧。
常見的微服務(wù)框架:
SpringCloud腌零、ServiceComb、ZeroC ICE
SpringCloud:一系列系統(tǒng)框架的有序集合唆阿、利用Spring Boot的開發(fā)便利性益涧、巧妙簡化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā)(服務(wù)發(fā)現(xiàn)注冊(cè)、配置中心驯鳖、消息總線闲询、負(fù)載均衡、斷路器浅辙、數(shù)據(jù)監(jiān)控)扭弧。
我使用過的一套開發(fā)集成平臺(tái)工具
OTM:jeesite-Java快速開發(fā)框架,基于經(jīng)典技術(shù)組合(Spring MVC记舆、Apache Shiro鸽捻、MyBatis、Bootstrap UI)泽腮,包括核心模塊如:組織機(jī)構(gòu)御蒲、角色用戶、權(quán)限授權(quán)诊赊、數(shù)據(jù)權(quán)限厚满、內(nèi)容管理、工作流等碧磅。雖說很長時(shí)間沒有大的更新了碘箍,但它的架構(gòu)精良易于擴(kuò)展深受大家喜愛,依然是中小企業(yè)的首選续崖,它的功能設(shè)計(jì)敲街、底層架構(gòu)也非常具有參考意義、是學(xué)習(xí)入門的首選严望。
JeeSite本身是以Spring Framework為核心容器多艇,Spring MVC為模型視圖控制器,MyBatis為數(shù)據(jù)訪問層像吻,Apache Shiro為權(quán)限授權(quán)層峻黍,Ehcahe對(duì)常用數(shù)據(jù)進(jìn)行緩存,Activit為工作流引擎拨匆。
亂七八糟
JPA是Java Persistence API的簡稱姆涩,中文名Java持久層API,是JDK 5.0注解或XML描述對(duì)象-關(guān)系表的映射關(guān)系惭每,并將運(yùn)行期實(shí)體對(duì)象持久化到數(shù)據(jù)庫中骨饿。
SSM框架:Spring+SpringMVC+mybatis
RestTemplate(類似有urlconnection亏栈、httpclient、okhttp)
API網(wǎng)關(guān)宏赘,請(qǐng)求路徑+負(fù)載均衡+配置統(tǒng)一管理+鏈路追蹤
請(qǐng)求路徑:注冊(cè)中心(服務(wù)發(fā)現(xiàn)绒北、服務(wù)配置、服務(wù)健康檢測)察署,Eureka(Eureka Server)