springcloud有兩個我覺得很關鍵的組件和概念:服務網關zuul和和Eureka,它們為RPC調用提供了很好抽象。
zuul作為網關,比我們自己做的網關的服務好很多,其架構如圖所示:
我們知道,有了eureka服務間的相互調用可以使用serviceId,然后通過Eureka Server的映射,可以訪問到具體的服務。那么如果調用是從外部進入的呢?這時就需要一個固定的ip或者域名接受請求,然后可以使用serviceid進行轉發。
在java項目中,使用Eureka非常簡單,使用Eureka提供的注解+配置文件就可以了,非常的簡單。Eureka為我們做的工作也很簡單,主要就是consumer和provider中間充當橋梁的作用,eureka不會關注provider提供了哪些接口,只是轉發了consumer的請求,將服務名映射成為ip+port。