点击上方蓝色“方志朋”,选择“设为星标”

回复“666”获取独家整理的学习资料!

原始时代

1969年11月,为了便于高校间共享资源,美国国防部高级研究计划管理局建立一个名为阿帕网络ARPAnet,起初只有四个节点。

阿帕网起源

一年后阿帕网的节点数量增至15个,此后平均每隔二十天就有一台大型计算机接入。

随着网络在世界范围不断扩大,不同国家不同地区各自形成了一个网络,操着不同方言彼此间互不相通,诸侯割据格局已经形成。

隔离的阿帕网

这个时候机器与机器之间通信是靠彼此约定的方式进行。

计算机靠方言通信

机器需要自行处理网络通信过程中遇到的丢包、乱序、重试等问题。

青铜时代

为了解决各国家各地区网络不能互通的问题,1973年两位年轻的小伙子开始发力了,致力于研究一种通讯方法,能够解决不同机器型号的计算机互相通信,简单说就是用普通话替代方言,这就是大家熟知的“TCP/IP”协议。

鲍勃·卡恩(左)与温顿·瑟夫(右)

随着 TCP/IP 协议逐渐普及后,一张大的 Internet 网络由此形成。

Internet

这个时候机器与机器之间通信的问题已经解决,TCP/IP 可以保证信息可靠性传输,我们只用关系业务逻辑即可。

依赖 TCP/IP协议实现机器间传输

黄金时代

在 TCP/IP 协议刚兴起时,计算机上的应用还很贫乏,机器与机器之间通信一般用来简单的数据传输。

随着 WEB 互联网技术兴起,基于 TCP/IP 协议出现了很多应用层协议,国内出现了一批优秀的互联网公司如腾讯、新浪、搜狐、淘宝等。

当时访问量并不大,采用单体架构基本就可以满足。

单体应用之间调用

服务的数量不多,每个服务都有一个唯一的IP 地址,服务与服务之间交互通过 IP寻址。

铂金时代

网民数量越来越多,单个实例扛不住日益增长的访问量。通常会在一个机器上部署多个实例组成集群,服务1访问服务2不再是之前的点到点了,现在变成了点到多点,中间会加一个负载均衡解决流量均衡问题。

单体应用集群之间调用

钻石时代

随着互联网业务访问量井喷,通过横向扩展服务实例的方法也开始遇到瓶颈了,单个服务越来越大,代码模块耦合严重,修改一行代码可能影响整个系统。

问题来了,解决方案也随着而来,“微服务”横空出世了。将一个业务服务按功能模块切分为多个微服务,比如将 Service1 切分为 Micro Service1,Micro Service2,Micro Service3。

在单体服务中Micro Service1调用Micro Service2可能就是一个模块调用另外一个模块,调用一个公开的函数就能搞定,拆为微服务之后就变成了两个微服务直接的调用,这种调用是要通过网络通信实现。

微服务间调用

星耀时代

随着业务扩张,对系统的高可用要求越来越高,一些重点微服务如订单、账单等可能会部署成百上千个实例,运维人员的负担也在逐渐加大,如果机器挂了要手动删除,如果遇到重大活动如双十一可能要扩展几千个实例,运维人员需要手工添加,人工干预越多出错的概率越大。

第一代微服务技术应运而生。

代理内嵌

每个微服务内嵌一个代理用来处理服务注册和发现的逻辑,国内以阿里的 Dubbo,微博的 Motan 为代表。这类框架不足的地方很明显:微服务与代理耦合、不支持多语言。

王者时代

针对第一代微服务框架的不足,大家在纷纷探索下一代微服务框架。

在每一个主机上单独部署一个代理进程,多个微服务共用一个代理进程,实现服务发现和负载均衡。

代理进程

这种模式通常被大家称为“sideCar”,也就是“边车模式”。

什么叫“边车”,在早期有一种摩托车,驾驶位置旁边挂着一个拖斗,对比微服务旁边挂一个代理进程,所以形象地称为“边车模式”。

摩托车拖斗

在新一代的 ServiceMesh 架构中,服务消费者和服务提供者都会部署SideCar。

SideCar 模式

服务与服务之间是靠 sideCar 连接起来,sideCar 用来处理与业务无关的注册、发现、熔断、限流等治理能力。

略去业务服务和其他无关的东西,将所有的 sideCar 连接起来可以得到下面这张图:

服务网格

是不是长得像网格,服务网格(service mesh)由此得名。

维基百科是这样定义服务网格

服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,服务网格保证请求在这些拓扑中可靠地穿梭。在实际应用当中,服务网格通常是由一系列轻量级的网络代理组成的,它们与应用程序部署在一起,但对应用程序透明。

总结

ServiceMesh(服务网格)的特点:

  • 场景:用于微服务间的服务通信和服务治理

  • 方案:边车模式

  • 定位:基础设施层

服务网格是一种比较新的架构风格,大家在技术选型时不要盲目追新,适合当前业务发展的技术才是最好的技术。大家学会了吗?

热门内容:
  • JDK 16 即将发布,新特性速览!

  • 微服务架构中配置中心的选择

  • Java 项目权威排名:Nacos 未上版,Gradle 排名第二,Maven 排名 28

  • 腾讯,干掉 Redis 项目,正式开源、太牛逼啦!

  • 你知道Spring Boot项目是怎么启动的吗?

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ

