【转】 SpringCloudAlibaba--01——nacos
微服务架构如何演变的?
传统单体架构 -> 分布式架构 -> SOA面向服务架构 -> 微服务架构模式 -> 服务网格
* 传统单体架构
也就是单点应用,就是早期的SSM或SSH项目,采用分层架构模式,数据库访问层、业务逻辑层、控制层,从前端到后端所有代码可能都是一个人写的。
该架构优缺点:
优点:
开发简单、运维简单
缺点:
该架构模式没有对业务逻辑拆分,所有代码都写在同一个项目,如果开发人员比较多,耦合性很高,容易冲突。只适合小团队、个人模式开发,不适合团队开发。
如果系统中出现了某个模块出现了不可用的情况,会导致整个项目无法用。
应用场景:
政府项目、管理项目、crm、oa, 适合个人或小团队开发。
* 分布式架构模式
基于传统架构模式演变来的,把单点系统实现根据业务拆分,比如拆分为 会员系统、订单系统、支付系统、秒杀系统等。
从而降低项目的耦合度,这种架构模式适合互联网公司团队开发。
* SOA面向服务架构
基于分布式架构演变过来的,SOA架构俗称 服务化。也就是面向接口开发。将共同存在的业务逻辑抽取成一个公共的服务,提供给其他接口实现调用,服务与服务之间采用rpc 远程调用技术。能够解决代码冗余问题。
就是服务只有接口:去掉Controller,只有Service和 dao
SOA架构模式的特点:
1、SOA架构模式传输协议采用SOAP协议(Http/Https+XML)实现传输,在高并发情况下,实现通讯该协议存在大量的冗余性传输,而且非常占用宽带。所以在后来微服务架构使用JSON替代XML。
2、SOA架构模式实现方案WebService或 ESB企业服务总线,底层采用SOAP协议传输。(这种的技术比较老,现在只有政府项目或者银行项目可能存在)
现在的互联网公司肯定采用http+json 形式实现传输。
WebService架构模式:wsdl
wsdl 表示:接口的信息、方法、调用地址、参数。
* 微服务架构模式
SOA架构模式存在的缺点:
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 形式传输接口。
ESB企业服务总线:解决多系统之间跨语言无法通讯的问题,对我们数据协议实现转换。可以提供可靠的消息传输。一般都是第三方框架的实现。
我们现在都是采用http+json格式传输,所以没有必要采用SOA。
2、服务拆分粒度
微服务架构模式比SOA架构模式粒度更加精细,让专业的人去做专业的事,可以高效的开发,每个服务与服务之间都互不影响,每个服务都是单独独立的数据库。并且都是实现独立部署,整个服务架构更加轻巧,轻量级。
在SOA架构中,有可能存在多个服务共享一个数据库,微服务架构更加强调每个服务都是独立数据库部署,互不影响。
3、迭代
微服务架构模式比SOA架构模式,更加适合于互联网公司,敏捷、高效、快速迭代版本开发,因为粒度非常精细。
* 微服务架构中存在哪些问题
分布式事务解决方案:rabbitMQ、rocketMQ事务消息,icn(已被淘汰)、setata。思想:最终一致性概念。
分布式事务调度平台:XXL-Job、AlibabaCloud Scheduler、elastic-job
分布式服务注册与发现:eureka(快被淘汰)、consul、zookeeper、Nacos
分布式日志采集系统:elk+kafka
分布式服务追踪与调用链系统:Zipkin
分布式服务配置中心:springCloud config、携程的阿波罗(Apollo)、Nacos、disocnfig
微服务非常重要的概念:独立部署、可配置、动态化。
* SpringCloud 好处
springCloud 并不是RPC 远程调用框架,而是一个微服务全家桶的解决方案的框架。
理念就是一条龙服务解决微服务架构中遇到的问题,它是一个生态。
注意点:如果是大型互联网公司,内部实现的rpc通讯的框架或者 服务治理都是内部自己研发的
如果是有一定规模,但不是非常有钱的中型公司,就会用SpringCloud。国内大多都是这种中小型公司比较多,所以这就是为什么学springCloud。
* SpringCloud 第一代和 第二代区别
第一代:
config:分布式配置中心
netflix:核心组件
eureka:服务治理
hystrix:服务保护框架
ribbon:客户端负载均衡器
feign:基于ribbon和 hystrix 的声明式服务调用组件
zuul:网关组件,提供智能路由,访问过滤等功能。
第二代(自己研发和优秀的组件组合):
Gateway:网关
Loadbalancer:客户端负载均衡器
r4j(Resilience4J):服务保护
Nacos:服务注册+分布式配置中心
Sentinel:服务保护
Seata:分布式事务解决框架
OSS:阿里云存储
SchedulerX:分布式任务调度平台
SMS:分布式短信系统
spirngCloud 第一代实际上都是用的Netflix开源的组件整合微服务解决方案。
springCloud第二代实际就是自己研发和国内优秀的组件解决框架实现整合。