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版本是指最小版本 ...
随机推荐
- poj1984并查集的相对偏移
#include<stdio.h>//典型题 #include<math.h> #define N 40010 struct node { int x,y,z; }pre[N] ...
- bzoj 3224 NOI2004郁闷的出纳员
NOI2004郁闷的出纳员 2013年12月26日6,1818 输入描述 Input Description 第一行有两个非负整数n和min.n表示下面有多少条命令,min表示工资下界. 接下来的n行 ...
- MTK TP手势添加
old: #include "tpd.h" #include "tpd_custom_gt9xx.h" #ifndef TPD_NO_GPIO #include ...
- [K/3Cloud] 如何代码中动态设置当前活动页签
this.GetControl<TabControl>(key).SelectedIndex=目标Index Ps:如下方式隐藏页签: this.View.GetControl(" ...
- UVA 1995 I can guess the structer
模 拟 /*by SilverN*/ #include<algorithm> #include<iostream> #include<cstring> #inclu ...
- Android定位(是否使用GPS进行定位)
TencentLocationRequest request = TencentLocationRequest.create(); request.setRequestLevel(TencentLoc ...
- 【进击后端】Ubuntu 命令行 安装nginx
一.安装nginx apt-get install nginx 安装路径为:/etc/nginx/conf.d 二.配置nginx,在conf.d目录下新建test.conf 新建文件的命令是vi t ...
- [bzoj1485][HNOI2009]有趣的数列_卡特兰数_组合数
有趣的数列 bzoj-1485 HNOI-2009 题目大意:求所有1~2n的排列满足奇数项递增,偶数项递增.相邻奇数项大于偶数项的序列个数%P. 注释:$1\le n\le 10^6$,$1\le ...
- IE11 文档模式空白
环境描述: win7 64位系统 安装了 更新 IE11-Windows6.1-KB2929437-x64.IE11-Windows6.1-KB3008923-x64 解决方案: 卸载 IE11-Wi ...
- JDBC驱动类型
一下内容引用自http://wiki.jikexueyuan.com/project/jdbc/drive-types.html: 一.什么是JDBC驱动程序? JDBC驱动实现了JDBC API中定 ...