大型网站技术架构演进与性能优化(一)——分布式改造

什么是分布式

所谓的分布式改造,就是让系统尽量的无状态化,或者让有状态的信息封装在一定范围内,以免限制应用的横向拓展。简单来说,就是当一个应用的少数服务器宕机后,不会影响整体业务的稳定性。
想做分布式改造必须解决以下几个问题:
(1)应用需要微服务化,即将大量粗粒度的应用逻辑拆小做服务化改造。
(2)必须先建立分布式服务框架。必须具备分布式配置系统,分布式RPC框架,异步消息系统,分布式数据层,分布式文件系统,服务的发现,注册和管理。
(3)必须解决状态一致性的问题。

典型的分布式架构

分布式架构与传统的单机架构最大的区别在于可以横向拓展和纵向拓展。
横向拓展主要解决应用架构上的容量问题。例如增加服务机器以支持PV。
纵向拓展主要解决业务的拓展问题。当业务不断拓展时,需要对不同业务进行不同层次的划分,以支持更细的业务组合。
三种分布式架构
(1)通过负载均衡策略进行服务器的横向拓展
(2)Master-slave模式的分布式集群。由节点管理器Master将访问的路由规则推给实际发起请求的客户端,这样客户端就可以直接与节点进行通信了,避免了负载层的代理。
(3)Leader模式的分布式集群。没有单独的Master,每个节点的功能都是一样的,集群的初始化时会选取一个Leader承担Master的功能,如果Leader失效,会重新选取Leader。好处是不用单独考虑Master 的可用性,但是增加了集群维护的复杂度。

分布式配置框架

  • 什么是配置框架
    分布式配置框架可以说是其它分布式框架的基础,因为在分布式系统中要做到所有机器节点都完全对等几乎是不可能的,必然有某些机器和某些集群存在差异。但又要保证程序代码是一份,解决这些差异的唯一办法就是差异化配置,配置框架就承担着这些个性化的定制功能,他做的工作就是把差异性封装到配置框架的后台中,使集群的每台机器节点看起来都是一致的,只是某些配置数据有差异。
  • 配置框架的原理
    向一个控制台服务端同步一个最新的KV集合或者任一文件。难点在于集群管理机器数量的能力和配置下发的延时率。
  • 配置框架的两种管理方式
    其一:拉取模式。拉取模式就是Client集群主动向ConfigServer机器询问配置信息是否有更新,如果有则拉取最新的信息更新自己。缺点是没法及时的更新配置信息,必须等Client请求才可以。一般Client会设置一个定时的更新周期,通常是几秒钟。
    其二:推送模式。这种模式是ConfigServer感知到配置信息的变化时主动把信息推送给每个Client。这个方案需要ConfigServer对每个Client保持心跳,这使得ConfigServer的管理难度增加了,当Client数据很大时,ConfigServer将会成为瓶颈。
  • 实际应用场景的选择
    如果对配置下发延时率比较敏感而且Client数据千级别时,推荐用推送模式,Zookeeper就是推送模式的框架;当Client数据级在万级以上时推荐使用拉取模式。
  • 考虑两个问题
    由于是典型的Master/Slave模式,要求在数据下发时要控制节奏,不要让ConfigServer的网卡成为瓶颈,尤其是当下发的数据量较大时。
    保证下发的到达率,需要准确的知道需不需要更新,一般是增加版本号互相对比,自我更新。

总结

下一节我们一起看一下分布式RPC框架。


作者:select you from me
来源:CSDN
转载请联系作者获得授权并注明出处。

你可能感兴趣的:(大型网站技术架构演进与性能优化)