從零開始學YC-Framework之微服務通信

語言: CN / TW / HK

一、什麼是微服務通信?

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.微服務的交互模式

  • 1.讀者容錯模式。
  • 2.消費者驅動契約模式。
  • 3.去數據共享模式。

2.微服務的分解和組合模式

  • 1.服務代理模式。
  • 2.服務聚合模式。
  • 3.服務串聯模式。
  • 4.服務分支模式。
  • 5.服務異步消息模式。
  • 6.服務共享數據模式。

3.微服務的容錯模式

  • 1.艙壁隔離模式。
  • 2.熔斷模式。
  • 3.限流模式。
  • 4.失效轉移模式。

上述三個部分內容的詳細解答均可在我寫的這篇文章(得到答案):

我在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中,微服務通信的案例有如下:

  • 1.插件服務(涉及博客園API、機器人聊天、和風天氣API等)。
  • 2.數據爬蟲服務(通過調用插件服務API,實現數據存儲入庫)。
  • 3.統一授權認證(認證服務、用户管理服務之間的API調用。
  • 4.用户操作日誌存儲(用户操作系統做了什麼的行為均存儲到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