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第二代实际就是自己研发和国内优秀的组件解决框架实现整合。

 

posted @ 2020-08-24 18:08  aBiu--  阅读(301)  评论(0编辑  收藏  举报