微服务实战系列之通信

前言

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

当初为什么要做这个系列,博主想了又想,私以为作为当下软件领域的几个“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站点服务…

【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仿…

《安富莱嵌入式周报》第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…

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

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

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

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

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

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

基于PaddleOCR银行卡识别实现(四)之uni-app离线插件

目的 在前三篇文章中完成了银行卡识别整个模型训练等工作,通过了解PaddleOCR的端侧部署,我们也可以将银行卡号检测模型和识别模型移植到手机中,做成一款uni-app手机端离线银行卡号识别的应用。 准备工作 为了不占用过多篇幅,这…

Nginx的性能优化、安全以及防盗链配置

目录 一、nginx的日志分割 二、nginx性能优化之启用epoll模型 三、nginx性能优化之设置worker进程数并与cpu进行绑核 四、nginx性能优化之调整worker的最大打开文件数和最大处理连接请求数量 五、nginx性能优化之启用gzip压缩,提高传输,减少带宽 六…

字节iconpark基于vue使用

1.安装 npm i icon-park/vue 2.导入 说明:导入并在main.js使用。 import { install } from icon-park/vue/es/all; import icon-park/vue/styles/index.css; Vue.use(install) 3.打开官网 ByteDance IconPark 4.复制 说明:点击官方图标库&#xff0c…

Java-JDBC操作MySQL

Java-JDBC操作MySQL 文章目录 Java-JDBC操作MySQL一、Java-JDBC-MySQL的关系二、创建连接三、登录MySQL四、操作数据库1、返回型操作2、无返回型操作 练习题目及完整代码 一、Java-JDBC-MySQL的关系 #mermaid-svg-B7qjXrosQaCOwRos {font-family:"trebuchet ms",verd…

国产Type-C PD芯片—接口快充取电芯片

常用USB PDTYPE-C受电端,即设备端协议IC芯片(PD Sink,也叫PD诱骗芯片),诱导取电芯片。 产品介绍 LDR6328: ◇ 采用 SOP-8 封装 ◇ 兼容 USB PD 3.0 规范,支持 USB PD 2.0 ◇ 兼容 QC 3.0 规范&#x…

TailwindCSS 支持文本文字超长溢出截断、文字文本省略号

前言 文本文字超长截断并自动补充省略号,这是前端日常开发工作中常用的样式设置能力,文字超长截断主要分为单行超长截断和多行超长截断。本文通过介绍基本CSS样式、tailwindcss 类设置两种基础方式来实现文字超长截断。 TailwindCSS 设置 单行文字超长…

WPF仿网易云搭建笔记(2):组件化开发

文章目录 前言专栏和Gitee仓库依赖属性实战:缩小,全屏,关闭按钮依赖属性操作封装主窗口传递this本身给TitleView标题控件主要代码MainWindow.xmalMainWindow.cs依赖属性方法封装TitleView.csTitleViewModelTitleViewModel实现效果 前言 这次…

【刷题】位运算

2 n 2^n 2n 1<<n判断某一位是否为1 s&1<<k将上面两个组合&#xff0c;可以得到判断一个集合中哪些内容包含&#xff0c;遍历所有情况。 100140. 关闭分部的可行集合数目 一个公司在全国有 n 个分部&#xff0c;它们之间有的有道路连接。一开始&#xff0c;…