微服務篇
微服務
前後端分離是如何做的
在前後端分離架構中,後端只需要負責按照約定的數據格式向前端提供可調用的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
閱讀更多 java架構之路 的文章