微服务实战系列之通信

前言

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

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

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

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

在这里插入图片描述

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


  • 微服务实战系列之J2Cache
  • 微服务实战系列之Cache(技巧篇)
  • 微服务实战系列之MemCache
  • 微服务实战系列之EhCache
  • 微服务实战系列之Redis
  • 微服务实战系列之Cache
  • 微服务实战系列之Nginx(技巧篇)
  • 微服务实战系列之Nginx
  • 微服务实战系列之Feign
  • 微服务实战系列之Sentinel
  • 微服务实战系列之Token
  • 微服务实战系列之Nacos
  • 微服务实战系列之Gateway
  • 微服务实战系列之加密RSA
  • 微服务实战系列之签名Sign

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作为微服务界的高频词汇和主角,选择合适的工具驾驭它,是一门重要的功课。

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/210780.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探秘机器学习核心逻辑:梯度下降的迭代过程 (图文详解)

一 需求解函数 f() 和 g()函数分别为求y值和求导数的函数。 目的:求该函数的最小值: 代码: import numpy as np import matplotlib.pyplot as plt f lambda x : (x - 3.5) ** 2 - 4.5 * x 10 g lambda x : 2 * (x - 3.5) - 4.5x np.l…

架构LAMP

目录 1.什么是LAMP 2.LAMP组成及作用 3.搭建Apache httpd服务 4.编译安装mysqld 服务 5.编译安装PHP 解析环境 6.安装论坛 1.什么是LAMP LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务…

MATLAB算法实战应用案例精讲-【人工智能】漫谈自动驾驶

目录 常用数据集 一、自动驾驶领域数据集 1. KITTI数据集 2.CityScapes数据集 3.BDD100K数据集

go与ioc

在Go开发服务端程序时,使用IoC(Inversion of Control)机制并不像在Java等语言中那样普遍。Go语言的设计哲学倾向于简洁和直接,更注重代码的可读性和可维护性。 在Go中,通常会使用依赖注入(Dependency Inje…

【Python】视频剪辑小程序

近期遇到一些录制的视频需要剪辑。 手机上剪辑操作很耗时,有几个G的视频,花了一天的空余时间去剪辑。电脑上也有格式工厂,有很方便。 可是学了Pthon,又无意中了解到了moviepy这个库,于是自己写了个简单的视频剪辑程序。…

Windows安装kafka

压缩包下载地址:https://www.apache.org/dyn/closer.cgi?path/kafka/3.6.1/kafka_2.13-3.6.1.tgz 启动kafka步骤 zookeeper-server-start.bat rem 闭命令提示符窗口的命令回显,这样在运行脚本时不会显示脚本的具体命令内容 echo offrem 命令行启动未…

Proteus仿真--8×8LED点阵屏仿电梯数字滚动显示

本文介绍基于88LED点阵屏仿电梯数字滚动显示设计(完整仿真源文件及代码见文末链接) 仿真图如下 其中K1-K5的5个按键分别代表不同楼层,摁下按键后在8X8LED上便会显示到对应楼层的跳变信息,模拟电梯的运作 仿真运行视频 Proteus仿…

nodejs多线程,fork和Worker

一、前言 javascript是单线程执行的,如果想要多线程执行,那么相当于再运行一个node,其实不该理解成多线程,更像是多进程。 二、Worker(‘worker_threads’模块) worker有点类似exec,直接再cmd执行node命令,不同的是两…

《安富莱嵌入式周报》第328期:自主微型机器人,火星探测器发射前失误故障分析,微软推出12周24期免费AI课程,炫酷3D LED点阵设计,MDK5.39发布

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程: 【实战技能】 单步运行源码分析,一期视频整明白FreeRTOS内核源码框架和运行…

【STM32】TIM定时器基本定时功能

第一部分:定时器基本定时的功能; 第二部分:定时器的输出比较功能; 第三部分:定时器输入捕获的功能; 第四部分:定时器的编码接口。 1 TIM简介 TIM(Timer)定时器&#…

在OpenCV基于深度学习的超分辨率模型实践

1. 引言 OpenCV是一个开源的计算机视觉库,拥有大量优秀的算法。基于最新的合并,OpenCV包含一个易于使用的接口,主要用于实现基于深度学习方法的超分辨率(SR)。该接口包含预先训练的模型,这些模型可以非常容…

redis中使用事务保护数据完整性

事务是指一个执行过程,要么全部执行成功,要么失败什么都不改变。不会存在一部分成功一部分失败的情况,也就是事务的ACID四大特性(原子性、一致性、隔离性、持久性)。但是redis中的事务并不是严格意义上的事务&#xff…

使用flutter_native_splash替换启动图片,iOS端替换不成功

使用flutter_native_splash替换启动图片,iOS端替换不成功 1、删除App重启手机;2、重新创建一个新的LaunchScreen.storyboard,比如命名为NewLaunchScreen.storyboard,在General里面设置Launch Screen File为这个新的NewLaunchScree…

蓝桥杯 day01 奇怪的数列

题目描述 奇怪的数列 从 X 星截获一份电码,是一些数字,如下: 13 1113 3113 132113 1113122113 ⋯⋯ YY 博士经彻夜研究,发现了规律: 第一行的数字随便是什么,以后每一行都是对上一行"读出来…

智能优化算法应用:基于蝗虫算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于蝗虫算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于蝗虫算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蝗虫算法4.实验参数设定5.算法结果6.参考文献7.MA…

【数据挖掘】国科大苏桂平老师数据库新技术课程作业 —— 第二次作业

1 设 F { A B → C , B → D , C D → E , C E → G H , G → A } F\{AB\rightarrow C,B\rightarrow D, CD\rightarrow E, CE\rightarrow GH, G\rightarrow A \} F{AB→C,B→D,CD→E,CE→GH,G→A},用推理的方法证明 F ∣ A B → G F\;|AB\rightarrow G F∣AB→…

持续集成交付CICD:使用Maven命令上传Nexus制品

目录 一、实验 1.使用Maven命令上传Nexus制品(第一种方式) 2.使用Maven命令上传Nexus制品(第二种方式) 一、实验 1.使用Maven命令上传Nexus制品(第一种方式) (1)指定一个 hoste…

说说React jsx转换成真实DOM的过程?

在React中,JSX(JavaScript XML)是一种语法糖,用于描述用户界面的结构和组件关系。当你编写React组件并包含JS JSX解析:React中的JSX代码首先会被解析成JavaScript对象。这个过程通常是通过Babel等工具进行的&#xff0…

Flutter视频播放器在iOS端和Android端都能实现全屏播放

Flutter开发过程中,对于视频播放的三方组件有很多,在Android端适配都挺好,但是在适配iPhone手机的时候,如果设置了UIInterfaceOrientationLandscapeLeft和UIInterfaceOrientationLandscapeRight都为false的情况下,无法…

pytorch 笔记:dist 和 cdist

1 dist 1.1 基本使用方法 torch.dist(input, other, p2) 计算两个Tensor之间的p-范数 1.2 主要参数 input输入张量other另一个输入张量p范数 input 和 other的形状需要是可广播的 1.3 举例 import torchxtorch.randn(4) x #tensor([ 1.2698, -0.1209, 0.0462, -1.3271…