【架构笔记】基础篇02 网络模型与细节思维方式构建

概要

  • 网络模型4层与5层与7层.
  • Socket是什么?
  • 回环地址又是什么?跟管道有什么区别?
  • 在软件架构时,何为”可运维性”?
  • 我们做架构需要考虑什么事情?
  • 在购买刀片机/云服务时,经常会发现N种不同的计算机类型.这是怎么回事?跟架构有什么关系?
  • 网络模型与规划的差距对系统架构设计的影响有多大?
  • 这些知识实际上是如何落地的?具体能落地到什么地步,该如何考虑?

网络模型的分层

标准的OSI7层模型:

 

 OSI5层模型:

 

OSI4层模型:

 

 

 

 

 

 

 

不同层对应的协议列表:

 

 

 

Socket是什么?

Socket光在计算机专业,就能代指好几个内容.

1.网络通信的socket

2.Unix Domain Socket.

3.CPU Socket,指的是主板与CPU连接的那一堆东西

 

 

好玩的是:Socket最初是加利福尼亚大学伯克利分校给Unix开发的网络通信接口(与上面的第2个不同),后来随着TCP/IP的发展,诶~就成了通用的标准接口了.

所以Windows也支持. 而且,微软最开始有自己的windows socket,只支持TCP/IP协议,后面的才更新的新的,所以在linux与windows 下开发原始套接字的时候创建方式都有变化.例如CPP可绑定的参数是不一样多的.

由于套接字是有一定统一性的,根据接口不变原则. 绝大多数的套接字过程无非如下:

侦听方:bind->Listen->AcceptClient->ReceviceData->DoWhat you want->Send

连接方->Connect->send->ReceiviceData

 

CPU跑的最欢,下来是主存,然后是外存.(下一节课细讲) 那么网卡是外接器件,算输入输出类型的内容. 而且造价也低. 按照这个概念. 网卡的速度,应该..不快?

非常容易推理的一个事情就是.

如果某一个请求需要经过网卡. 那么它就可以说是属于IO操作了.

根据CPU与IO之间的运行原理,我需要”异步”它.

恭喜你,如果你能想到. 所谓的libuv的IOCP是怎么来的就理解了. 要是你想实现KestrelServer,就是垒代码问题了.

 

在软件架构时,何为”可运维性”?我们做架构需要考虑什么事情?

可能很多人都知道可维护性. 有人清楚”可运维性”是什么意思嘛? 当然,这个词貌似是生造的,但是表达的意思非常好. 也能体现架构师的一个非常重要的作用.

架构师值钱,并不是值钱在所谓的设计良好的软件,能够XXX,其实这些内容理论上SSE即可完成. 而架构师值钱的点还有一个很重要的地方:”可运维性”. 简单来说,至少有下面这些内容需要满足:

1.兼容性,包括但不限于:接口,函数,参数,返回值

2.性能报告:多久会崩溃,人数到达多少会崩溃,流量峰值到达多少会死,击穿条件,边界.

3.数据节点跳转个数:也就是一条数据从收到到最后返回结果总共跳转了多少次.

4.故障隔离与降级:并且提供隔离后不会造成雪崩的情况.

5.访问策略控制

6.异步&同步控制:不同的状态分布在不同的节点上,做不同的事情与倾向点.

 

 

网络模型与规划的差距对系统架构设计的影响有多大?

CDN全称:Content Delivery Network或Content Ddistribute Network,即内容分发网络。

CDN设计思路 避让:尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。

检测:通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时监测网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求。

分发:根据监测情况重新导向离用户最近的服务节点上。

购买刀片机/云服务时如何选择?

计算型 适合跑业务

高主频 适合做job,频繁切换任务,做更多的调度

 

这些知识实际上是如何落地的?具体能落地到什么地步,该如何考虑?

思考题:

第一个很简单的问题. 为什么我不推荐使用ASP.NET全家桶?

第二个问题,或许需要思考一下. RestFul的微服务缺陷在哪里?

第三个问题就需要思考了. 什么时候用什么? 场景落地.

 

 

声明:节选自软谋架构课堂笔记 ben

posted @ 2020-05-13 20:03  nontracey  阅读(289)  评论(0编辑  收藏  举报