网络相关

一、cookie和session的区别 

1、cookie存放在客户浏览器,session存放在服务器

2、cookie不安全,其他人可以分析本地的cookie进行cookie欺骗

3、session会在一定时间内保存在服务器上,访问增多会占用服务器性能

4、单个cookie保存的数据不能超过4K,很多浏览器限制一个站点最多保存20个cookie

5、登录信息等重要信息存放为session,其他信息放在cookie

二、浏览器访问百度的过程

1、通过DNS服务器解析出IP地址

2、发送TCP3次握手进行连接

3、使用HTTP协议发送请求数据给WEB服务器

4、WEB服务器收到请求后,查询到结果,原路返回给浏览器

5、浏览器接收到数据通过渲染功能显示网页

6、浏览器关闭TCP连接,4次挥手结束,完成整个过程

三、GET和POST区别

1、GET请求数据会暴露在地址栏中,POST请求不会

2、GET请求传输数据会受URL长度限制,POST不会

3、POST安全性比GET高

4、GET效率比POST高

四、HTTP和HTTPS区别

1、HTTPS协议需要到CA申请证书,需要一定费用

2、HTTP信息是明文传输,HTTPS是具有安全性的SSL加密传输协议

3、HTTPS和HTTP使用的是完全不同的连接方式,前者端口443,后者80

4、HTTP连接简单,是无状态的,HTTPS比HTTP安全

五、TCP的2MSL

1、为了保证客户端发送的最后一个ACK报文段能够到达服务器

2、防止已经失效的连接请求报文段出现在本连接中。

六、微服务间通信:Restful与RPC

为什么使用微服务

 1、单一应用架构

  •  当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。
  •  此时,用于简化增删改查工作量的数据访问框架(ORM) 是关键。

2、 垂直应用架构

  •  当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
  •  此时,用于加速前端页面开发的 Web框架(MVC) 是关键。

 3、分布式服务架构

  •  当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
  •  此时,用于提高业务复用及整合的分布式服务框架(RPC) 是关键。

4、 流动计算架构

  •  当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
  •  此时,用于提高机器利用率的资源调度和治理中心(SOA) 是关键。

平台随着业务的发展从 All in One 环境就可以满足业务需求发展到需要拆分多个应用,并且采用MVC的方式分离前后端,加快开发效率;在发展到服务越来越多,不得不将一些核心或共用的服务拆分出来,其实发展到此阶段,如果服务拆分的足够精细,并且独立运行,我觉得就可以将之理解为一个微服务了。

SOAP

简单对象访问协议是一种数据交换协议规范,是一种轻量的、简单的、基于XML的协议的规范。SOAP协议和HTTP协议一样,都是底层的通信协议,只是请求包的格式不同而已,SOAP包是XML格式的。

SOAP的消息是基于xml并封装成了符合http协议,因此,它符合任何路由器、 防火墙或代理服务器的要求。

SOAP可以使用任何语言来完成,只要发送正确的soap请求即可,基于soap的服务可以在任何平台无需修改即可正常使用。

Restful

Restful是一种架构设计风格,提供了设计原则和约束条件,而不是架构,而满足这些约束条件和原则的应用程序或设计就是 Restful架构或服务。

主要的设计原则:

  •  资源与URI
  •  统一资源接口(HTTP方法如GET,PUT和POST)
  •  资源的表述
  •  资源的链接
  •  状态的转移

总之,RESTful的核心就是后端将资源发布为URI,前端通过URI访问资源,并通过HTTP动词表示要对资源进行的操作。

RPC

RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。

RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯)

RPC 是一个请求响应模型。客户端发起请求,服务器返回响应(类似于Http的工作方式)

RPC 在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)。

4种典型RPC远程调用框架

  1. RMI实现,利用java.rmi包实现,基于Java远程方法协议(Java Remote Method Protocol)和java的原生序列化。
  2. Hessian,是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 基于HTTP协议,采用二进制编解码。
  3. thrift是一种可伸缩的跨语言服务的软件框架。thrift允许你定义一个描述文件,描述数据类型和服务接口。依据该文件,编译器方便地生成RPC客户端和服务器通信代码。
  4. dubbo,阿里的RPC框架。
  5. 还有SpringCloud框架,微服务全家桶。为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。

SOA(Service-Oriented Architecture):

面向服务的架构。SOA提倡将不同应用程序的业务功能封装成“服务”并宿主起来,通常以接口和契约的形式暴露并提供给外界应用访问(通过交换消息),达到不同系统可重用的目的。

SOA是一个组件模型,它能将不同的服务通过定义良好的接口和契约联系起来。服务是SOA的基石。

微服务和SOA的区别:

微服务是SOA架构演进的结果。两者说到底都是对外提供接口的一种架构设计方式,随着互联网的发展,复杂的平台、业务的出现,导致SOA架构向更细粒度、更通用化程度发展,就成了所谓的微服务了。

总之,微服务是SOA发展出来的产物,它是一种比较现代化的细粒度的SOA实现方式。

SOA与微服务的区别在于如下几个方面:

  1.  微服务相比于SOA更加精细,微服务更多的以独立的进程的方式存在,互相之间并无影响;
  2.  微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制;
  3.  微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。
原文地址:https://www.cnblogs.com/kingshine007/p/11482526.html