MySQL架构
逻辑架构
每个虚线框为一层,总共三层。
第一层,服务层(为客户端服务):为请求做连接处理,授权认证,安全等。
第二层,核心层:查询解析,分析,优化,缓存,提供内建函数;存储过程,触发器,视图。
第三层,存储引擎层,不光做存储和提取数据,而且针对特殊数据引擎还要做事务处理。
设计网站可扩展架构的核心思想是模块化,并在此基础之上,降低模块间的耦合性,提高模块的复用性。
分层和分割是模块化设计的重要手段,利用分层和分割的方式将软件拆解成若干个低耦合的独立的组件模块,这些组件模块以消息传递和依赖调用的方式聚合成一个完整的系统。将这些模块通过分布式部署的方式独立部署在独立的服务器(集群)上,从物理上分离模块间的耦合关系,进一步降低耦合性提高复用性。
模块化部署之后的聚合方式主要有分布式消息队列和分布式服务。
网站伸缩性可以分为两类,一种是按功能进行物理分离实现伸缩性,一类是单一功能通过集群实现伸缩。
不同功能物理分离:数据库、缓存、静态资源、可复用服务等纵向分离以及登录、搜索等也逻辑对应的横向分离。
单一功能集群伸缩:通过集群增强服务器计算能力,但需要注意可用性。
具体来说,集群伸缩性又分为应用服务器集群伸缩性和数据服务器集群伸缩性。数据服务器集群伸缩性又分为缓存数据服务集群和存储数据服务器集群。