引入NoSQL: 非关系型数据库
文档数据库
列式数据库
....
DFS: 非结构化数据
TFS, MogileFS: 适用于海量小文件
HDFS, GFS: 少量大文件
CDN的使用:
越向后,系统的访问量越大,这时内部整个机房的扩容若在继续扩大,不在是解决问题最有效的手段,而且主机数量也总有上限,但是前端的压力已经让负载和缓存吃不消了,在这时最佳的手段就是引入CDN,目前国内比较知名的CDN厂家有 BAT,蓝汛等。 CDN它能够实现让用户直接在家门口的缓存服务器上获取要我们的网站数据,这样就有效的分散了到达我们主站的流量压力,当用户访问我们网站时,智能DNS通常会,根据用户所在地区为用户解析域名,它会依据缓存服务器距离用户地理位置最近,或带宽最大等信息,做智能判断并返回用户一个域名,这个域名通常是一个负载均衡器的域名,用户进行二次解析后,得到距离自己最近的缓存集群,该缓存集群的负载均衡器将用户请求接入进来,在后端缓存服务器上查询,若命中,则直接返回数据给用户,若未命中,则向最近的缓存节点查询,无数据则由该缓存节点,向我们网站发起请求,网站响应该请求时,先查询本地缓存,命中则直接返回,未命中则继续向下,到应用服务器,由应用服务器处理此请求,并通过查询数据库等一系列业务逻辑处理,返回结果给CDN的缓存节点,由该节点再向用户返回数据。
应用拆分:
根据业务特性拆分
根据用户拆分
如: 用户注册应用
用户登录应用
用户信息维护应用
根据对底层应用的调用进行拆分
异步: 解耦
消息中间件:
它是协调多个应用之间,通过消息传递的方式来实现其功能协调的机制,它的整个工作过程是
通过异步方式实现的。所以它在分布式系统中,是消息接收和发送的基础性软件。
它最大的特点就是:异步和解耦。
MOM:Message-oriented middleware.
现有的比较知名的消息中间件:
RabbitMQ, ActiveMQ, ZeroMQ(ZMQ)
注: 它们仅能工作于它们支持的模型中。
模块化:
服务化:
当网站的结构发展到服务化后,每个层都可能出现大量重复代码,但这是不可避免的。
一旦架构进入这样的级别,无论是垂直还是水平拆分都会面临ACID被打破的问题,此时只有两种选择,放弃事务 或 引入分布式事务!
在进行Join查询时,也将变得异常困难,原来依赖与外键实现的约束将无从保证等等问题,都将面临巨大的挑战。
面对这些挑战,我们唯一能做到就是从理论出发,结合实际去构建适合自己实际需求的解决方案。