今天就来讲讲 互联网网站架构演变过程
传统架构
传统的ssh架构,分为三层架构,web控制层(Controller层),业务逻辑层(service层),数据库访问层(Dao层)
传统的架构也就是大家俗称的单点应用,就是我们刚开始初学JavaEE技术的时候SSH架构或者SSM架构,业务没有进行拆分,都写在同一个项目工程里面,一般适用于个人或者小团队开发,这样的架构模式,一旦有一个模块导致服务不可用,可能会影响整个项目,导致整个项目瘫痪。
这种项目的结构类似于这种
com.controllr
com.service
com.dao
缺点:耦合度太高,一旦某个模块导致服务不可用,可能会影响到其他模块
分布式架构
分布式架构基于传统架构演变过来的
我们来想一个场景,假如有100个java开发人员,都在同一个项目进行开发,可能会产生什么问题了?
首先肯定会产生代码冲突问题,其二任务不好分配,容易起冲突问题
基于这些问题,就衍生出了分布式架构。
分布式架构基于传统架构演变过来的,将传统的项目以项目模块进行拆分成n多子项目,比如我参与了一个供应商商城项目,我们把这个项目拆分成会员项目,支付项目,商品项目等。
项目表达意思:包含业务逻辑层和视图层。项目包含:前台项目(提供给用户)和后台项目(维护管理)
服务表达意思:只包含业务逻辑层,没有视图层
总结:分布式架构与传统架构区别:项目粒度分的更加细,慢慢开始适用于互联网公司开发,耦合度降低。
SOA架构
SOA也是基于分布式架构演变过来的,SOA架构代表面向服务架构,俗称服务化,可以理解为面向与业务逻辑层,将共同的业务代码进行抽取出来的,提供给其他接口进行调用,服务与服务之间通讯采用rpc远程调用技术。
服务概念:将共同的业务逻辑进行拆分,拆分成独立一个项目进行部署,没有视图层。
服务概念理解为接口。
rpc远程调用技术框架
httpclient,springcloud,dubbo,grpc
核心底层socket技术或者netty实现
rpc是远程调用技术,两个或者多个应用实现远程调用,
WebService底层是采用Http协议+XML(SOAP)
SOA架构特点:底层基于SOAP或者ESB(消息总线)实现,底层使用HTTP或者HTTPS协议+重量级XML数据交换格式进行通讯
SOAP是简单对象协议http+xml混合物
微服务架构产生的原因:
首先微服务架构基于SOA架构演变过来
SOA架构的缺点
(1)依赖与中心化服务发现机制
(2)因为SOA架构采用SOAP协议(Http+XML),因为XML传输协议比较占用宽带,整个XML报文中有非长大冗余数据,所以在json中以json轻量级方式替代xml报文传输。
(3)SOA架构服务管理非常混乱,缺少服务管理和治理设施不完善。
微服务架构模式
微服务架构从SOA架构演变过来,比SOA架构粒度更加精细,让专业的人做专业的事情(更加专注),目的是为了提高效率,每个服务与服务之间互不影响,每个服务必须独立部署(独立数据库,独立redis等),微服务架构更加体现轻量级,采用restful风格提供API,也就是使用Http协议+Json格式进行传输,更加轻巧,更加适用于互联网公司敏捷开发,快速迭代产品。