5分钟带你快速了解ServiceMesh的前世今生相关推荐

  1. 【网络爬虫教学】一分钟带你快速寻找JS加密入口(二)

    Hi,大家好,欢迎大家参阅由IT猫之家精心制作的JS实战系列教学课程,我是作者叮当猫,在上期教学中,我们学习了如何快速分析基于Header授权加密协议,同时我们也初次接触到了钩子(hook)的概念,钩 ...

  2. 虚拟机booting from hard disk_一分钟带您快速了解虚拟机软件

    什么是虚拟机软件?虚拟机软件可以在计算机平台和终端用户之间建立一种环境,而终端用户则是基于这个软件所建立的环境来操作软件.在计算机科学中,虚拟机是指可以像真实机器一样运行程序的计算机的软件实现. 在计 ...

  3. 移动端视频开发通过什么方式实现直播?十分钟带你快速了解

    原文链接:https://www.jianshu.com/p/92b71382724f 本专栏专注分享大型Bat面试知识,后续会持续更新,喜欢的话麻烦点击一个关注 现在的移动端的音视频这些在近段时间非 ...

  4. 技术09期:5分钟带你快速了解TypeScript

    近年来,TypeScript(TS)越来越频繁的出现在人们的视野内,在各大新闻,论坛上都能看到其身影,当今主流的三大前端框架react,Vue3.0和Angular2中的后两者都使用了TS进行编写,鼓 ...

  5. sp烘焙流程_3分钟带你快速入门substance painter 贴图制作

    先看下基本效果预览: 我也是萌新菜鸡,不喜勿喷哦~ 下面是具体步骤: 1.导出模型: 在确保UV和光滑组分好的前提下进行高低模导出,为了确保烘焙时候模型之间的穿插不出现错误,我们需要对高低模进行分组, ...

  6. 一分钟带你快速认识S参数

    S 参数是SI与RF领域工程师必备的基础知识,大家很容易从网络或书本上找到S,Y,Z参数的说明,但即使如此,在相关领域打滚多年的人,仍然可能还是会被一些问题困扰着.你懂S参数吗? 不懂的话,那么请继续 ...

  7. 什么是软件测试?零基础入门知识要点总结篇,5分钟带你快速了解

    1.什么是软件测试? 软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性.完整性.安全性和质量的过程.换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较的过 ...

  8. 5分钟带你快速了解:SEO到底是什么?

    对于从事互联网推广营销的人来说,"SEO"一定是个常出现的词. 不少人对"SEO到底是什么?"还存在各种各样的疑问和一些误解,那么下面就为大家讲解一下关于SEO ...

  9. 【HTTP】10分钟带你快速了解HTTP中常见的状态码(内附大量实例)

    目录 前言 ▶ 为什么要了解状态码? 正题 ▶ 状态码的类别 ▶ 状态码--200(OK) ▶ 状态码--204(Not Content) ▶ 状态码--206(Partial Content) ▶ ...

最新文章

  1. 徒手撸了一个API网关,理解更透彻了,代码已上传github,自取~
  2. exfat 分配单元大小_知到金融理论与实务第一单元章节测试答案
  3. 基于SOA的体系架构设计
  4. zookeeper伪集群(在一台机器上集群)
  5. 团队解散,项目被否,我苦修三年终将数据平台落地
  6. mysql Proxy 的使用测试-2
  7. 打造“5G+IoT”生态,共创产业繁荣沃土
  8. linux每日命令(2):ps命令
  9. mybatisPlus代码自动生成
  10. 什么是测试开发工程师(SET)?
  11. 中职生职业生涯规划书2000字学计算机,中职生职业生涯规划书计算机专业
  12. 如何区分网线是几类的_怎么能从网线上看出网线是几类线~请高手帮帮忙~先谢谢了...
  13. 误将桌面的计算机图标删除,如何恢复误删除的"桌面图标"
  14. 金仓数据库KingbaseES序列的操作
  15. 推荐6款地球表面最强软件的电脑软件
  16. iOS开发之第三方分享微信分享、朋友圈分享,史上最新最全第三方分享微信方式实现、朋友圈方式实现
  17. # 阿里云服务器的运行与维护(1)
  18. java.lang.ExceptionInInitializerError Caused by: org.apache.ibatis.exceptions.PersistenceException
  19. 传阿里巴巴和腾讯考虑互相开放生态系统
  20. c语言在线阅读源代码,C语言-源代码详细资料.doc

热门文章

  1. pstree进程管理
  2. Spyder更改默认工作路径已经文件路径
  3. python基础-垃圾回收机制
  4. Jetson tk1 安装 CUDA,ROS,OpenCV和kinect2以及刷机以及ssh远程控制
  5. 创建对象_工厂方法(Factory Method)模式 与 静态工厂方法
  6. Google Adsense实用防踢技巧总结
  7. [转]笑死人的考试填空
  8. 2021 线性代数 第三章 习题课
  9. Datawhale组队学习周报(第003周)
  10. 股市币市:数据分析与交易所公告(20190225)