前言
本文是根据蚂蚁课堂余胜军老师的课程所做笔记,记录的要点,部分自己的理解可能有所偏差,不当之处会进行修改。
微服务架构演变历程
传统单体架构→分布式架构→SOA面向服务架构→微服务架构模式
传统单体架构模式
单体架构就是单点应用,早期的SSM和SSH整合项目就是单点应用。即分层架构模式,数据库访问层、业务逻辑层、控制层、前后端的交互都是一个人写的。
这种模式,一个项目的所有代码都在一起,部署到同一个服务器上。
优点:开发简单、运维简单。适合个人或者小团队开发。
缺点:代码耦合度高、项目可用性差,容易崩溃。不适合团队模式协同开发。
适合场景:政府项目、管理系统、crm客户关系管理系统
分布式架构模式
基于传统的单体架构演变,将传统的单点系统根据实现业务拆分。从而降低整个项目的耦合度。有利于团队的开发。
SOA面向服务架构模式
SOA(Service-Oriented Architecture)基于分布式架构演变,俗称服务化,也就是面向接口开发(服务开发),将共同存在的业务逻辑抽取成一个公共的服务,提供给其他结构实现调用,服务与服务之间采用rpc远程调用技术。
服务里只有业务逻辑,没有视图层。
不同服务之间可以相互调用,解少了代码冗余。
SOA架构模式特点:
- SOA架构模式传输协议采用SOAP协议(http/https+XML)实现传输,在高并发情况下实现通讯该协议存在大量的冗余性传输,非常占用带宽。所以微服务架构使用json代替了xml
- SOA架构模式实现方案WebService或者ESB企业服务总线,底层采用SOAP协议传输
SOA架构模式的缺点:
- SOAP协议实现通讯,xml传输非常重,效率比较低
- 服务化管理和治理设施不够完善。
- 依赖于中心服务发现机制
- 不适合前后端分离架构模式
微服务架构模式
从soa架构模式演变过来,比SOA架构对服务拆分的粒度更加精细,让业务界限更加清晰,专业的人去做专业的事,实现高效率开发。每个服务独立部署、互不影响。
服务与服务之间的通讯协议采用restful形式,数据交换格式采用http+json格式实现传输。
整个传输过程中,采用二进制,所以http协议可以实现跨语言的平台,并且和其他语言实现通讯。
SOA架构与微服务架构的区别
-
通讯协议
微服务架构基于SOA架构,继承了SOA架构优点,在微服务架构中去除SOA架构中SOAP协议和ESB企业服务总线,改为http+json形式传输接口。
-
服务拆分
微服务架构比SOA架构的粒度更加精细,提倡让专业的人去做专业的事。每个服务互不影响。每个服务都是单独独立数据库、redis连接、MQ等。并且都是独立部署,整个服务架构更加轻巧。
-
迭代
微服务的架构模式比SOA架构模式,更加适合敏捷、高效、快速迭代。
微服务架构中存在的问题
- 分布式事务解决方案(rabbitmq、rocketmq事务消息、lnc(淘汰)、setata)最终一致性概念
- 分布式任务调度平台(XXL-Job、AlibabaCloud Scheduler、elastic-job)
- 分布式服务注册与发现(eureka、consul、zookeeper、Nacos)
- 分布式日志采集系统elk+kafka
- 分布式服务追踪与调用链系统Zipkin
- 分布式服务配置中心(springcloud config/nacos/disconfig/携程阿波罗)