分佈式架構之微服務通信
一、什麼是微服務通信?
A 服務調用 B 服務,B 服務調 C 服務,C 服務調 D 服務。換言之,這就是微服務之間的通信 (也可以叫微服務之間的調用)。
二、微服務的通信方式有哪些?
-
1.HTTP。
-
2.RPC。
-
3.Message。
三、實現這些通信方式的框架有哪些?
1.RPC
-
(1)Dubbo;
-
(2)Grpc;
-
(3)Apache Thrift;
-
(4)Hessian;
-
(5)RMI。
2.HTTP
-
(1)SpringCloud Open Feign;
-
(2)SpringMVC;
-
(3)Okhttp;
-
(4)SpringBoot。
3.Message
-
(1)JMS;
-
(3)ActiveMQ;
-
(4)RabbitMQ;
-
(5)Kafka。
上述涉及的 RPC、HTTP、Message 相關的框架以及中間件等,YC-Framework 大部分均已支持 (以現主流爲主)。
四、微服務的交互模式有哪些?微服務的分解和組合模式有哪些?微服務的容錯模式有哪些?
1. 微服務的交互模式
-
- 讀者容錯模式。
-
- 消費者驅動契約模式。
-
- 去數據共享模式。
2. 微服務的分解和組合模式
-
- 服務代理模式。
-
- 服務聚合模式。
-
- 服務串聯模式。
-
- 服務分支模式。
-
- 服務異步消息模式。
-
- 服務共享數據模式。
3. 微服務的容錯模式
-
- 艙壁隔離模式。
-
- 熔斷模式。
-
- 限流模式。
-
- 失效轉移模式。
上述三個部分內容的詳細解答均可在我寫的這篇文章(得到答案):
我在 M2 公司做架構之架構 2.0
五、YC-Framework 主要採用的微服務通信是基於什麼?
YC-Framework 使用 Nacos 作爲服務註冊與發現,通過 Open Feign 實現微服務之間的調用。
1. 具體該如何使用呢?
(1) 引入依賴
<dependency>
<groupId>com.yc.framework</groupId>
<artifactId>yc-common-nacos</artifactId>
</dependency>
<dependency>
<groupId>com.yc.framework</groupId>
<artifactId>yc-common-openfeign</artifactId>
</dependency>
(2) 生產者服務模塊啓動類添加註解
@EnableFeignClients(basePackages ="com.ycframework.xxxxxx")
(3) 在 yc-api 模塊下新建對應的 API 類 (這裏以新建博客園 API 爲例)
@FeignClient(contextId = "cnBlogsApi",name = ApplicationConst.PLUGINS)
public interface CnBlogsApi {
@PostMapping("/cnblogs/getToken")
RespBody getToken();
@PostMapping("/cnblogs/getPersonalBlogInfo")
RespBody getPersonalBlogInfo(@RequestParam("username") String username);
@PostMapping("/cnblogs/getPersonalBlogPostList")
RespBody getPersonalBlogPostList(@RequestParam("userName") String userName, @RequestParam("pageIndex") Integer pageIndex);
@PostMapping("/cnblogs/getEssenceAreaPostList")
RespBody getEssenceAreaPostList(@RequestParam("pageIndex") String pageIndex, @RequestParam("pageSize") String pageSize);
@PostMapping("/cnblogs/getSiteHomePostList")
RespBody getSiteHomePostList(@RequestParam("pageIndex") String pageIndex, @RequestParam("pageSize") String pageSize);
}
(4) 消費者服務模塊引入 yc-api 依賴即可
<dependency>
<groupId>com.yc.framework</groupId>
<artifactId>yc-api</artifactId>
</dependency>
(5) 調用
@Autowired
private CnBlogsApi cnBlogsApi;
2. 案例有哪些?
在 YC-Framework 中,微服務通信的案例有如下:
-
- 插件服務 (涉及博客園 API、機器人聊天、和風天氣 API 等)。
-
- 數據爬蟲服務 (通過調用插件服務 API,實現數據存儲入庫)。
-
- 統一授權認證 (認證服務、用戶管理服務之間的 API 調用。
-
- 用戶操作日誌存儲 (用戶操作系統做了什麼的行爲均存儲到 MongoDB)。
以上案例代碼均可在 YC-Framework 中找到!!!
開源不易,如果對你有幫助,不妨給個 star(Github 與 Gitee),鼓勵一下!!!
YC-Framework 官網:
https://framework.youcongtech.com/
YC-Framework Github 源代碼:
https://github.com/developers-youcong/yc-framework
YC-Framework Gitee 源代碼:
https://gitee.com/developers-youcong/yc-framework
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/eW1vKAopjrrRlyJd7pfKkQ