微服务实战系列之通信

前言

掰个指头数一数,博主的"微服务实战系列"从无到有,从零走到了十五。如果比作时钟,刚好走过了一刻度。

当初为什么要做这个系列,博主想了又想,私以为作为当下软件领域的几个"hot spot"之一,又乘着春天(Spring)之东风,微服务的种子已然深埋于每个程序猿/媛的心中。而在实际工作/学习中,有太多基础理论、技能必须掌握。

微服务不仅仅是一个名词,更是一个动词,一个体系化的服务设计思路。我们说服务的本质是在做数据交换,所谓"以数易数"。早期人类也正是通过以物换物的方式,促成最早也最简单的的合作模型。

感叹至此,言归正传,书接上文,继续带着各位盆友,大话微服务

上图是一个简易型微服务交互设计框架,我们以它作为今天的起点,开始新的旅程,GO~



Q:如何建立通信

提到通信方式,博主立刻可以想到:"书信、邮件、短信"等媒介。

古代信息不发达,通信工具缺乏,山高路远,幸亏有了造纸术,才有笔墨纵横的天地。今天我们就先谈谈两个人是如何建立通信的。

1. 打电话

作为最直接了当,便捷有效,可随时掌握对方情况的通信手段,打电话自然是首选。你可以通过各路感官亲切的察觉到对方的"一举一动",从而获取有价值的信息,以达成自己的预期目标。此刻,如果对方接了,心表甚慰,可以愉快的开始对话;如果对方没接(不管有意无意),你怎么办? 坐着傻等也不是办法啊,果断寻找新思路。

2. 发短信

电话打不通,发个短信呗,迟早会看吧? 显然想得有点美了,万一还不回复呢? 这不"已读不回""诅咒"就来了。如果两个人是熟人也就罢了,万一不是熟人,那真是干着急没办法呀。幸亏我们是聪明一族,从容地找到了新方法。

3. 群发

在某些情况下,我们可以使用短信"轰炸"对方。可以选择单轰,也可以群炸(O(∩_∩)O哈哈~)。

当然博主并不推荐蛮干,不然"事前有多痛快,事后有多懊悔"。当你需要简单、快捷、有效的传递所思所想所念之时,群发是一个不错的选择。不必关心每个人是否回复,只关心有多少人回复就足够了。

但是此刻对方的心里会怎么样? 当然略显无奈,心里暗暗揣度:我遇到了什么**。既然有了反抗的想法,那自然要有所行动。

4. 订阅

如果实在躲不了逃不了,那就订阅呗,何必自寻烦恼。事先约定好何时何地通信不就行了嘛,从此你好我好大家好,生活日子甜美如初。

综上,博主为各位盆友介绍了两个人如何建立通信的形式和过程。因为如此平常,自然易于理解,博主不再展开。

接下来,继续思考一个问题,请将目光锁定博主,继续跟着走。

Q:如何正确的通信

既然两个人成功建立了联系,那该如何保障通信成功呢?有什么正确的方式可循?答案当然是有的。

1. 同步(Sync)

什么是同步? 刚才其实已经举例了,打电话呀,你打我接,不说bye不能挂。

同步:一个人发出一个指令时,必须等待对方反馈,否则"坐等"

这就好比服务器都冒烟了,你还在那傻傻的等,但等也有等的好处啊!你去商超买菜,去公园排队等等,其实都在兢兢业业干一件事,正是"事倍功倍"

2. 异步(Async)

兢兢业业的是同步,难道异步就不是了?那怎么可能。异步的骄傲我们来慢慢体会。

异步:一个人发出一个指令后,可以接着发出第二个指令。当然可以是对同一个人发,也可以对多个人发。

好嘛,这不正是群发么?"咱不管对不对,先追求快不快"。当然如此一意孤行,那难免招来仇恨。所以怎么做到既对又快,才是幸福甜蜜的真谛。

关于同步或异步的通信机制,博主已经大致介绍了。简单一句话:"爱我所用,选我所喜"

Q:如何选择通信工具

掌握了如何正确的通信,那是不是该找工具了,比如手机、邮箱,皆是工具。回到我们的微服务中,又是什么呢?请转移视线,回到博主的第一张微服务图(service),凡箭头指向,皆是通信的两端。

比如Feign,比如Rpc,比如Resful,均是基于同步的请求/响应模式。

比如点对点(Point to Point, P2P)和发布-订阅(Publish and Subscribe, Pub-Sub),均是基于异步的通信模式。

博主私以为,无论同步或异步,取决于业务场景的条件和要求,没有正确与否之说。通信是消息传递的媒介和手段,消息是数据的载体和容器。微服务又是基于通信完成的,一链一点,点点相依。


结语

今天博主带着各位盆友,对微服务之间如何通信进行了简单的介绍。当你在实际工作中,遇到同步/异步的选择题时,或许用得上。RemoteService作为微服务界的高频词汇和主角,选择合适的工具驾驭它,是一门重要的功课。

本期内容,暂时到此结束,欢迎分享、指导、交流!

相关推荐
uhakadotcom3 分钟前
视频直播与视频点播:基础知识与应用场景
后端·面试·架构
沉登c3 小时前
第 3 章 事务处理
架构
阿里云云原生3 小时前
LLM 不断提升智能下限,MCP 不断提升创意上限
云原生
阿里云云原生3 小时前
GraalVM 24 正式发布阿里巴巴贡献重要特性 —— 支持 Java Agent 插桩
云原生
数据智能老司机6 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
数据智能老司机6 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
云上艺旅6 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
c无序6 小时前
【Docker-7】Docker是什么+Docker版本+Docker架构+Docker生态
docker·容器·架构
数据智能老司机7 小时前
CockroachDB权威指南——CockroachDB 架构
数据库·分布式·架构
矿渣渣7 小时前
RM Cortex-A7 架构中“SEV”汇编指令解析
汇编·架构