从RPC 到微服务

从 RPC 到微服务的演化经过了RPC->Message Queue->SOA->微服务。

早期的 RPC

早期实现夸物理机的远程访问另一个进程唯一的方式就是RPC(Remote Procedure Call)远程过程调用(Socket 属于私有协议数据通信),期初各种语言各自为政,RPC是不能夸平台通信的。

由于不仅需要夸物理机,还要实现夸操作系统,跨语言等等,在这种背景下COBRA诞生,COBRA 解决了不同平台间的通信问题,红极一时。

早期的RPC协议都是二进制协议,主要是限于当时网速和带宽。随着网速的提高,由于文本协议更容易开发和调试,文本协议成为主流。

例如:SOAP,XML-RPC

序列化是伟大的发明

早期的通信协议使用结构体或者特定字符分隔的文本,到后来XML协议。这些协议都没有很好的解决,易开发,易调试,夸语言等问题。

  1. 结构体在C/C++ 中广泛使用,其他语言想要很C程序通信就涉及到 pack/unpack 封包和拆包操作,二进制协议不能直接阅读,给开发调试带来不方便。如果遇到协议频繁升级,开发者和测试者是很痛苦的。
  2. 特定字符分隔的文本,可以使用二进制分隔,也可以使用逗号,竖线等。你需要自己分析这些字符,还要避开数据中包含这些字符。
  3. XML 协议优点很多,但有一个致命缺点,就是性能。一是体积庞大,臃肿。二是,分析,取出数据的性能非常慢。
  4. 序列化,这是个伟大的发明,不仅实现了跨语言序列化与反序列化,还实现了二进制序列化与反序列化。序列化还提供非常丰富的数据类型,包含了字符串,数组,对象与数据结构等等。

无状态协议是趋势

通过TCP协议,SOCKET建立连接后提供持久连接的场景需求越来越少。

基于HTTP 无状态协议的 RPC 通信成为主流。

SOA(Service Oriented Ambiguity)面向服务架构

SOA 是一个概念,是一种以业务为中心的 IT 架构方法,可以将您的业务作为彼此链接的、可重复的业务任务或服务来进行整合,SOA使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

消息队列的出现

消息队列解决了 RPC 的被动调用问题,通过发布与订阅,实现消息异步处理。

消息队列逐渐成为面向服务开发的一部分。

传统SOA如果有十个节点,那么每个节点都需要相互连接另外九个节点,这给部署,监控,故障排查代理很多问题,消息队列的出现解决了这个问题,使网络模型从网状模型转到星型模型,所有的节点从消息服务器订阅,数据流也是推送到消息服务器。

有了上面的RPC,消息队列,SOA,为什么还需要微服务?

SOA 所有业务逻辑运行在一个物理机上,它们共用CPU以及内存地址空间,运行在一个进程中。通过负载均衡设备分配物理机给终端用户。当然也能做到不同业务逻辑被负载到不同的物理机的不同进程,这需要开发和运维通力配合完成。

而微服务,是将业务逻辑分散到不同的物理机,不同的进程下,它们使用相同的物理机,CPU,内存地址空间。微服务的注册中心是一个应用交付控制器,颗粒度比七层负载均衡更先进,更复杂,它能提供,服务注册,路由分配,熔断等等,配合配置中心,完成更复杂的工作。但性能肯定不如3/4层和7层负载均衡设备。

前者可以理解为IP地址和端口或者URL和HTTP的负载均衡,后者是基于 Class 和 method 的负载均衡。

微服务强调,组件化与服务化,分散治理,分散数据管理,容错性,自动化......

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2017-10-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信小程序开发

小程序中敏感词过滤——前端实现

3383
来自专栏纯洁的微笑

分布式调用链监控组件的实践与比较(一)实践

引言:最近在调研与选型分布式调用链监控组件。选了主要的三种APM组件进行了实践与比较。本来打算一篇文章写完的,篇幅太长,打算分两篇。本文主要讲下链路tracei...

1378
来自专栏lestat's blog

开始在ubuntu下工作

家里的PC机有几个月没用了,昨天刚开机,发现SSD识别不了,经过排查,确定是盘坏了,然后只能重装

1041
来自专栏沃趣科技

Oracle数据库12cR2版本的SQL计划管理

文章翻译自ORACLE WHITE PAPER SQL Plan Management with Oracle Database 12c Release 2 概...

33610
来自专栏FreeBuf

你所不知道的渗透测试:应用虚拟化的攻防

Web渗透测试大家都耳熟能详,但是针对应用虚拟化的渗透测试或许大家比较少接触,而且网上也没有相关的资料。作为前沿攻防团队,本期技术专题将结合过往的项目经验,针对...

2358
来自专栏DevOps时代的专栏

微服务之基于Docker的分布式企业级实践

2013
来自专栏IMWeb前端团队

基于MQTT的实时日志系统

MQTT是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT是专门针对物联网...

26710
来自专栏丿King科技-老李博客

服务器SSH暴力破解的解读与防御

刚才一看 IP地址为43.254.168.235 这位兄弟在用暴力破解跑字典攻击服务器 所以想起来,发一篇这样的文章,也是提醒下广大站长。

743
来自专栏漏斗社区

斗哥说|phpcms_v9.6.0 任意文件上传漏洞复现!

前言 在开启严肃认真的知识分享前,斗哥跟大家说一件严肃的事儿!本周日是一年一度的母亲节!无论你身处他乡还是奔波忙碌,别忘了给亲爱的母上大人送上节日的祝福,家永远...

3498
来自专栏织云平台团队的专栏

织云Lite V1.3| 教你用标签轻松管理设备集

1084

扫码关注云+社区