-
高并發(fā)如何解決
1.服務(wù)器集群
服務(wù)器集群就是指將很多服務(wù)器集中起來一起進(jìn)行同一種服務(wù),在客戶端看來就像是只有一個(gè)服務(wù)器。集群可以利用多個(gè)計(jì)算機(jī)進(jìn)行并行計(jì)算從而獲得很高的計(jì)算速度,也可以用多個(gè)計(jì)算機(jī)做備份,從而使得任何一個(gè)機(jī)器壞了整個(gè)系統(tǒng)還是能正常運(yùn)行。
2.緩存
對于經(jīng)常訪問,使用的數(shù)據(jù),將它放入服務(wù)器的緩存中,下次查詢或調(diào)用的時(shí)候回先從緩存中進(jìn)行訪問。
瀏覽器緩存是指當(dāng)我們使用瀏覽器訪問一些網(wǎng)站頁面或者h(yuǎn)ttp服務(wù)時(shí),根據(jù)服務(wù)端返回的緩存設(shè)置響應(yīng)頭將響應(yīng)內(nèi)容緩存到瀏覽器,下次可以直接使用緩存內(nèi)容或者僅需要去服務(wù)端驗(yàn)證內(nèi)容是否過期即可。這樣的好處可以減少瀏覽器和服務(wù)端之間來回傳輸?shù)臄?shù)據(jù)量,節(jié)省帶寬提升性能。
3.微服務(wù)
- 一些列的獨(dú)立的服務(wù)共同組成系統(tǒng)
- 單獨(dú)部署,跑在自己的進(jìn)程里
- 每個(gè)服務(wù)為獨(dú)立的業(yè)務(wù)開發(fā)
- 分布式的管理
簡單來說, 微服務(wù)的目的是有效的拆分應(yīng)用,實(shí)現(xiàn)敏捷開發(fā)和部署 。
服務(wù)之間如何通信?
1.同步調(diào)用:REST、RPC
2.異步消息調(diào)用
4.數(shù)據(jù)庫優(yōu)化
1.優(yōu)化數(shù)據(jù)庫的緩存
2.用EXPLAIN使你的SELECT查詢更加清晰
3.利用LIMIT 1取得唯一行
4.索引中的檢索字段
5.保證連接的索引是相同的類型
6.不要使用BY RAND()命令
7.*盡量避免SELECT 命令。
5.改變硬件條件
6.HTML頁面靜態(tài)化
7.使用synchronizedMap和ConcurrentHashMap并發(fā)框架
單例模式
特點(diǎn):一是某個(gè)類只能有一個(gè)實(shí)例;二是它必須自行創(chuàng)建這個(gè)實(shí)例;三是它必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。
優(yōu)點(diǎn):
一、實(shí)例控制
單例模式會(huì)阻止其他對象實(shí)例化其自己的單例對象的副本,從而確保所有對象都訪問唯一實(shí)例。
二、靈活性
因?yàn)轭惪刂屏藢?shí)例化過程,所以類可以靈活更改實(shí)例化過程。
缺點(diǎn):
一、開銷
雖然數(shù)量很少,但如果每次對象請求引用時(shí)都要檢查是否存在類的實(shí)例,將仍然需要一些開銷??梢酝ㄟ^使用靜態(tài)初始化解決此問題。
二、可能的開發(fā)混淆
使用單例對象(尤其在類庫中定義的對象)時(shí),開發(fā)人員必須記住自己不能使用new關(guān)鍵字實(shí)例化對象。因?yàn)榭赡軣o法訪問庫源代碼,因此應(yīng)用程序開發(fā)人員可能會(huì)意外發(fā)現(xiàn)自己無法直接實(shí)例化此類。
三、對象生存期
不能解決刪除單個(gè)對象的問題。在提供內(nèi)存管理的語言中(例如基于.NET Framework的語言),只有單例類能夠?qū)е聦?shí)例被取消分配,因?yàn)樗瑢υ搶?shí)例的私有引用。在某些語言中(如 C++),其他類可以刪除對象實(shí)例,但這樣會(huì)導(dǎo)致單例類中出現(xiàn)懸浮引用。多線程
1.如何實(shí)現(xiàn)多線程。
(1).繼承Thred類,重寫run(),調(diào)用start()。
(2).實(shí)現(xiàn)Runnable接口,重寫run(),調(diào)用start()。
實(shí)現(xiàn)Runnable接口比繼承Thread類所具有的優(yōu)勢:
1):適合多個(gè)相同的程序代碼的線程去處理同一個(gè)資源
2):可以避免java中的單繼承的限制
3):增加程序的健壯性,代碼可以被多個(gè)線程共享,代碼和數(shù)據(jù)獨(dú)立