案例第一題:
MVC架構包含:視圖、控制器、模型;
視圖(View):視圖是用戶看到并與之交互的界面。視圖面向用戶顯示相關的數據,并能接收用戶的輸入數據,但是它并不能進行任何實際的業務處理;
控制器(Controller):控制器接受用戶的輸入并調用模型和視圖去完成用戶的需求。該部分是用戶界面與Model的接口。一方面它解釋來自于視圖的輸入,將其解釋成為系統能夠理解的對象,同時它也識別用戶操作,并將其解釋為對模型特定方法的調用;另一方面,它處理來自于模型的事件和模型邏輯執行的結果,調用適當的視圖為用戶提供反饋;
模型(Model):模型是應用程序的主體部分。模型表示業務數據和業務邏輯。一個模型能為多個視圖提供數據;
用戶請求:JSP、Servelt、JavaBean、Service、Dao、數據庫;
EJB中的Bean分為三種類型:Session Bean、Entity Bean和Message-Drivern Bean
Session Bean:職責是維護一個會話;
Entity Bean:職責是維護一個持久穩固的數據;
Message-Driven Bean:職責是異步接收消息;
案例第二題:
上報數據:MQTT
實時數據:AMQP
API數據調用:HTTP
MQTT:發布、訂閱、CS架構、長連接
邊緣計算的概念:
邊緣計算也稱為邊緣處理,是一種將服務器放置在設備附近的網絡技術。優點包括響應時間快、網絡安全性更高和降低IT成本等等;
響應時間快:繞過集中式和數據中心位置,公司可以更快、更可靠的實時或者接近實時處理數據。
網絡安全性更高:對于企業來說,向網絡中心添加數以千計的聯網傳感器和設備的安全風險是一個真正的問題。邊緣計算允許在企業本地處理數據并且離線存儲,有助于降低這種風險。這減少了通過網絡傳輸的數據,有助于企業減少安全威脅。
降低IT成本:借助邊緣計算,企業可以通過本地而非云中處理數據來優化其IT支出。除了最小化公司的云處理和存儲成本,邊緣計算通過收集數據的位置或者附近清楚不必要的數據來降低傳輸成本;
案例第三題(嵌入式題目):直接跳過
案例第四題:
1. 兩階段提交協議2PC經常用來管理分布式事務:
2PC包含協調者和參與者兩類站點,只有協調者才擁有提交或者撤銷事務的決定權,而其他參與者各自負責本地數據庫中執行寫操作,并向協調者提出撤銷或提交事務的意向。
2PC分為兩個階段:表決階段和執行階段;
表決階段:目的是形成一個共同的決定。協調者給所有參與者發送“”準備提交“的消息,并進入等待狀態,所有參與者給與回復“建議提交”或“建議撤銷”。只要有一個節點選擇撤銷,則整體事務撤銷,否則,執行該事務。
執行階段:目的是實現這個協調者的決定。根據協調者的指令,參與者或者提交事務,或者撤銷事務,并給協調者發送確認消息。
2.兩階段提交不能解決當前問題:
分布式數據遵循CAP原則,會在一定程度上犧牲一致性。
大多數NOSql數據庫并不支持2PC。
分布式兩階段提交協議2PC一般針對的對象在邏輯上是一個整體,對某一個整體事務需要在多個物理節點上執行,進行表決和執行,對于多個數據庫的不同服務并不是很合適。
支付的幾個狀態:未支付、支付服務、支付信息、已支付。
3.使用本地事務發布事件:
由一個獨立進程來發布事件。具體來說,就是在存儲業務實體狀態的數據庫中,使用一個事件表來充當消息隊列。應用啟動一個本地數據庫事務,更新業務實體的狀態,在事件表中插入一個事件,并提交該事務。一個獨立的消息發布線程或進程查詢該事件表,將事件發布到消息代理,并標注該事件為已發布。
缺點:
由于開發者必須牢記發布事件,因此有很大可能出錯,此外這一方法對于某些使用NoSql數據庫的應用是個挑戰,因為NoSql本身交易和查詢能力有限。
案例第五題:
1.去中心化:區塊鏈采用了分布式計算和存儲,不存在中心化的硬件或管理機構,因此獲得任意節點的權利和義務都是均等的。
2.開放性:區塊鏈的系統是一個開放性的,除了交易各方的私有信息被加密外,區塊鏈的數據對所有人都是公開的。
3.分布式交易賬本:分布式交易賬本使交易在全網不止一份,而是有多分,當有人想篡改賬本時,非常難以實現,所以能解決數據可信度的問題。
4.公私鑰簽名:使用非對稱加密機制,做簽名,以驗證有人以及防止偽造的效果,這種技術也極難被破解,能驗證持有人自然能一定程度解決數據可信度的問題。