NetCore Netty 框架 BT.Netty.RPC 系列随讲 —(前序) REST API 与 RPC 经典网络基础服务架构
在服务体系架构内,我们所知道的,有两种请求模型: 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 经典网络基础服务架构的更多相关文章
- NetCore Netty 框架 BT.Netty.RPC 系列随讲 二 WHO AM I 之 NETTY/NETTY 与 网络通讯 IO 模型之关系?
一:NETTY 是什么? Netty 是什么? 这个问题其实百度上一搜一堆. 这是官方话的描述:Netty 是一个基于NIO的客户.服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个 ...
- 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序
如何在Visual Studio 2017中使用C# 7+语法 前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...
- 构建NetCore应用框架之实战篇系列
构建NetCore应用框架之实战篇 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建Net ...
- Netty 框架学习 —— Netty 组件与设计
Channel.EventLoop 和 ChannelFuture 这一节将对 Channel.EventLoop 和 ChannelFuture 类进行讨论,它们组合在一起,可以被认为是 Netty ...
- 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 ...
- 构建NetCore应用框架之实战篇(七):BitAdminCore框架登录功能源码解读
本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.简介 1.登录功能完成后,框架的雏形已经形成,有必要进行复习. 2 ...
- 构建NetCore应用框架之实战篇(六):BitAdminCore框架架构小结
本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.小结 1.前面已经完成框架的第一个功能,本篇做个小结. 2.直接上 ...
- 构建NetCore应用框架之实战篇(五):BitAdminCore框架1.0登录功能设计实现及源码
本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.设计原则 1.继承前面框架架构思维,设计以可读性作为首要目标. 2 ...
- 构建NetCore应用框架之实战篇(四):BitAdminCore框架1.0登录功能细化及技术选型
本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.BitAdminCore框架1.0版本 1.1.0版本是指最小版本 ...
随机推荐
- topcoder SRM 639 div2
见这里 http://ygdtc.sinaapp.com/?p=257
- IDA-IDC脚本编写语法
1.IDA脚本编写基础 IDC是IDA内置的脚本语言,其语法与C非常相似,它是一种解释性语言. 执行方法 在IDA中按SHIFT+F2键会弹出一个对话框,把语句直接写在对话框中,点击run就可被运行. ...
- poj1984并查集的相对偏移
#include<stdio.h>//典型题 #include<math.h> #define N 40010 struct node { int x,y,z; }pre[N] ...
- ***XAMPP:报错 Unable to load dynamic library的解决方法
A PHP Error was encountered Severity: Core Warning Message: PHP Startup: Unable to load dynamic libr ...
- springboot 子模块访问不到对应的页面
出现如下错误 解决方案 working directory:没有$MODULE_DIR$该选项,自己输入即可. 完成以上操作就可以正常访问页面了.
- NOIP 2010 关押罪犯
P1525 关押罪犯 题目描述 SS 城现有两座监狱,一共关押着 NN 名罪犯,编号分别为 1-N1−N .他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突. ...
- 携程Apollo(阿波罗)配置中心把现有项目的配置文件迁移到Apollo
说明: 1.这个示例应该算是一个静态迁移,也就是说配置更新后要重启应用才能体现更新,目的是展示现有配置的如何迁移. 2.如果要实现更新配置后动态去更新而不重启应用的操作,比如ZK地址和数据库地址这些, ...
- Windows 2008 R2 SP1部署WSUS 3.0 SP2
1 实验环境 1)域: 域名为fengxja.com: 网段:192.168.0网段,不连接外网. 域功能级别和林功能级别为Windows server 2003模式. 2)DC服务器: 域控制器: ...
- C# .NET如何定义图片按钮
先添加一个按钮,然后修改Image或者BackgroundImage显然不好,我想要按钮透明,就不要放在按钮的方框里,而且鼠标滑过和鼠标点击最好都是我自定义. 我们拉一个PictureBox,然后 ...
- Unix - 文件里构成一个空洞的分析
lseek函数显示地为一个打开文件设置偏移量,文件偏移量能够大于文件的当前长度,在这样的情况下.对该文件的下一次写将加长该文件.并在文件里构成一个空洞,这一点是同意的. 位于文件里但没有写过的字节都被 ...