专业的解释能让你显得很专业!
分布式相关
去IOE运动
IOE 指的是 IBM 小型机、Oracle 数据库、EMC 的高端存储;
副本机制
副本(replica/copy)指在分布式系统中为数据或服务提供的冗余。
CAP原则
Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。
分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:
● 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
● 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
● 分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
base原则
Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写;
BASE就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。
基本可用
正常情况下,一个在线搜索引擎需要在0.5秒之内返回给用户相应的查询结果,但由于出现故障(比如系统部分机房发生断点或断网故障),查询结果的响应时间增加1~2秒。 功能上的损失:正常情况下,在一个电子商务网站上进行购物,消费者几乎能够顺利地完成每一笔订单,但是在一些节目大促购物高峰的时候,由于消费者的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面。
- 弱状态
弱状态也称为软状态,和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
- 最终一致性
最终一致性 最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。
-
分布式系统的难点
- 三态
在集中式架构中,我们调用一个接口返回的结果只有两种,成功或者失败,但是在分布式领域中,会出现“超时”这个状态。那么需要做幂等设计。
那么为了保证分布式事务,其实根据 CAP 和 BASE 理论,不可能在高可用分布式情况下做到一致性,一般都是最终一致性保证。
- 负载均衡
为了保证请求到达合理的集群中的机器进行执行。需要一定的路由算法,随机算法、轮询算法、加权轮询算法、hash算法、最少访问等。
- 一致性
数据被分散或者复制到不同的机器上,如何保证各台主机之间的数据的一致性。
微服务
-
SOA(Service Oriented Architecture),“面向服务的架构”
核心问题:
-
系统集成:站在系统的角度,解决企业系统间的通信问题,把原先散乱、无规划的系统间的网状结构,梳理成规整、可治理的系统间星形结构,这一步往往需要引入一些产品,比如 ESB、以及技术规范、服务管理规范;这一步解决的核心问题是【有序】
-
系统的服务化:站在功能的角度,把业务逻辑抽象成可复用、可组装的服务,通过服务的编排实现业务的快速再生,目的:把原先固有的业务功能转变为通用的业务服务,实现业务逻辑的快速复用;这一步解决的核心问题是【复用】
-
业务的服务化:站在企业的角度,把企业职能抽象成可复用、可组装的服务;把原先职能化的企业架构转做技术人的指路明灯,做职场生涯的精神导师变为服务化的企业架构,进一步提升企业的对外服务能力;“前面两步都是从技术层面来解决系统调用、系统功能复用的问题”。第三步,则是以业务驱动把一个业务单元封装成一项服务。这一步解决的核心问题是【高效】
-
微服务架构
微服务架构其实和 SOA 架构类似,微服务是在 SOA 上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。组件表示一个可以独立更换和升级的单元,就像 PC 中的CPU、内存、显卡、硬盘一样,独立且可以更换升级而不影响其他单元。如果我们把 PC 作为组件以服务的方式构建,那么这台 PC 只需要维护主板和一些必要的外部设备。CPU、内存、硬盘都是以组件方式提供服务,PC 需要调用 CPU 做计算处理,只需要知道 CPU 这个组件的地址即可。
-
SOA 和微服务架构的差别
微服务不再强调传统 SOA 架构里面比较重的 ESB 企业服务总线,同时 SOA 的思想进入到单个业务系统内部实现真正的组件化
Docker 容器技术的出现,为微服务提供了更便利的条件,比如更小的部署单元,每个服务可以通过类似 Node或者 Spring Boot 等技术跑在自己的进程中。
还有一个点大家应该可以分析出来,SOA 注重的是系统集成方面,而微服务关注的是完全分离。
web网络
-
CDN
是 Content Delivery Network 的缩写,表示的是内容分发网络。CDN 的作用是把用户需要的内容分发到离用户最近的地方,这样可以是用户能够快熟获取所需要的内容。CDN 其实就是一种网络缓存技术,能够把一些相对稳定的资源放到距离最终用户较近的地方:
-
灰度发布
灰度发布系统的作用在于,可以根据自己的配置,来将用户的流量导到新上线的系统上,来快速验证新的功能修改,而一旦出问题,也可以马上的恢复,简单的说,就是一套A/BTest 系统。对新应用进行分批发布,逐步扩大新应用在整个及群众的比例直到最后全部完成。
-
ARP
是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。
-
Http协议返回码
204 No Content
206 Partial Content
301 Moved Permanently
302 Found 临时性重定向 303 See Other
304 Not Modified 该状态码表示客户端发送附带条件的请求 2 时,服务器端允许请求访问资源,但未满足条件的情况。
400 Bad Request 该状态码表示请求报文中存在语法错
401 Unauthoriz 该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。
403 Forbidden 该状态码表明对请求资源的访问被服务器拒绝了。
404 Not Found 该状态码表明服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。
5XX 服务器错误
500 Internal Server Error 该状态码表明服务器端在执行请求时发生了错误。也有可能是 Web 应用存在的 bug 或某些临时的故障
503 Service Unavailable 该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。