04.26 Java面試通關要點彙總集之微服務篇參考答案

微服務篇

微服務

前後端分離是如何做的

在前後端分離架構中,後端只需要負責按照約定的數據格式向前端提供可調用的API服務即可。前後端之間通過HTTP請求進行交互,前端獲取到數據後,進行頁面的組裝和渲染,最終返回給瀏覽器。

| 後端 | 前端 | |

| ------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |

| 服務器 | 瀏覽器 | |

| JAVA | NodeJS | JS + HTML + CSS |

| 服務層提供數據接口維持數據穩定封裝業務邏輯 | 跑在服務器上的JS轉發數據,串接服務路由設計,控制邏輯渲染頁面,體驗優化更多的可能 | 跑在瀏覽器上的JSCSS、JS加載與運行DOM操作任何的前端框架與工具共用模版、路由 |

參考自: https://www.jianshu.com/p/fc0c63404cc7 和 http://2014.jsconf.cn/slides/herman-taobaoweb/index.html#/69

微服務哪些框架

Dubbo,是阿里巴巴服務化治理的核心框架,並被廣泛應用於阿里巴巴集團的各成員站點。阿里巴巴近幾年對開源社區的貢獻不論在國內還是國外都是引人注目的,比如:JStorm捐贈給Apache並加入Apache基金會等,為中國互聯網人爭足了面子,使得阿里巴巴在國人眼裡已經從電商升級為一家科技公司了。

Spring Cloud,從命名我們就可以知道,它是Spring Source的產物,Spring社區的強大背書可以說是Java企業界最有影響力的組織了,除了Spring Source之外,還有Pivotal和Netfix是其強大的後盾與技術輸出。其中Netflix開源的整套微服務架構套件是Spring Cloud的核心。

參考自:http://blog.didispace.com/microservice-framework/

你怎麼理解 RPC 框架

請參考: https://www.zhihu.com/question/25536695

說說 RPC 的實現原理

首先需要有處理網絡連接通訊的模塊,負責連接建立、管理和消息的傳輸。其次需要有編解碼的模塊,因為網絡通訊都是傳輸的字節碼,需要將我們使用的對象序列化和反序列化。剩下的就是客戶端和服務器端的部分,服務器端暴露要開放的服務接口,客戶調用服務接口的一個代理實現,這個代理實現負責收集數據、編碼並傳輸給服務器然後等待結果返回。

參考自: https://liuzhengyang.github.io/2016/12/16/rpc-principle/

說說 Dubbo 的實現原理

dubbo作為rpc框架,實現的效果就是調用遠程的方法就像在本地調用一樣。如何做到呢?就是本地有對遠程方法的描述,包括方法名、參數、返回值,在dubbo中是遠程和本地使用同樣的接口;然後呢,要有對網絡通信的封裝,要對調用方來說通信細節是完全不可見的,網絡通信要做的就是將調用方法的屬性通過一定的協議(簡單來說就是消息格式)傳遞到服務端;服務端按照協議解析出調用的信息;執行相應的方法;在將方法的返回值通過協議傳遞給客戶端;客戶端再解析;在調用方式上又可以分為同步調用和異步調用;簡單來說基本就這個過程

鏈接:https://www.zhihu.com/question/52133065/answer/129153953

你怎麼理解 RESTful

http://www.cnblogs.com/artech/p/3506553.html

說說如何設計一個良好的 API

https://juejin.im/entry/59b8d34c6fb9a00a4455dd04

如何理解 RESTful API 的冪等性

http://blog.720ui.com/2016/restful_idempotent/

如何保證接口的冪等性

http://www.spring4all.com/article/914

說說 CAP 定理、 BASE 理論

http://my.oschina.net/foodon/blog/372703

怎麼考慮數據一致性問題

https://opentalk.upyun.com/310.html

說說最終一致性的實現方案

http://www.cnblogs.com/soundcode/p/5590710.html

你怎麼看待微服務

http://dockone.io/article/394

微服務與 SOA 的區別

http://dockone.io/article/2399

如何拆分服務

http://dockone.io/article/2516

微服務如何進行數據庫管理

http://www.uml.org.cn/wfw/201705271.asp

如何應對微服務的鏈式調用異常

http://blog.720ui.com/2017/msa_design/?utm_source=tuicool&utm_medium=referral

對於快速追蹤與定位問題

依賴日誌

微服務的安全

http://dockone.io/article/1507

分佈式

談談業務中使用分佈式的場景

https://segmentfault.com/q/1010000006095431/a-1020000006114658

Session 分佈式方案

https://yq.aliyun.com/articles/387723

分佈式鎖的場景

https://yq.aliyun.com/articles/465311

分佈是鎖的實現方案

https://yq.aliyun.com/articles/60663

分佈式事務

http://www.hollischuang.com/archives/681

集群與負載均衡的算法與實現

https://yq.aliyun.com/articles/218895

說說分庫與分表設計

http://blog.720ui.com/2017/mysql_core_08_multi_db_table/

分庫與分錶帶來的分佈式困境與應對之策

http://blog.720ui.com/2017/mysql_core_09_multi_db_table2/

安全問題

安全要素與 STRIDE 威脅

http://blog.720ui.com/2017/security_stride/

防範常見的 Web 攻擊

http://blog.720ui.com/2016/security_web/

服務端通信安全攻防

http://blog.720ui.com/2016/security_data_transmission/

HTTPS 原理剖析

http://blog.720ui.com/2016/security_https/

HTTPS 降級攻擊

http://blog.jobbole.com/106792/

https://www.jianshu.com/p/cda95dff698c

基於角色的訪問控制

https://www.douban.com/note/259930498/

基於數據的訪問控制

https://www.zhihu.com/question/64888533

性能優化

性能指標有哪些

https://www.douban.com/note/168911628/

如何發現性能瓶頸

http://blog.csdn.net/shan9liang/article/details/24035001

性能調優的常見手段

http://blog.csdn.net/jyonghu003/article/details/70055832

說說你在項目中如何進行性能調優

https://www.jianshu.com/p/08d029607b9a