微服务架构演变过程
微服务架构演变过程
传统单体架构——分布式架构——SOA面向服务架构——微服务架构模式
1、传统架构
传统的架构,也就是为单点应用,也就是大家在早期所学习的JavaEE知识SSH或者SSM架构模式,会采用分层架构模式:
- com.wu.controller -->视图层
- con.wu.dao/mapper --> 数据库访问层
- com.wu.service --> 业务逻辑层
- …
从前端到后台所有的代码都是一个开发者去完成。
该架构模式没有对我们业务逻辑代码实现拆分,所有的代码都写入到同一个工程中里面,适合于小公司开发团队或者个人开发。
该架构模式存在哪些优缺点:
优点:开发简单、运维简单
缺点:该架构模式没有对我们的业务逻辑实现拆分,所有的代码都写入到同一个项目中,只适合小团队或者个人形式开发,不适合团队模式协同工作开发。该架构模式最大的缺点,如果该系统一个模块出现不可用、会导致整个系统无法使用。
应用场景:政府项目、管理系统、crm、oa适合于个人小团队开发。
2、分布式架构
分布式架构模式是基于传统架构模式演变过来,将传统的单点项目根据业务模块实现拆分,会根据不同的业务实现拆分n多个不同子系统:
- 会员系统
- 订单系统
- 支付系统
- 秒杀系统
- 交易系统
- …
案例:京东官网
每个子系统中都有自己的团队来实现开发,具有独立数据库、独立缓存、独立mq。
从而降低我们项目的耦合度,这种架构模式开始慢慢的适合于互联网公司开发团队。
该架构模式存在哪些优缺点:
优点: 可以实现解耦、如果某子系统宕机的情况下,不会影响其他的子系统,适合于多团队人数实现开发。
缺点:部署比较复杂的、开发难度比较大、需要有团队沟通成本。
3、SOA面向服务架构
SOA架构模式也称作为:面向服务架构模式、俗称面向接口开发,将共同存在的业务逻辑抽取成一个共同的服务,提供给其他的服务接口实现调用、服务与服务之间通讯采RPC远程调用技术。
该架构模式的优缺点
优点
- 减少我们代码冗余性问题。
缺点
- 采用SOAP协议实现通讯,xml传输非常重,效率比较低。
- 服务化管理和治理设施不够完善
- 依赖与中心服务发现机制
- 不适合于前后分离架构模式
SOA架构模式特点:
SOA架构通讯中,采用XML方式实现传输数据、在高并发下通讯过程中协议存在非常大冗余性,所以在最后微服务架构模式中使用JSON格式替代了XML。
SOA架构模式实现方案为Web Service或者是ESB企业服务总线 底层通讯协议SOAP协议(Http+XML)实现传输。

4、微服务架构
微服务架构产生的原因
微服务架构基于SOA架构演变过来的,在传统的WebService架构中有如下问题:
依赖中心化服务发现机制
使用Soap通讯协议,通常使用XML格式来序列化通讯数据,xml格式非常喜欢重,比较占宽带传输。
服务化管理和治理设施不完善
微服务架构基本概念
1.项目架构模式
- 前后端分离
2.粒度拆分:
- 微服务架构模式是从SOA架构模式演变过来, 比SOA架构模式粒度更加精细,让专业的人去做专业的事情,目的是提高效率,每个服务与服务之间互不影响,微服务架构中
- 每个服务必须独立部署、互不影响,微服务架构模式体现轻巧、轻量级、适合于互联网公司开发模式。
3.协议:
- 服务与服务通讯协议采用Http协议,使用restful风格API形式来进行通讯,数据交换格式轻量级json格式通讯,整个传输过程中,采用json,所以http协议可以跨语言平台,并且可以和其他不同的语言进行相互的通讯,所以很多开放平台都采用http协议接口。

微服务架构与SOA架构的不同
微服务架构基于 SOA架构 演变过来,继承 SOA架构的优点,在微服务架构中去除 SOA 架构中的 ESB 企业服务总线,采用 http+json(restful)进行传输。
微服务架构比 SOA 架构粒度会更加精细,让专业的人去做专业的事情(专注),目的提高效率,每个服务于服务之间互不影响,微服务架构中,每个服务必须独立部署,微服务架构更加轻巧,轻量级。
SOA 架构中可能数据库存储会发生共享,微服务强调独每个服务都是单独数据库,保证每个服务于服务之间互不影响。
项目体现特征微服务架构比 SOA 架构更加适合与互联网公司敏捷开发、快速迭代版本,因为粒度非常精细。
微服务架构会产生哪些问题
优点:
- 让专业的人做专业的事情,前后端分离架构模式,可以提高效率 适合于互联网敏捷开发模式。
缺点:
- 部署、运维、管理非常复杂。
分布式事务解决方案(rabbitmq/rocketmq/lcn(已经淘汰)/ Seata)
分布式任务调度平台(XXL-Job、阿里Scheduler)
分布式日志采集系统ELk+Kafka
分布式服务注册中心 eureka、Zookeeper、consule、nacos等。
分布式服务追踪与调用链Zipkin等。
非常重要的概念:独立部署、docker/k8s/可配置、动态化
为什么我们要使用SpringCloud
SpringCloud并不是rpc远程调用框架,而是一套全家桶的微服务解决框架,理念就是解决我们在微服务架构中遇到的任何问题。
SpringCloud第一代与第二代的区别
SpringCloud第一代
SpringCloud Config 分布式配置中心
SpringCloud Netflix 核心5大组件
- Eureka:服务治理
- Hystrix:服务保护框架
- Ribbon:客户端负载均衡器
- Feign:基于ribbon和hystrix的声明式服务调用组件
- Zuul: 网关组件,提供智能路由、访问过滤等功能。
SpringCloud第二代
Spring Cloud Gateway 网关
Spring Cloud Loadbalancer 客户端负载均衡器
Spring Cloud r4j(Resilience4J) 服务保护
Spring Cloud Alibaba Nacos 服务注册
Spring Cloud Alibaba Nacos 分布式配置中心
Spring Cloud Alibaba Sentinel服务保护
SpringCloud Alibaba Seata分布式事务解决框架
Alibaba Cloud OSS 阿里云存储
Alibaba Cloud SchedulerX 分布式任务调度平台
Alibaba Cloud SMS 分布式短信系统