微服务架构的演变:
微服务是一种松散耦合的,每个服务之间高度自治并且使用轻量级协议进行通信的可持续部署的分布式架构体系,这句话包含了微服务的特点,微服务架构和其他架构有什么区别 ? 以下是一些常见的软件架构:
一.单体应用架构:
单体应用架构是最简单的软甲架构,常用于传统的应用软件开发以及传统Web应用。传统Web应用,一般将所有功能模块都打包成(.jar/.war),在WEB应用服务器(Tomcat、Jboss、Jetty、webShare)中部署、运行。随着业务复杂度增加、技术团队规模扩大,在一个单体应用架构维护代码,会降低开发效率,即便处理一个小小的需求,也需要将所有机器上的的应用全都部署一遍,增加运维的复杂度。
弊端:被很多用户使用以后,就会产生一些严重的问题,CPU、硬盘有一个性能上限,假如一台只能接受5W同时访问的服务器,那假如有一年用户量暴涨到500W来访问就会出现:
1、服务器过载 CPU、内存、打满(服务器响应缓慢、宕机)
2、用户通过HTTP请求,每一次请求会发送一定数量的数据包、带宽被用尽-访问转圈圈,404无法访问
解决方法:
1.垂直扩容
可以通过更新硬件,提升带宽
2.水平扩容
前面讲到了用户出现了500W并发访问使用垂直扩容的方法可以解决,可以试想一下这样一个场景。假如经过几年的累加,用户量达到了5000W呢
解决方法:
集群架构模式
那么就可以多开几台服务器来解决服务器的压力,但是会出现一个问题就是每个服务器的属名不一致(IP地址不一致)。用户明明在注册界面注册了但是在登录的时候查不到他注册的信息登录不了,问题是怎么导致的呢,就是不同的服务器不同的端口接收的请求不同,导致数据不同步,该怎么解决请看下面的图:
下面不同的端口号代表一个个服务器 用户去访问只访问qq.com10.123.243.220这个端口。通过负载均衡将所有请求,均衡分配给每一台服务器。(然后老板就会说做的做的好,加薪)
二.SOA架构
当某一天使用单体架构发现很难推进需求的开发、以及日积月累的技术债时,很多企业会开始做单体服务的拆分,拆分的方式一般有水平拆分和垂直拆分。垂直拆分是把一个应用拆成松耦合的多个独立的应用,让应用可以独立部署,有独立的团