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版本是指最小版本 ...
随机推荐
- bzoj4553 [Tjoi2016&Heoi2016]序列 树状数组(区间最大值)+cqd
[Tjoi2016&Heoi2016]序列 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1006 Solved: 464[Submit][ ...
- 特种部队(codevs 1427)
题目描述 Description 某特种部队接到一个任务,需要潜入一个仓库.该部队士兵分为两路,第一路士兵已经在正面牵制住了敌人,第二路士兵正在悄悄地从后方秘密潜入敌人的仓库.当他们到达仓库时候,发现 ...
- python之模块随笔记-sys
模块名:sys sys.argv 实现从程序外部向程序传递参数 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.modules.keys() 返回所有已经导 ...
- 洛谷—— P3386 【模板】二分图匹配
P3386 [模板]二分图匹配(复习) 题目背景 二分图 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行,每 ...
- hdu5618(cdq分治求三维偏序)
题意:给n(n<=100000)个点,坐标为(xi,yi,zi)(1<=xi,yi,zi<=100000),定义一个点A比一个点B小,当且仅当xA<=xB,yA<=yB, ...
- hadoop(2)hadoop配置
hadoop入门(二) hadoop的配置 1.本地模式 2.伪分布式 3.分布式 一.配置linux环境: 1打开虚拟网络编辑器,选择 VMnet1 仅主机模式, 子网 IP 设为 192. ...
- C#代码读写XML
<1> 创建XML文档 using System; using System.Collections.Generic; using System.Linq; using System.Te ...
- go语言中的timer 和ticker定时任务
https://mmcgrana.github.io/2012/09/go-by-example-timers-and-tickers.html --------------------------- ...
- node-load module
javscript :脚本建共享全局名称空间(全局污染). node:实现CommonJS(公共)模块标准. Node加载模块,有两种方式: 1.通过名称 除非是核心模块,否则被引用的模块最后都会映射 ...
- c++命令提示符窗体下打印指定大小的菱形代码
c++命令提示符窗体下打印指定大小的菱形代码 VS2010下,新建空项目.加入源文件,将代码粘贴进去就能够了. 通过改maxRows值的大小,能够控制菱形的大小 #include <stdio. ...