1.什么叫分布式存皂?
分布式就是一個(gè)大系統(tǒng)拆分成多個(gè)子系統(tǒng)寻拂,然后通過遠(yuǎn)程調(diào)用技術(shù)通信程奠,通過服務(wù)治理,然后整合了多個(gè)中間件的東西祭钉。
分布式:一個(gè)系統(tǒng)的業(yè)務(wù)拆分多個(gè)子業(yè)務(wù)子系統(tǒng)瞄沙,子系統(tǒng)分別部署在不同的服務(wù)器上(節(jié)點(diǎn)),這些節(jié)點(diǎn)是互通的慌核,相互操作會(huì)有協(xié)同距境。
集群:相同的一個(gè)系統(tǒng),部署在多個(gè)服務(wù)器上垮卓。
2.為什么要有分布式垫桂?
1)只有當(dāng)單個(gè)節(jié)點(diǎn)的處理能力無法滿足日益增長(zhǎng)的計(jì)算、存儲(chǔ)任務(wù)的時(shí)候粟按,且硬件的提升(加內(nèi)存诬滩、加磁盤、使用更好的CPU)高昂到得不償失的時(shí)候灭将,應(yīng)用程序也不能進(jìn)一步優(yōu)化的時(shí)候疼鸟,我們才需要考慮分布式系統(tǒng)。
2)提高整體架構(gòu)的吞吐量庙曙,服務(wù)更多的并發(fā)和流量空镜。大流量處理,通過集群技術(shù)把大規(guī)模并發(fā)請(qǐng)求的負(fù)載分散到不同的機(jī)器上捌朴。
3)提高系統(tǒng)的穩(wěn)定性姑裂,讓系統(tǒng)的可用性更高。關(guān)鍵業(yè)務(wù)保護(hù)男旗。提高后臺(tái)服務(wù)的可用性舶斧,把故障隔離起來阻止多米諾骨牌效應(yīng)(雪崩效應(yīng)),如果流量過大察皇,需要對(duì)業(yè)務(wù)降級(jí)茴厉,以保護(hù)關(guān)鍵業(yè)務(wù)。
3.分布式常見的Java后臺(tái)技術(shù)棧有哪些什荣,分別應(yīng)用在什么場(chǎng)景矾缓?
1)nginx:作用是反向代理和負(fù)載均衡。
2)rpc(遠(yuǎn)程過程調(diào)用):常見的rpc框架:輕量級(jí)的hessian, 阿里dubbo(當(dāng)當(dāng)dubbox),? 新浪Motan, apache的Thrift稻爬,google的grpc, 百度的brpc, 騰訊的tars嗜闻。
3)消息中間件
Kafka是LinkedIn開源的分布式發(fā)布-訂閱消息系統(tǒng),目前歸屬于Apache定級(jí)項(xiàng)目桅锄。Kafka主要特點(diǎn)是基于Pull的模式來處理消息消費(fèi)琉雳,追求高吞吐量样眠,一開始的目的就是用于日志收集和傳輸。0.8版本開始支持復(fù)制翠肘,不支持事務(wù)檐束,對(duì)消息的重復(fù)、丟失束倍、錯(cuò)誤沒有嚴(yán)格要求被丧,適合產(chǎn)生大量數(shù)據(jù)的互聯(lián)網(wǎng)服務(wù)的數(shù)據(jù)收集業(yè)務(wù)。
RabbitMQ是使用Erlang語言開發(fā)的開源消息隊(duì)列系統(tǒng)绪妹,基于AMQP協(xié)議來實(shí)現(xiàn)甥桂。AMQP的主要特征是面向消息、隊(duì)列邮旷、路由(包括點(diǎn)對(duì)點(diǎn)和發(fā)布/訂閱)黄选、可靠性、安全廊移。AMQP協(xié)議更多用在企業(yè)系統(tǒng)內(nèi)糕簿,對(duì)數(shù)據(jù)一致性探入、穩(wěn)定性和可靠性要求很高的場(chǎng)景狡孔,對(duì)性能和吞吐量的要求還在其次。
RocketMQ是阿里開源的消息中間件蜂嗽,它是純Java開發(fā)苗膝,具有高吞吐量、高可用性植旧、適合大規(guī)模分布式系統(tǒng)應(yīng)用的特點(diǎn)辱揭。RocketMQ思路起源于Kafka,但并不是Kafka的一個(gè)Copy病附,它對(duì)消息的可靠傳輸及事務(wù)性做了優(yōu)化问窃,目前在阿里集團(tuán)被廣泛應(yīng)用于交易、充值完沪、流計(jì)算域庇、消息推送、日志流式處理覆积、binglog分發(fā)等場(chǎng)景听皿。
4)NoSQL
NoSQL是所有非關(guān)系型數(shù)據(jù)庫的統(tǒng)稱,在分布式系統(tǒng)中用到很多宽档,主要用來提高QPS(query per second)尉姨。如redis、mongoDB吗冤。
參考:https://www.cnblogs.com/dudu0614/p/8821811.html
? ? ? ? ? ? http://www.reibang.com/p/1e86f615a187