在服务体系架构内,我们所知道的,有两种请求模型: Http 请求模型,以及 RPC 请求模型。因此,在一个互联网请求模型架构上,都是这两种的请求模型的向互组合.

下面给出两种常见的互联网经典基础架构图:

  一:外:HTTP  内:RPC                                                                        二:外:HTTP 内: HTTP

                               

下面讲讲这两种网络架构的优缺点: 这里只发表我个人的看法。如果各位大神,如果有其他看法的话,那么也可随意留言:

共同点: HTTP 主外,HTTP 主外有个两个最大的优点

1:对于前端框架的易用性和对异构系统的对接性更较强. 也就是说HTTP 的跨平台性跟跨协作方面来的更  加合适, 原因为啥:原因 就是大部分同学都知道HTTP 协议嘛。

2:对于HTTP 来说,外部的客户数量是不可控的,HTTP 的短链接,就很好的解决这方面服务的线程资源占用的问题。 HTTP 原本初衷就是一次请求,一个线程,一次会话的模型。 而 RPC ,则是长连接模型。客户端不活动,也会占用服务的TCP  线程连接数。

两张图的不同之处在于:

图一:内部服务集群采用RPC,   图二内部集群采用HTTP。 这两者都有存在大厂中在, 问题仁者见仁,智者见智

内部采用RPC的优点:效率高,传输快. 而RPC 为什么会效率高,传输快: 这就讲下RPC 与HTTP 本质上的区别:

 

 http协议是应用层协议,HTTP协议位于TCP/IP协议栈的应用层。基于HTTP协议的客户/服务器模式的信息交换过程,分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。

而 RPC(Remote Procedure Call Protocol) 远过程调用协议,在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC信息协议由两个不同结构组成:调用信息和答复信息. 因此 在RPC 的协议包一般情况下都是自己定义,自己封装,封包。正是因为RPC 穿越了OSI 的 传输层与应用层,使得它的效率更高,传输更快,也是正是应为RPC 的 协议包可以自由定义,

因此,它的网络传输载请求单位体积就可以变得非常小, 并不像HTTP协议包臃肿肥大。但是也正因为如此,RPC 本质的维护成本以及开发成本来的更高。从另外个角度讲,HTTP 的对于公司角度而言:服务的迭代以及开发成本来的更加快捷,方便。

个人在内部局域网内服务群集方面也是采用 HTTP ( 考虑到公司的开发协作成本方面,还有老服务遗留下来的历史原因)。  但是.NETCORE NETTY 还是一个非常棒的实现RPC 底层框架。因此还是值得我们去发现。

NetCore Netty 框架 BT.Netty.RPC 系列随讲 —(前序) REST API 与 RPC 经典网络基础服务架构的更多相关文章

  1. NetCore Netty 框架 BT.Netty.RPC 系列随讲 二 WHO AM I 之 NETTY/NETTY 与 网络通讯 IO 模型之关系?

    一:NETTY 是什么? Netty 是什么?  这个问题其实百度上一搜一堆. 这是官方话的描述:Netty 是一个基于NIO的客户.服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个 ...

  2. 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序

    如何在Visual Studio 2017中使用C# 7+语法   前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...

  3. 构建NetCore应用框架之实战篇系列

    构建NetCore应用框架之实战篇 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建Net ...

  4. Netty 框架学习 —— Netty 组件与设计

    Channel.EventLoop 和 ChannelFuture 这一节将对 Channel.EventLoop 和 ChannelFuture 类进行讨论,它们组合在一起,可以被认为是 Netty ...

  5. C# Asp.net中的AOP框架 Microsoft.CCI, Mono.Cecil, Typemock Open-AOP API, PostSharp -摘自网络 (可以利用反射 Attribute 进行面向切面编程 可以用在记录整个方法的Log方面)

    Both Microsoft.CCI and Mono.Cecil are low-level, and don't validate produced assemblies. It takes lo ...

  6. 构建NetCore应用框架之实战篇(七):BitAdminCore框架登录功能源码解读

    本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.简介 1.登录功能完成后,框架的雏形已经形成,有必要进行复习. 2 ...

  7. 构建NetCore应用框架之实战篇(六):BitAdminCore框架架构小结

    本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.小结 1.前面已经完成框架的第一个功能,本篇做个小结. 2.直接上 ...

  8. 构建NetCore应用框架之实战篇(五):BitAdminCore框架1.0登录功能设计实现及源码

    本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.设计原则 1.继承前面框架架构思维,设计以可读性作为首要目标. 2 ...

  9. 构建NetCore应用框架之实战篇(四):BitAdminCore框架1.0登录功能细化及技术选型

    本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.BitAdminCore框架1.0版本 1.1.0版本是指最小版本 ...

随机推荐

  1. POJ-2239 Selecting Courses,三维邻接矩阵实现,钻数据空子。

    Selecting Courses Time Limit: 1000MS   Memory Limit: 65536K       Description It is well known that ...

  2. [luoguP1021] 邮票面值设计(DFS + dp)

    传送门 数据很小,可以DFS,判断的时候用背包DP 然而不知到枚举到哪里.... 首先枚举前可以求一遍题目中的MAX,下一层DFS的时候可以只枚举到MAX + 1,因为再往上就必定会出现断层 蒟蒻很菜 ...

  3. [HDU2196]Computer(DP)

    传送门 题意 给出一棵树,求离每个节点最远的点的距离 思路 对于我这种菜鸡,真是难啊. 每个点的距离它最远的点,除了在它子树中的,还有在它子树之外的,所以这几个状态都得表示出来. 我们能够很简单的求出 ...

  4. TCP/IP学习笔记(5)------IP选路

    静态IP选路 一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. D ...

  5. Linux下keepalived下载安装与配置

    一.下载(原文链接:http://www.studyshare.cn/blog-front//software/details/1158/0 ) 网盘下载:https://pan.baidu.com/ ...

  6. python:functools之partial

    示例:from operator import addimport functoolsprint add(1,2) #3add1 = functools.partial(add,1)print add ...

  7. C#如何使用右下角托盘图标notifyIcon

    1 拖放一个NotifyIcon控件,并设置图标,还有显示的文字   2 双击这个控件,即当最小化了主窗体,然后双击这个右下角图标的时候,要显示主窗体(大部分程序的用户体验都是这样干的,比如QQ,双击 ...

  8. Java总结之网络

    [网络基础概念] 什么是计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机能够方便的互相传递信息,共享硬件.软件.数据信息等资源 ...

  9. 【code】flex_进度条样式

    近期打算吧硬盘中的资料记录在博客中,实用的就当是个分享,无用的就当是个备份,还望大家不要见怪. 一共4个文件: JinDuTiaoItem.mxml: <?xml version="1 ...

  10. python模块之 paramiko(转载)

    paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能.这是一个第三方的软件包,使用之前需要安装. 1 基于用户名和密码的 sshclient 方式登录 # 建立一个s ...