zoukankan      html  css  js  c++  java
  • 【转】 SpringCloudAlibaba--01——nacos

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

  • 相关阅读:
    windows 创建指定大小文件
    python pip命令 报错‘unknow or unsupported command install’
    PyCharm:ModuleNotFoundError: No module named 'selenium'
    毕设图片链接
    本地localhost:端口号(自己设置的Apache的端口号)打不开问题解决了!开心、哭泣
    python之freshman00
    Python之freshman07 面向对象编程jinjie
    Python之freshman08 Socket
    Python之freshman04
    Python之freshman05
  • 原文地址:https://www.cnblogs.com/Javastudy-note/p/13818352.html
Copyright © 2011-2022 走看看