• 分布式之架构演化和进程之间如何通信


    系统架构演化

     

    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.实体层

    电脑要组网,传输信息---连起来---电缆光缆双绞线+无线(蓝牙)  

    电脑之间能传递啥? 01的电信


     

    通过网卡,每一台电脑都会有一个网卡;每一个网卡都有一个MAC地址;

    ARP协议:A主机需要传输数据给D 主机;   Ai:广播

    A主机发送广播信息:B/C/D 主机收到后,回复自己的MAC地址;A主机就就能得到局域网范围内的

    MAC地址;

    A---D:信息中说明:这条消息是发送给谁的;描述信息和具体的数据内容------广播----所有的网卡又

    会都接收到数据信息;  要判断,看描述信息中是否是发送给自己,如果是发送给自己的,就接受;否

    则就丢弃;

    2.链路层

    01有啥意义,需要用二进制去表达信息

    还需要给电信号分组,把数据分拆head+data两块儿  

    head(18)做好数据描述, 数据data就可以拆分开了,有意义了

    如果数据太多,可以拆分成多个帧  

    以上解读:传输是通过MAC地址广播式来传输;广播传输肯定的效率低;在互联网上不可能这样传输

    的;

    需要一个规则来定位到某一台电脑上去;

    互联网是又很多组子网来组合起来;

    3.网络层

    基于MAC能完成数据传递---是广播的形式--人手一份儿---效率低,肯定得局限在子网络(直接物理连

    接,相同的子网掩码)

    需要一个合适的主机定位规则:  

    IP地址:-----不同的子网

    MAC地址:子网的主机

    数据可以传输到某一个电脑上:电脑上会有不同的应用程序;数据传输的到时候,只是传输到某一台电

    脑肯定是不够的;需要定位到某一个具体的应用程序;

    4.传输层

    数据已经能准确的传输到某台电脑,但是电脑上有很多应用程序,你得告诉我,数据是哪个应用程序

    的?

    还有一个端口号:基于以上,就可以把消息传输到某一天电脑上的某一个应用程序;

      

    这样就建立了链接,再开始通信。 不主动取消,就是长期链接(当然可能断网)  

                                   

    5.应用层

    应用层协议:其实就是把tcp的包里的数据解读一下

    就是这里面传输数据的格式

    Httpurl-httpmethod-httpheader-form  

    应用层协议就是解读传递来的字符串是什么格式  

    前面4层是做到让一个程序给另外一个程序正确的传递了一个字符串,应用层协议就是用规定字符串的格

    式和意义的

    数据传输协议:

    UDP: 只负责传输,是否能够传输到目的地,他不管,可能会存在丢包;

    TCP:是UDP一种升级版,支持确认模式;A传输数据给B,   1.A传递一个数字1 BB接收到以后,

    再传输一个数字1 + x;     A :接受到一个数字1+x, A就知道B ,  A 还要再发送一次数据给B,  发一个

    1+x+c 发给BB接收到就是 1+x+c   B就确定  B发给A 消息A接收到了;   才建立通信链接;  后续就

    以此链接通信;

    Http:无状态协议;   两个服务之间 在数据传输的过程中;每一次之间传输数据都是相互不影响的;     

    每一次都是独立的链接;

    WebService 协议


     

  • 相关阅读:
    JAVA LinkedList和ArrayList的使用及性能分析
    学习笔记—Node中的模块调试
    学习笔记—Node的核心模块
    学习笔记—Node中VM模块详解
    学习笔记—Node中require的实现
    入园了
    【引用】asp.net服务器推送(ServerPush)和客户端拉拽技术
    ajax xmlHttp.responseXML取不到值问题备忘
    oracle实时插值速度突然变慢问题解决办法
    [转帖 作者: fuyuncat 来源: www.HelloDBA.com ]Oracle IO问题解析
  • 原文地址:https://www.cnblogs.com/LZXX/p/15903831.html
Copyright © 2020-2023  润新知