分布式系列一: 概述

分布式系统的特点

  • 高并发,大流量(qps,tps)
  • 海量数据

什么是分布式

分布式系统是由很多计算机组成, 他们之间的通信通过网络连接完成, 对外表现为一个整体.

分布式技术上需要解决两个问题, 一个是业务拆解, 一个是节点通信.

分布式和集群的关系

分布式是指一个系统由多个业务模块组成,他们分别部署到不同服务器;
集群是指一个业务部署到多个服务器;

分布式发展历史

  • 1964年IBM发布大型机之后, 引领系统向集中式方向发展;

  • PC机发展起来后, 它的性能和计算能力得到迅猛发展, 同时集中式发展出现瓶颈; 标志性的事件是淘宝的去IOE运动

    IOE 是指IBM服务器, Oracle数据库集群, EMC存储

    lamp: linux+apache+mysql+php

  1. 单服务器: 应用+DB
  2. 应用和DB分离
  3. 应用集群, DB (问题? session, 集群请求转发, 集群方案:f5硬件, lvs软件)

    会话方案: 1.session sticky; 2. session replication; 3. 集中式session; 4. cookie

  4. DB集群, 读写分离 (问题? 同步,数据库路由(mycat))
  5. 搜索引擎 (问题? 实时或定时同步)
  6. Nosql缓存
  7. DB的水平/垂直拆分
  8. 业务服务拆分
  9. 各业务做集群

分布式系统的监控

调用跟踪和调用链, 服务器状态监控

zipkin, zabbix等

分布式环境特点

  1. 分布式部署,包括机房硬件也包括软件
  2. 并发性, 多个节点访问同一资源
  3. 无序性, 网络通信导致的信息传输顺序不一致

分布式环境导致的问题

  1. 网络通信问题(各种原因导致的网络连接失败)
  2. 三态问题 (成功,失败,超时)
  3. 脑裂, 网络分区问题: 网络问题导致集群会分为若干独立的集群
  4. 分布式事务

中心化和去中心化

  • 冷备和热备 master选举, zookeeper/etcd

CAP/BASE

CAP

仅仅适用于原子读写的非数据库场景, 不适用数据库.

  • C 一致性, 集群中所有节点的数据保持一致
  • A 可用性, 每个请求都能接收到一个响应, 无论成功或失败
  • P 分区容错, 脑裂, 分布式场景必然存在此问题

因为P在分布式下必然存在, 所以C和A不能同时存在, 只能满足CP/AP其中之一.

BASE

基于CAP理论, 主要解决分布式环境下数据库存在的问题. 虽然XA事务可以保证分布式下数据库的ACID特性, 但会损失性能. 基于此eBay提出了BASE(Basically Available, Soft-state,Eventually consistent)理论, BASE理论放宽了事务ACID要求.

BA: 数据库分片存储, 其中一片被破坏, 不影响其他片数据的使用,实际上是实现了部分可用性

S: C/S模式的系统中, Server端是否有状态决定了系统是否具备良好的水平扩展,负载均衡,故障恢复等特性.
Server端承诺会维护Client端状态数据, 这个状态仅仅维持一小段时间,过后Server端就丢弃这个状态,恢复正常.

E: 数据最终一致性

posted @ 2018-09-14 13:26  罪恶斯巴克  阅读(473)  评论(0编辑  收藏  举报