欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

怎樣入門Java分布式應用?

林玟書2年前13瀏覽0評論

我接觸分布式系統有很長的時間了,也算小有心得,下面從what,why,who,when和how幾方面來分別討論!

1,what:分布式是什么?相對于把所有服務,功能在一臺機器(或者一個集群)進行統一部署的集成系統,分布式采用了拆分的方式,將不同的服務部署在不同的節點上,彼此之間通過某種方式進行通信,對外表現出高度透明和內聚性,讓使用者感覺到是一個統一的整體!

2,why:為什么要使用分布式?①集成系統代碼耦合嚴重,難以擴展②而且隨著業務需求越來越多,就算是使用集群也很難達到高并發,低延遲的要求③集成系統對于單個服務器的要求很高,很容易出現內存溢出,CPU占滿的情況!使用分布式系統能將服務粒度變小,防止業務耦合,同時對于單個服務水平擴展更加容易!

3,who和when:什么場景該使用分布式呢?在單一系統無法滿足性能需求的時候(阿里巴巴雙十一幾十億的訪問可不是蓋的,是幾萬臺服務器堆起來的),在業務耦合太嚴重的時候,都應該考慮將集成系統拆成分布式系統,通常來說所有公司都可以使用分布式系統,但是涉及到更多的開發資源,更多的運維成本,所以小公司可以選擇使用!

4,how:怎么玩轉分布式?先來看下JAVA中有哪些涉及分布式的技術,首先需要拆分服務,所以需要微服務架構(springcloud和dubbo),服務之間相互調用使用rpc或者服務注冊與發現中心(eureka,zookeeper),如果服務異常了,需要進行熔斷,防止雪崩(hystrix等),服務之間要通信,所以需要消息隊列保證數據傳輸(redis,kafka,activemq等),數據庫性能跟不上,需要進行分庫分表(多臺數據庫分布在不同的服務器節點上),業務代碼連接分庫分表的數據庫需要通過中間件服務(mycat,sharding-jdbc等),高并發,秒殺系統,數據庫IO速度還是跟不上,就不得不引入緩存(redis,memcache等),數據庫之間或者和緩存之間不可避免的需要進行數據同步(canal等),單個服務如果還有性能問題,可以使用反向代理和負載均衡(nginx等)!

總之,分布式技術不是簡簡單單的一門技術,而是涉及到服務的拆分,服務的通信,服務的相互調用等一系列的高難度問題!

同時,由于系統是分布的,對于分布式事務(使用TCC,多階段提交等方式保證數據一致性),分布式緩存,分布式消息隊列,分布式鎖,數據一致性,消息丟失,全局唯一ID等問題都是迫切需要注意的難點!

具體的分布式實現不是三言兩語就能說清的,一定要在實際的項目中多加實踐,才能深切的掌握這項技術,更多在項目實操上遇到的問題,可以聯系筆者進行研究討論,更多技術分享,敬請關注。。。