大公司網(wǎng)站java網(wǎng)站都一般采用什么架構(gòu)?
時間:2023-11-06 03:06:01 | 來源:網(wǎng)站運營
時間:2023-11-06 03:06:01 來源:網(wǎng)站運營
大公司網(wǎng)站java網(wǎng)站都一般采用什么架構(gòu)?:在某sns網(wǎng)站打工2年,說說我的看法。
1.web框架
rose(
Qieqie/paoding-rose · GitHub),基于spring mvc,采用"約定優(yōu)先于配置"的思想,編寫起來還是挺快的。
2.數(shù)據(jù)庫
jade(
Qieqie/paoding-rose · GitHub),實現(xiàn)了數(shù)據(jù)庫讀寫分離,分庫分表等,一句簡單的sql就可以實現(xiàn)對數(shù)據(jù)庫的需求
@SQL("SELECT id,name,price FROM book WHERE id = :id")public Book select(@SQLParam("id") long id);
采用了BeanPropertyRowMapper實現(xiàn)了部分orm,但是寫多了還是挺麻煩的o(╯□╰)o
3.rpc架構(gòu)
第一代rpc框架網(wǎng)絡(luò)層采用netty,序列化層是json,基于http自定義協(xié)議,服務(wù)器容器則是自己定制化的tomcat。主要遇到的問題就是java和c++之間的調(diào)用。
第二代框架就是完全基于thrift,thrift解決了上面的語言兼容性,還有一個好處就是提供了一站式解決方案,神馬序列化啊,神馬server啊(ps:我們采用的是THsHaServer),都不用你操心。
4.數(shù)據(jù)平臺和處理
沒在這個組呆過,只是了解一些?;竞透鞔蠊镜拇髷?shù)據(jù)處理一樣,離線計算hive/pig,流式計算storm/Presto,內(nèi)存計算spark,以此來滿足各個業(yè)務(wù)對數(shù)據(jù)的不同需求。
5.消息中間件
我們組當(dāng)時使用kafka,主要用于log統(tǒng)計和一些不太重要的異步處理。kafka的優(yōu)點就是吞吐量很高,但是不能保證消息可靠性消費,比如消息消費失敗直接丟棄或者不保證消息唯一性消費,這些可以在消費端自己做一些定制化處理。
沒有說到的地方待補充。