分布式之架构演化和进程之间如何通信
系统架构演化
1.最开始的时候是下面多个功能模块用一个DB数据库
2.然后分库 演化成每个功能模块用自己的数据库
3.然后再演化成功能和数据库单独一个程序
好处:
1.系统稳定性更好;因为业务肯定多变;职责清晰,每一块负责自己的事儿、可以独立演化;相互不影响
2. 职责更加清晰----专人做专事儿
3. 可以多个服务器为系统服务
4.因为上面是每个功能模块分一个进程如果要交互呢呢?
如下订单;1.生成订单 2.减库存 3. 生成物流信息 4也需要用户
这里就需要需要进程和进程之间进行交互
所以可以通过第三方存储---数据库/RabbitMQ 前后台项目; 后台写入数据库,前台取出数据,达到前后台数据通信;
服务和Remoting
2.服务式
这种是现在最流行的;通过协议来完后进程之间的交互;
协议:定义一种规范;统一标准;
3.RPC服务 RPC也可以做到进程和进程之间交互; gRPC----谷歌来的一个可以支持不同的的RPC;
局限于:.NET平台
网络协议
作用:网络传输数据;
OSI网络开发系统互联
一共是7层协议; 是一个国际的统一标准;在实际应用中,大部分并没有完全遵循这个;
TCP/IP四层模型
网络传输:
分层后:职责更加清晰;每一次之负责每一层的事儿;
TCP/IP五层模型
在一个局域网内;
1.实体层
电脑要组网,传输信息---连起来---电缆光缆双绞线+无线(蓝牙)
电脑之间能传递啥? 0和1的电信
通过网卡,每一台电脑都会有一个网卡;每一个网卡都有一个MAC地址;
ARP协议:A主机需要传输数据给D 主机; Ai:广播
A主机发送广播信息:B/C/D 主机收到后,回复自己的MAC地址;A主机就就能得到局域网范围内的
MAC地址;
A---D:信息中说明:这条消息是发送给谁的;描述信息和具体的数据内容------广播----所有的网卡又
会都接收到数据信息; 要判断,看描述信息中是否是发送给自己,如果是发送给自己的,就接受;否
则就丢弃;
2.链路层
0和1有啥意义,需要用二进制去表达信息
还需要给电信号分组,把数据分拆head+data两块儿
head(18)做好数据描述, 数据data就可以拆分开了,有意义了
如果数据太多,可以拆分成多个帧
以上解读:传输是通过MAC地址广播式来传输;广播传输肯定的效率低;在互联网上不可能这样传输
的;
需要一个规则来定位到某一台电脑上去;
互联网是又很多组子网来组合起来;
3.网络层
基于MAC能完成数据传递---是广播的形式--人手一份儿---效率低,肯定得局限在子网络(直接物理连
接,相同的子网掩码)
需要一个合适的主机定位规则:
IP地址:-----不同的子网
MAC地址:子网的主机
数据可以传输到某一个电脑上:电脑上会有不同的应用程序;数据传输的到时候,只是传输到某一台电
脑肯定是不够的;需要定位到某一个具体的应用程序;
4.传输层
数据已经能准确的传输到某台电脑,但是电脑上有很多应用程序,你得告诉我,数据是哪个应用程序
的?
还有一个端口号:基于以上,就可以把消息传输到某一天电脑上的某一个应用程序;
这样就建立了链接,再开始通信。 不主动取消,就是长期链接(当然可能断网)
5.应用层
应用层协议:其实就是把tcp的包里的数据解读一下
就是这里面传输数据的格式
Http:url-httpmethod-httpheader-form
应用层协议就是解读传递来的字符串是什么格式
前面4层是做到让一个程序给另外一个程序正确的传递了一个字符串,应用层协议就是用规定字符串的格
式和意义的
数据传输协议:
UDP: 只负责传输,是否能够传输到目的地,他不管,可能会存在丢包;
TCP:是UDP一种升级版,支持确认模式;A传输数据给B, 1.A传递一个数字1 给B, B接收到以后,
再传输一个数字1 + x; A :接受到一个数字1+x, A就知道B , A 还要再发送一次数据给B, 发一个
1+x+c 发给B,B接收到就是 1+x+c B就确定 B发给A 消息A接收到了; 才建立通信链接; 后续就
以此链接通信;
Http:无状态协议; 两个服务之间 在数据传输的过程中;每一次之间传输数据都是相互不影响的;
每一次都是独立的链接;
WebService 协议
本文来自博客园,作者:12不懂3,转载请注明原文链接:https://www.cnblogs.com/LZXX/p/15903831.html