一、jpa 和 hibernate 有什么區(qū)別?
(推薦學習:java面試題)
-
JPA Java Persistence API,是Java EE 5的標準ORM接口,也是ejb3規(guī)范的一部分。
-
Hibernate,當今很流行的ORM框架,是JPA的一個實現,但是其功能是JPA的超集。
-
JPA和Hibernate之間的關系,可以簡單的理解為JPA是標準接口,Hibernate是實現。那么Hibernate是如何實現與JPA的這種關系的呢。Hibernate主要是通過三個組件來實現的,及hibernate-annotation、hibernate-entitymanager和hibernate-core。
-
hibernate-annotation是Hibernate支持annotation方式配置的基礎,它包括了標準的JPA annotation以及Hibernate自身特殊功能的annotation。
-
hibernate-core是Hibernate的核心實現,提供了Hibernate所有的核心功能。
-
hibernate-entitymanager實現了標準的JPA,可以把它看成hibernate-core和JPA之間的適配器,它并不直接提供ORM的功能,而是對hibernate-core進行封裝,使得Hibernate符合JPA的規(guī)范。
二、什么是 spring cloud?
從字面理解,Spring Cloud 就是致力于分布式系統、云服務的框架。
Spring Cloud 是整個 Spring 家族中新的成員,是最近云服務火爆的必然產物。
Spring Cloud 為開發(fā)人員提供了快速構建分布式系統中一些常見模式的工具,例如:
-
配置管理
-
服務注冊與發(fā)現
-
斷路器
-
智能路由
-
服務間調用
-
負載均衡
-
微代理
-
控制總線
-
一次性令牌
-
全局鎖
-
領導選舉
-
分布式會話
-
集群狀態(tài)
-
分布式消息
-
……
使用 Spring Cloud 開發(fā)人員可以開箱即用的實現這些模式的服務和應用程序。這些服務可以任何環(huán)境下運行,包括分布式環(huán)境,也包括開發(fā)人員自己的筆記本電腦以及各種托管平臺。
三、spring cloud 斷路器的作用是什么?
在Spring Cloud中使用了Hystrix 來實現斷路器的功能,斷路器可以防止一個應用程序多次試圖執(zhí)行一個操作,即很可能失敗,允許它繼續(xù)而不等待故障恢復或者浪費 CPU 周期,而它確定該故障是持久的。
斷路器模式也使應用程序能夠檢測故障是否已經解決,如果問題似乎已經得到糾正,應用程序可以嘗試調用操作。
斷路器增加了穩(wěn)定性和靈活性,以一個系統,提供穩(wěn)定性,而系統從故障中恢復,并盡量減少此故障的對性能的影響。它可以幫助快速地拒絕對一個操作,即很可能失敗,而不是等待操作超時(或者不返回)的請求,以保持系統的響應時間。
如果斷路器提高每次改變狀態(tài)的時間的事件,該信息可以被用來監(jiān)測由斷路器保護系統的部件的健康狀況,或以提醒管理員當斷路器跳閘,以在打開狀態(tài)。
四、spring cloud 的核心組件有哪些?
1、服務發(fā)現——Netflix Eureka
一個RESTful服務,用來定位運行在AWS地區(qū)(Region)中的中間層服務。由兩個組件組成:Eureka服務器和Eureka客戶端。Eureka服務器用作服務注冊服務器。
Eureka客戶端是一個java客戶端,用來簡化與服務器的交互、作為輪詢負載均衡器,并提供服務的故障切換支持。Netflix在其生產環(huán)境中使用的是另外的客戶端,它提供基于流量、資源利用率以及出錯狀態(tài)的加權負載均衡。
2、客服端負載均衡——Netflix Ribbon
Ribbon,主要提供客戶側的軟件負載均衡算法。Ribbon客戶端組件提供一系列完善的配置選項,比如連接超時、重試、重試算法等。Ribbon內置可插拔、可定制的負載均衡組件。
3、斷路器——Netflix Hystrix
斷路器可以防止一個應用程序多次試圖執(zhí)行一個操作,即很可能失敗,允許它繼續(xù)而不等待故障恢復或者浪費 CPU 周期,而它確定該故障是持久的。斷路器模式也使應用程序能夠檢測故障是否已經解決。如果問題似乎已經得到糾正,應用程序可以嘗試調用操作。
4、服務網關——Netflix Zuul
類似nginx,反向代理的功能,不過netflix自己增加了一些配合其他組件的特性。
5、分布式配置——Spring Cloud Config
這個還是靜態(tài)的,得配合Spring Cloud Bus實現動態(tài)的配置更新。