八種架構(gòu)設(shè)計方案 智能化系統(tǒng)工程架構(gòu)的設(shè)計包括?
智能化系統(tǒng)工程架構(gòu)的設(shè)計包括?智能系統(tǒng)工程建筑設(shè)計的全過程和建筑設(shè)計一樣,有三個階段:方案設(shè)計、初步設(shè)計、施工圖設(shè)計。智能系統(tǒng)設(shè)計和建筑設(shè)計同時進行是最好的做法。什么是主機架構(gòu)?主機架構(gòu)是一系列相關(guān)的
智能化系統(tǒng)工程架構(gòu)的設(shè)計包括?
智能系統(tǒng)工程建筑設(shè)計的全過程和建筑設(shè)計一樣,有三個階段:方案設(shè)計、初步設(shè)計、施工圖設(shè)計。智能系統(tǒng)設(shè)計和建筑設(shè)計同時進行是最好的做法。
什么是主機架構(gòu)?
主機架構(gòu)是一系列相關(guān)的抽象模式,用于指導大型軟件系統(tǒng)各方面的設(shè)計。軟件架構(gòu)是系統(tǒng)的草圖。
主機架構(gòu)描述的對象是直接構(gòu)成系統(tǒng)的抽象組件。
組件之間的連接清晰且相對細致地描述了組件之間的通信。在實現(xiàn)階段,這些抽象組件被細化成實際的組件,比如一個特定的類或?qū)ο蟆?/p>
在面向?qū)ο箢I(lǐng)域,組件之間的連接通常是通過接口來實現(xiàn)的。主機架構(gòu)是構(gòu)建計算機軟件實踐的基礎(chǔ)。
就像架構(gòu)師將建筑項目的設(shè)計原則和目標設(shè)定為繪圖員畫圖的基礎(chǔ)一樣,軟件架構(gòu)師或系統(tǒng)架構(gòu)師將軟件架構(gòu)陳述為實際系統(tǒng)設(shè)計方案的基礎(chǔ),以滿足不同客戶的需求。
你平時主要使用什么Java開發(fā)框架?
以我們的項目為例。
我們的項目是純后臺服務項目,即沒有前端頁面,只對外提供服務;項目基于Spring Boot,引入spring-boot-starter-web,直接公開接口,消息使用的JSON,很少接口是從舊系統(tǒng)遷移過來的,所以為了讓調(diào)用方盡可能小的修改,保留了XML消息;在正式的生產(chǎn)環(huán)境中,內(nèi)置的Tomcat也是用;集成了Swagger,在線自動生成界面文檔。
ORM框架選擇MyBatis。由于項目中的查詢大多是單表查詢,且查詢條件相對固定,所以標注做出的SQL語句是直接綁定的。
因為項目不僅使用了關(guān)系型數(shù)據(jù)庫,而且經(jīng)過處理關(guān)聯(lián)后在MongoDB中保存了更多的數(shù)據(jù),所以項目也使用了Spring數(shù)據(jù)MongoDB。我們的MongoDB已經(jīng)部署了副本集,使用Spring數(shù)據(jù)MongoDB,通過簡單的配置就可以完成對多個mongob的訪問。如果其中一個MongoDB掛了,對服務沒有影響,所以我們可以在擴展MongoDB時在線進行(擴展內(nèi)存和CPU時MongoDB需要停止)。
在與一些系統(tǒng)的交互中使用RabbitMQ,只要將spring-boot-starter-amqp引入Spring Boot,其實可以很容易地與RabbitMQ集成。生產(chǎn)者和消費者都很方便。
因為是純接口服務。為了減輕數(shù)據(jù)庫的壓力,我們根據(jù)業(yè)務場景(數(shù)據(jù)變化不頻繁,業(yè)務場景對實時性要求不是很高)將部分接口的結(jié)果直接緩存到Redis中。在整合Redis的時候,我們前后嘗試了兩種
Spring Boot項目,最簡單的與Redis集成可以直接使用@Cacheable注釋完成,但是后來因為設(shè)置緩存超時不夠靈活,我們后來改成了第二種方案;
使用RedisTemplate,可以完成Redis上的大部分操作。
我會繼續(xù)分享我對Java開發(fā)、架構(gòu)設(shè)計、程序員職業(yè)發(fā)展等方面的看法,希望得到大家的關(guān)注。