一、发展
世界上第一台电子计算机ENIAC于1946年2月14号诞生于宾夕法尼亚大学。
冯诺依曼结构包括:输入设备、存储器、输出设备、运算器、控制器(运算器加控制器为CPU)。
CISC,Complex Instruction Set Computer(复杂指令集),面向个人。
RISC,Reduced Instruction Set Computer(精简指令集),面向企业。
去IOE:IOE指IBM小型机、Oracle数据库、EMC的高端存储,采用oracle数据库传统集中式的架构的tuozhan主要采用向上拓展的方式,即通过增加CPU、内存、磁盘等方式提高处理能力。这种架构越不适应海量数据对计算能力的要求。
二、分布式系统的意义:
三、分布式系统中的概念:
集群:对于同一个系统使用多个服务器。
分布式:分布处理逻辑。
节点:一个可以独立按照分布式协议完成的一组逻辑的程序个体。
副本机制:为数据和服务提供的冗余。
中间件:位于操作系统提供的服务之外,又不属于应用。是位于应用和系统层之间为开发者方便的处理通信、输入输出的一类软件。
四、分布式架构的演进过程
1、单应用架构:把所用软件和应用都部署在一个单机上。
2、应用服务器和数据库服务器分离:web服务器和数据库服务器分离,提高了单机的负载能力,也提高了容灾能力。
3、应用服务器集群-应用服务器负载告警:提升了应用服务器的负载能力。带来的问题:1.用户由谁来转发到具体的服务器。2.用户访问到不同的服务器时如何维护session。解决:添加中间件,负载均衡器
4、数据库压力变大,使数据库读写分离。带来问题:主从数据库之间的同步,可以使用mysql自带的master-slave方式实现主从复制;对应数据源的选择,采用第三方数据库中间件,如mycat。
5、使用搜索引擎缓解读库的压力。这样能提高查询速度,但也带来问题,如维护索引的构建。
6、引入缓存机制缓解数据库的压力。对于热点数据,可以使用mencache、redis等来作为我们应用层的缓存;使用nosql的方式限制某些ip的访问频率。
7、数据库的水平垂直拆分。
垂直拆分:把数据库不同业务数据拆分到不同的数据库。
水平拆分:把同一个表中的数据拆分到两个甚至更多的数据库中。
8、应用的拆分:按照领域模型拆分为多个子系统。
这是各种子系统间可能会相互调用,如用户数据需要在商品和交易中都需要查询。此时可能通过走服务化的方式进行解决。
服务之间的通讯可通过RPC技术,如webservice、hessian、http、RMI等等。
总体梳理:
分布式领域中冯诺依曼模型的变化(类比)
输入设备的变化
在分布式系统架构中,输入设备可以分两类,第一类是互相连接的多个节点,在接收其他节点传来的信息作为该节点的输入;另一种就是传统意义上的人机交互的输入设备了 。
输出设备的变化
输出和输入类似,也有两种,一种是系统中的节点向其他节点传输信息时,该节点可以看作是输出设备;另一种就是传统意义上的人际交互的输出设备,比如用户的终端 。
控制器的变化
在单机中,控制器指的是 CPU 中的控制器,在分布式系统中,控制器主要的作用是协调或控制节点之间的动作和行为;比如硬件负载均衡器; LVS 软负载;规则服务器等 。
运算器
在分布式系统中, 运算器是由多个节点来组成的。运用多个节点的计算能力来协同完成整体的计算任务 。
存储器
在分布式系统中,我们需要把承担存储功能的多个节点组织在一起,组成一个整体的存储器;比如数据库、 redis(key-value 存储) 。
五、分布式系统的难点
三态:在集中式架构中,调用一个接口返回的结果只有成功和失败,但在分布式领域中会出现“超时”这个状态,即未知。
分布式事务:确保ACID。
负载均衡
一致性:确保各台数据库主机数据的一致性。
故障的独立性:分布式系统中各个节点的故障是独立的,确保一个节点故障不会引起其他节点的宕机。