Spring Cloud之微服务架构

Spring Cloud之微服务架构

什么是微服务架构

​ 一个网站的开发,从架构层面来讲,采用一台服务器可以支撑整个网站的运行,这种的称为单体架构,随着用户的访增多,一台服务器的压力过大,难以支撑越来越多的访问量,为了分担服务器压力,这时候便会采用多台服务器集群进行分压处理,通过分负载均衡的方式把访问分散在各个服务器上,减少了某一台服务器的压力,这种方式称为横向扩展(集群)。但是这样也会存在一个问题,网站一般是由多个业务模块组成的,而各个业务模块的访问量可能大小不一,常用的功能访问量大,不常用的功能访问量少,集群模式是把全部业务模块部署到一台服务器上或者说多个主机上,这样存在的问题是会导致硬件资源的不合理分配,例如,用三个高性能的主机部署,这实际上是一种硬件资源的浪费,为什么我们不把模块进行拆分呢,例如,我们可以根据访问量的多少把其分为两个模块,一个访问量多的模块和一个访问量少的模块,每个模块都是一个单独的web服务(微服务),这样的话只需要一个高性能和一个低性能的两台主机部署即可,从而可实现硬件资源的合理分配和利用(其中一个优点),这种架构思想就是微服务架构思想,当然在实际开发中,模块拆分是根据业务需求等多种因素来考虑。另外这是web应用层面上的一个架构演变,不考虑数据库和各种中间件层面的东西。

单体

image-20201013132620383

集群

image-20201013132559812

微服务(分布式)

image-20201013132541708

微服务的主要优缺点

优点

  1. 每个服务之间都是松耦合,在各个阶段都可独立部署和测试,便于维护。
  2. 每个服务功能专一,便于小团队来发,且代码量少,能够快速修改响应。
  3. 便于伸缩和管理,可以只针对某个服务做集群部署。

缺点

  1. 增加运维维护难度,需要掌握一定的DevOps 技巧。
  2. 由于是分布式的,会带来锁,事务等一系列问题。