网站架构的发展
网站架构的发展也是伴随着访问量的增加、代码的优化(可维护性)、团队协作开发以及部署的方便性而逐渐演化的。网站的访问量不断增加,网站需要做到高性能、高并发、高可用(三高3H)来适应这种变化;随着网站功能的逐渐扩展,代码的复杂度也随即增加,为了能够更好地维护这些代码,我们需要对代码进行规划分层,减少代码的冗余;大型网站一般都是由好几个团队协同开发的,团队与团队之间尽量做到不相互影响(前后端分离也是这个目的),要做到高内聚低耦合。于是我们需要对网站的架构进行设计,以适应不断变化的需求,尽可能达到三高的目标。
单体架构一般指的是所有的功能都放在一个应用服务里;分布式架构则是功能拆分成不同的服务。
架构(上下一一对应):
前两种架构都属于单体架构,项目应用以及数据库基本都部署到一台服务器或虚拟机上;后三种则都属于分布式架构(虽然也可以部署到一台服务器上,但这样划分出服务来就没有意义了)。
其中MVC架构到RPC架构的演化过程中又衍生出项目与数据库分离部署,集群等技术来满足需求,当然在后面的架构中依旧使用这些技术。
SOA架构又存在两种方案,一种方案是不使用RPC(远程过程调用协议,也可成为一种架构),叫webservice,但存在缺陷未被采用;另一种方案是嵌套地利用了RPC,并且引入了服务治理方法ESB(企业服务总线)。可以使用的框架有阿里的dubbo。
最后的微服务架构跟SOA架构又有什么区别呢,它是SOA架构的进一步发展,它是将功能分散到各个离散的服务中然后实现对方案的解耦。服务更原子,自治更小,然后高密度部署服务。其服务的治理方法也更轻量级。阿里的dubbo+zookeeper中间件就可以拿来构建简化的微服务架构;还有springcloud这个框架集也可以用来搭建成熟的微服务架构。
当然随着时代的发展,技术的更新,未来还会有新的架构出现。