1传统架构,分布式架构,soa架构,微服务架构演变过程
2,基于ide构建webService 项目
3,微服务架构与SOA 架构的区别
4,SpringCloudAlibaba与SpringCloud 的区别。
微服务架构如何演变的?
传统单体架构-分布式架构-SOA面向服务架构-微服务架构
传统的单体架构模式
传统的单体架构。也就是单点应用,早起的SSM或者SSh 整合项目。
采用分层架构模式,数据库访问层,业务逻辑层,控制层,从前端到后端的代码都是一个人写的。
com.taotao.controler ---springmvc 视图层 jsp/ftl
com.taotao.service ---业务逻辑层
com.taotao.dao---数据库访问层
将项目的代码都放入到同一个项目,部署在同一个tomcat中。
该架构模式有哪些优点:
开发简单。运维简单
缺点:
该架构模式没有对我们的业务逻辑实现拆分,所有的代码都写入到同一个项目中,
只是适合于小团队或者个人形式的开发,不适合于团队模式协同工作开发,如果系统中某个模块出现了不可用的情况下,会导致整个系统无法使用
应用场景: 政府项目,管理系统,crm ,oa 适合于小团队开发。
分布式架构模式:
分布式的架构模式基于传统的架构模式演变而来,将我们传统的单点系统根据业务
拆分。会拆分为会员系统,订单系统,支付系统,秒杀系统等。从而降低整个项目的耦合度。
这种架构模式慢慢适合于互联网公司的发展。
会员系统 memner.mayikt.com
支付系统 pay.maykt.com
命名为系统化:包含服务和视图层。
SOA 面向服务架构:
SOA 模式也称为: 面向服务架构模式,俗称面向接口开发,将其共同存在的业务逻辑抽取成一个共同的服务,提供给其他的服务接口实现调用,服务与服务之间通讯采用rpc 远程技术调用。
SOA架构模式特点:
1,SOA架构通讯中,采用XML 方式实现通讯,在高并发下通讯过程中协议存在非常大冗余性,所以在最后 微服务架构模式中使用了json格式替代了xml.
2,SOA架构模式实现方案为WebService或者EJB 企业服务总线,底层通讯协议SOAP协议(Http+XML)实现传输。
ESB企业服务总线
解决多系统之间跨语言通讯,数据协议的转换,提供可靠的信息传输。
微服务架构:
微服务架构产生的原因:
微服务架构基于SOA架构演变过来的
在传统的WebService 架构中有如下问题:
1 采用SOAP 协议实现通讯,xml传输非常重要,效率比较低
2,服务化管理和治理设施不够完善
3,依赖与中心服务发现机制
4,不适合于前后分离架构模式
前端分离技术就是对我们控制层和业务逻辑实现区分,
前端控制可以采用vue 调用我们后端接口(http+json)
微服务架构模式的基本概念:
微服务架构模式就是从我们的soa架构模式演变过来的,比SOA 架构对服务拆分的粒度会更加精细,采用前后端分离的架构模式,让专业的人去做专业的事(专注),目的可以实现高效率开发。微服务架构中。每个服务之间都是相互不影响 每个服务必须要独立部署,运维,互不影响,微服务架构模式非常轻巧,轻量级,适合于互联网公司开发模式。
服务与服务之间通讯的协议采用restful形式,数据交换格式采用Http+json格式实现传输。整个传输过程中,采用二进制,所以http协议可以实现跨语言的平台,并且和其他的语言实现通讯,所以为什么开放都是采用http+Json 格式传输。
SOA架构和微服务架构有哪些区别?
1,通讯协议
微服务架构基于SOA 架构模式演变过来的,继承SOA架构优点,在微服务架构中剔除了SOA架构中SOAP协议和ESB 企业服务总线,改为http+JSON形式传输我们的接口。
2,服务拆分粒度
微服务架构模式比SOA 架构模式粒度更加精细,提倡让专业的人做专业的事,实现高效的开发,每个服务与服务互不影响,每个服务都是单独独立数据库。
Redis连接, MQ等,并且都是实现独立部署,整个服务架构更加轻巧,轻量级。
在soa架构中,有可能存在多个服务共享同一个数据库,微服务架构更加强调每个服务都是单独独立的数据库。
3,迭代:
微服务架构模式比soa 架构模式,更加适合于互联网公司敏捷,高效,快速迭代版本开发,因为禄蠹非常精细。
ESB 企业服务总线: 解决多系统之间跨语言无法实现通讯的问题,对我们的数据协议实现转换,可以提供可靠的消息传输
一般情况下都是采用http+JSON 格式传输,所以没有必要使用ESB 企业服务总线。
微服务架构中会存在那些问题?
分布式解决方案(rabbitmq, rocketmq事务消息,lcn(淘汰),setata)最终一致性原则
分布式任务调度平台: (xxl-Job,AlibabaCloud Scheduler, elastic-job)
分布式服务注册与发现(Eureka,consul,zookeeper,Nacos)
分布式日志采集系统elk+kafka
分布式服务追踪与调用链系统 Zipkin
分布式服务配置中心(springcloud config/携程阿波罗/nacos/disconfig)
非常重要的概念: 独立部署, 可配置,动态化。
为什么要使用到SpringCloud
SpringCloud并不是一个rpc远程调用框架,而是一个微服务全家桶的解决方案的框架。
理念就是一条龙服务解决我们在微服务架构中遇到的问题。
服务治理:eureka
分布式配置 config
客户端调用工具rest/feign客户 rpc远程调用
Rpc远程调用框架有那些?
Httpclient、dubbo、feign、grpc、基于netty手写rpc
SpringCloud 第一代和第二代区别:
SpringCloud 第一代实际上都是用的Netflix 开源的组件整合微服务解决方案
SpringCloud 第二代实际就是自己研发和springCloudAlibaba 国内的优秀的微服务解决框架实现整合。
SpringCloudAlibaba
SpringCloudalibaba就是为了推广阿里云的产品对我们目前的SpringCloud2.x版本实现扩展功能。
Nacos 服务注册与发现、分布式配置中心
Rocketmq 买阿里云的ones
SpringCloud技术总结:
微服务架构演变过程 传统的单体架构->分布式架构->soa面向服务架构->微服务架构模式。
SpringCloud第一代:
SpringCloud Config 分布式配置中心
SpringCloud Netflix 核心组件
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 分布式短信系统