节点是指一个可以独立按照分布式协议完成一组逻辑的程序个体。在具体的项目中,一个节点表示的是一个操作系统上的进程。
副本机制
副本指的是在分布式系统中为数据或服务提供冗余。
数据副本指在不同的节点上持久化同一份数据,当出现某一个节点的数据丢失时,可以从副本读取数据。数据副本是分布式系统中结果数据丢失的唯一手段。
服务副本表示的是多个节点提供相同的服务,通过主从关系来实现服务的高可用方案。
中间件
中间件位与操作系统提供的服务之外,又不属于应用,它是位与应用和系统层之间为开发者方便的处理通信,输入和输出的一类软件,能够让用户关心自己应用的一部分。
架构的发展过程
一个成熟的大型网站系统架构并不是一开始就设计的非常完美的,也不是一开始就具备高性能,高可用,安全性等特性,而是随着用户量的增加,业务功能的扩展慢慢完善演变过来的。在这个发展过程中,开发模式,技术架构等都会发生非常大的变化。
假如系统具备一下功能:
用户模块:用户注册和管理
商品模块:商品展示和管理
交易模块:创建交易及支付结算
阶段一:单应用架构
系统的初级都是应用和数据库都放在一台服务器上。
阶段二:应用服务器和数据库服务器分离
随着网站的用户量增大,流量增大,对应用服务器和数据库服务器单独的部署机器,这样可以增加系统的性能,提高访问的效率,提高单机的负载能力和容灾的能力。
阶段三:应用服务器集群-应用服务器负载告警
随着访问量和流量的增加,假设数据库没有遇到瓶颈,对应用服务器集群来对请求进行分流,提高程序的性能。存在的问题:用户的请求由谁来转发,session如何来管理的问题。
阶段四:数据库压力变大-数据库读写分离
读写分离的话,这样以后的请求,查询的请求就可以去从库里面读数据,写的数据可以到主库中了,但是会带来几个问题:
1.主从的数据库之间的数据同步:可以使用mysql自带的master-slave方式实现主从复制
2.对应的数据源的选择:采用第三方数据库中间件,例如:mycat
阶段五:使用搜索引擎缓解读库的压力