1、springbootjavascript
1.什麼是springbootjava
用來簡化spring應用的初始搭建以及開發過程 使用特定的方式來進行配置(properties或yml文件) web
建立獨立的spring引用程序 main方法運行redis
嵌入的Tomcat 無需部署war文件算法
簡化maven配置spring
自動配置spring添加對應功能starter自動化配置mongodb
2.springboot經常使用的starter有哪些數據庫
spring-boot-starter-web 嵌入tomcat和web開發須要servlet與jsp支持tomcat
spring-boot-starter-data-jpa 數據庫支持安全
spring-boot-starter-data-redis redis數據庫支持
spring-boot-starter-data-solr solr支持
mybatis-spring-boot-starter 第三方的mybatis集成starter
springboot自動配置的原理
在spring程序main方法中 添加@SpringBootApplication或者@EnableAutoConfiguration
會自動去maven中讀取每一個starter中的spring.factories文件 該文件裏配置了全部須要被建立spring容器中的bean
3.springboot讀取配置文件的方式
springboot默認讀取配置文件爲application.properties或者是application.yml
4.springboot集成mybatis的過程
添加mybatis的starter maven依賴
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency>
在mybatis的接口中 添加@Mapper註解
在application.yml配置數據源信息
5.springboot如何添加【修改代碼】自動重啓功能
添加開發者工具集=====spring-boot-devtools
2、mongodb
1.MySQL和MongoDB之間最基本的區別是什麼?
關係型數據庫與非關係型數據庫的區別,即數據存儲結構的不一樣。
2.MongoDB的特色是什麼?
(1)面向文檔(2)高性能(3)高可用(4)易擴展(5)豐富的查詢語言
3. MongoDB支持存儲過程嗎?若是支持的話,怎麼用?
MongoDB支持存儲過程,它是javascript寫的,保存在db.system.js表中。
4.如何理解MongoDB中的GridFS機制,MongoDB爲什麼使用GridFS來存儲文件?
GridFS是一種將大型文件存儲在MongoDB中的文件規範。使用GridFS能夠將大文件分隔成多個小文檔存放,這樣咱們可以有效的保存大文檔,並且解決了BSON對象有限制的問題。
5.爲何MongoDB的數據文件很大?
MongoDB採用的預分配空間的方式來防止文件碎片。
6.當更新一個正在被遷移的塊(Chunk)上的文檔時會發生什麼?
更新操做會當即發生在舊的塊(Chunk)上,而後更改纔會在全部權轉移前複製到新的分片上。
7.MongoDB在A:{B,C}上創建索引,查詢A:{B,C}和A:{C,B}都會使用索引嗎?
不會,只會在A:{B,C}上使用索引。
8.若是一個分片(Shard)中止或很慢的時候,發起一個查詢會怎樣?
若是一個分片中止了,除非查詢設置了「Partial」選項,不然查詢會返回一個錯誤。若是一個分片響應很慢,MongoDB會等待它的響應。
9.mongodb數據庫的總體結構
鍵值對–》文檔–》集合–》數據庫
3、zookeeper
Zookeeper是什麼框架
分佈式的、開源的分佈式應用程序協調服務,它爲分佈式應用提供一致性服務的軟件,包括:配置維護、域名服務、分佈式同步、組服務等。
Zookeeper主要是作註冊中心用。基於Dubbo框架開發的提供者、消費者都向Zookeeper註冊本身的URL,消費者還能拿到並訂閱提供者的註冊URL,以便在後續程序的執行中去調用提供者。而提供者發生了變更,也會經過Zookeeper向訂閱的消費者發送通知。
Paxos算法& Zookeeper使用協議
Paxos算法是分佈式選舉算法,Zookeeper使用的 ZAB協議(Zookeeper原子廣播),兩者有相同的地方,好比都有一個Leader,用來協調N個Follower的運行;Leader要等待超半數的Follower作出正確反饋以後才進行提案;兩者都有一個值來表明Leader的週期。
不一樣的地方在於:
ZAB用來構建高可用的分佈式數據主備系統(Zookeeper),Paxos是用來構建分佈式一致性狀態機系統。
Zookeeper有哪幾種節點類型
持久:建立以後一直存在,除非有刪除操做,建立節點的客戶端會話失效也不影響此節點。
持久順序:跟持久同樣,就是父節點在建立下一級子節點的時候,記錄每一個子節點建立的前後順序,會給每一個子節點名加上一個數字後綴。
臨時:建立客戶端會話失效(注意是會話失效,不是鏈接斷了),節點也就沒了。不能建子節點。
臨時順序:不用解釋了吧。
部署方式?集羣中的機器角色都有哪些?集羣最少要幾臺機器
單機,集羣。Leader、Follower。集羣最低3(2N+1)臺,保證奇數,主要是爲了選舉算法。
集羣若是有3臺機器,掛掉一臺集羣還能工做嗎?掛掉兩臺呢?
記住一個原則:過半存活便可用。
集羣支持動態添加機器嗎?
其實就是水平擴容了,Zookeeper在這方面不太好。兩種方式:
所有重啓:關閉全部Zookeeper服務,修改配置以後啓動。不影響以前客戶端的會話。
逐個重啓:顧名思義。這是比較經常使用的方式。
4、dubbo
1.爲何要用Dubbo
由於是阿里開源項目,國內不少互聯網公司都在用,已經通過不少線上考驗。內部使用了 Netty、Zookeeper,保證了高性能高可用性。
2.Dubbo 和 Spring Cloud 有什麼區別?
1)通訊方式不一樣
Dubbo 使用的是 RPC 通訊,而 Spring Cloud 使用的是 HTTP RESTFul 方式。
2)組成部分不一樣
3.Dubbo須要 Web 容器嗎?
不須要,若是硬要用 Web 容器,只會增長複雜性,也浪費資源。
4.Dubbo內置了哪幾種服務容器?
Spring Container
Jetty Container
Log4j Container
Dubbo 的服務容器只是一個簡單的 Main 方法,並加載一個簡單的 Spring 容器,用於暴露服務。
5.Dubbo裏面有哪幾種節點角色?
6.畫一畫服務註冊與發現的流程圖
7.Dubbo默認使用什麼註冊中心,還有別的選擇嗎?
推薦使用 Zookeeper 做爲註冊中心,還有 Redis、Multicast、Simple 註冊中心,但不推薦。
8.Dubbo有哪幾種配置方式?
1)Spring 配置方式
2)Java API 配置方式
9.Dubbo 核心的配置有哪些?
10.在 Provider 上能夠配置的 Consumer 端的屬性有哪些?
1)timeout:方法調用超時
2)retries:失敗重試次數,默認重試 2 次
3)loadbalance:負載均衡算法,默認隨機
4)actives 消費者端,最大併發調用限制
11.Dubbo推薦使用什麼序列化框架,你知道的還有哪些?
推薦使用Hessian序列化,還有Duddo、FastJson、Java自帶序列化。
12.Dubbo默認使用的是什麼通訊框架,還有別的選擇嗎?
Dubbo 默認使用 Netty 框架,也是推薦的選擇,另外內容還集成有Mina、Grizzly。
13.Dubbo有哪幾種集羣容錯方案,默認是哪一種?
失敗自動切換,當出現失敗,重試其它服務器。(默認)
快速失敗,只發起一次調用,失敗當即報錯。
失敗安全,出現異常時,直接忽略。
失敗自動恢復,後臺記錄失敗請求,定時重發。
並行調用多個服務器,只要一個成功即返回。
廣播調用全部提供者,逐個調用,任意一臺報錯則報錯
14.Dubbo有哪幾種負載均衡策略,默認是哪一種?
15.註冊了多個同同樣的服務,若是測試指定的某一個服務呢?
能夠配置環境點對點直連,繞過註冊中心,將以服務接口爲單位,忽略註冊中心的提供者列表。
16.服務上線怎麼兼容舊版本?
能夠用版本號(version)過渡,多個不一樣版本的服務註冊到註冊中心,版本號不一樣的服務相互間不引用。這個和服務分組的概念有一點相似。
17.Dubbo服務之間的調用是阻塞的嗎?
默認是同步等待結果阻塞的,支持異步調用。
Dubbo 是基於 NIO 的非阻塞實現並行調用,客戶端不須要啓動多線程便可完成並行調用多個遠程服務,相對多線程開銷較小,異步調用會返回一個 Future 對象。
18.Dubbo支持分佈式事務嗎?
目前暫時不支持,後續可能採用基於 JTA/XA 規範實現,如以圖所示。
XA須要兩階段提交 -- prepare 和 commit.
假設有兩個Connection, con1, con2, 大致的過程以下
[java] view plain copy
Global Transaction 須要XA接口(包括在JTA裏面)的支持。
這些XA接口的實現,須要數據庫的JDBC提供。
數據庫自己要支持XA。數據庫的JDBC也要提供XA的實現。
Oracle, Sybase, DB2, SQL Server等大型數據庫支持XA
免費的postreSQL也支持XA
My SQL 連Local Transaction都支持很差,更別說Global Transation了
19.服務提供者能實現失效踢出是什麼原理?
服務失效踢出基於 Zookeeper 的臨時節點原理。
20.如何解決服務調用鏈過長的問題?
Dubbo 可使用 Pinpoint 和 Apache Skywalking(Incubator) 實現分佈式服務追蹤,固然還有其餘不少方案。
21.服務讀寫推薦的容錯策略是怎樣的?
讀操做建議使用 Failover 失敗自動切換,默認重試兩次其餘服務器。
寫操做建議使用 Failfast 快速失敗,發一次調用失敗就當即報錯。
22.Dubbo必須依賴的包有哪些?
Dubbo 必須依賴 JDK,其餘爲可選。
23.Dubbo的管理控制檯能作什麼?
管理控制檯主要包含:路由規則,動態配置,服務降級,訪問控制,權重調整,負載均衡,等管理功能。
24.說說 Dubbo 服務暴露的過程。
Dubbo 會在 Spring 實例化完 bean 以後,在刷新容器最後一步發佈 ContextRefreshEvent 事件的時候,通知實現了 ApplicationListener 的 ServiceBean 類進行回調 onApplicationEvent 事件方法,Dubbo 會在這個方法中調用 ServiceBean 父類 ServiceConfig 的 export 方法,而該方法真正實現了服務的(異步或者非異步)發佈。
25.Dubbo 中止維護了嗎?
2014 年開始中止維護過幾年,17 年開始從新維護,並進入了 Apache 項目。
26.Dubbo 和 Dubbox 有什麼區別?
Dubbox 是繼 Dubbo 中止維護後,噹噹網基於 Dubbo 作的一個擴展項目,如加了服務可 Restful 調用,更新了開源組件等。