• 2流高手速成记(之六):从SpringBoot到SpringCloudAlibaba


    咱们接上回 2流高手速成记(之五):Springboot整合Shiro实现安全管理 - 14号程序员 - 博客园 (cnblogs.com)

    身边常有朋友说:小项目用PHP、大项目用Java(这里绝无贬低PHP技术栈之意),曾经有兴趣对比过两种语言的技术栈

    PHP有TP、Laravel这样成熟的企业级框架,Laravel更是秉持匠人精神,利用PHP诸多全新的特性,打造出了现代化的PHP全栈框架

    Java则凭借SpringBoot诸多的便捷特性,以及idea这种超智能化ide的加持,相比于传统的JavaEE开发直接拔高了几个位次

    二者在Web企业级应用开发领域各自占据了一席之地,设计思想层面也存在诸多的相似之处,如果非要找寻二者决定性的差异,我认为答案就在于——SpringCloud的存在!

    从SpringBoot到SpringCloud/SpringCloudAlibaba,从单节点到多节点/微服务,完成这样一次蜕变,是我所期待已久的!

    Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。——来自百度百科

    有人问SpringCloud到底是什么?我们从百科对于SpringCloud的解读不难看出几个关键信息:

    1. SpringCloud是一系列框架的有序集合

    2. SpringCloud与SpringBoot无缝集成,使用流程大幅简化,可基于SpringBoot实现一键部署

    3. SpringCloud主要用于微服务及分布式开发,包含服务发现、配置中心、负载均衡等诸多内容

    OK,现在SpringCloud是什么清楚了,那我在标题中提到的SpringCloudAlibaba又是什么?

    一句话概括——SpringCloudAlibaba是SpringCloud原基础上的扩展

    SpringCloudAlibaba来自国内大名鼎鼎的阿里巴巴技术团队,他们重新提取微服务框架设计理念的精髓,在原SpringCloud基础之上派生出了新的技术栈

    SpringCloudAlibaba既基于SpringCloud的设计理念,二者又在工具链层面彼此独立,我们来看他们的区别

    名称SpringCloudSpirngCloudAlibaba
    注册中心 Eureka、Consul Nacos
    配置中心 SpringCloud Config Nacos
    网关 SpringCloud Zull SpringCloud Gateway
    负载均衡 Ribbon Loadbalabcer
    熔断降级 Hystrix Sentinel
    服务调用 Feign OpenFeign
    服务总线 Bus Nacos
    消息中间件 无(第三方替代方案:rabbitmq) RecketMQ
    分布式解决方案 无(第三方替代方案:2pc) Seata

    从本节开始,我们会基于SpringCloudAlibaba做一系列讲解,原生SpringCloud相关技术栈放在之后讲解

    1. Nacos

    SpringCloudAlibaba体系中第一个重要角色来了!:

    从上表SpringCloudAlibaba工具链构成中,我们不难发现Nacos被多次提及

    Nacos在整个SpringCloudAlibaba体系中担当了多个重要角色,它既是注册中心,又是配置中心,还是服务总线

    这些概念不理解?没关系,大家会在后续实际使用过程中逐渐加深认知——这是我个人很喜欢的一种风格,概念听别人讲再多,不如自己实际上手体验一次,每个人自然形成自己独有的认知

    我们先移步至Nacos官网:https://nacos.io/zh-cn/index.html

    前往Github下载最新的Release版本解压即可,我们到bin目录下执行命令

    startup.cmd -m standalone -f naming

    以单机模式启动Nacos,而后访问 http://127.0.0.1:8848/nacos/ 将进入登录界面:

     

     

     初始默认账号nacos,密码nacos,登录后看到主界面

     

     

     大家可以看到,最开始这里是没有内容的

    2. Nacos作为注册中心

    新建一个SpringCloudAlibaba工程

     

    我们依然延续第一节(2流高手速成记(之一):初识SpringBoot及基础项目构建 - 14号程序员 - 博客园 (cnblogs.com))中这种构建工程的方式

     

    区别在于这次我们要重点勾选SpringCloud及SpringCloudAlibaba相关依赖项

     

    之后我们将获得一个与之前SpringBoot模板略有不同的工程目录结构

     

    我们看到工程的resources目录下额外多出了一个bootstrap.properties文件,两个Nacos相关的Configuration配置文件暂时用不到

    pom.xml中也多出了相应的版本声明及依赖项:

    复制代码
        <properties>
            ......
            <spring-cloud-alibaba.version>2.2.2.RELEASEspring-cloud-alibaba.version>
            <spring-cloud.version>Hoxton.SR9spring-cloud.version>
        properties>
    
    ......
    
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
            dependency>
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
            dependency>
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-starter-dubboartifactId>
            dependency>
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starterartifactId>
            dependency>
    复制代码

    我们先修改下bootstrap.properties和application.properties中指向的nacos服务地址:(注意:两个配置文件下的配置都要修改)

    # 设置配置中心服务端地址
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848

    而后直接启动工程,待工程启动完毕后,刷新nacos主界面

     

    我们将看到我们的应用已经成功【注册】到Nacos服务中心

    到这里你是否有种恍然大悟的感觉?这就是Nacos所担当的“注册中心”的角色!

    那么我们将应用作为一个服务注册到Nacos又有什么作用呢?答案你或许已经猜到了——供其他应用调用!

    这其中的机制我们留个悬念,下一节再讲

    3. Nacos作为配置中心

    那么nacos又是如何充当配置中心的作用?

    还记得刚才多出来的那个bootstrap.properties吗?现在我们可以来聊聊它的作用了

    bootstrap.properties的加载时机要优先于application.properties,一般用于指定系统级的相关配置,其配置内容一般固定不变

    借助于bootstrap.properties,我们可以实现application.properties配置内容的“云端化”

    我们先来看bootstrap.properties的内容:

    复制代码
    # Nacos认证信息
    spring.cloud.nacos.config.username=nacos
    spring.cloud.nacos.config.password=nacos
    spring.cloud.nacos.config.contextPath=/nacos
    # 设置配置中心服务端地址
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    spring.cloud.nacos.config.namespace=
    
    # 应用名称
    spring.application.name=hellospringcloudalibaba
    复制代码

    可以看到它主要包含了Nacos相关的配置信息

    最后应用名称这部分是我后续补充的

    之后我们便可以移除本地的application.properties,并将其内容迁移至Nacos

    打开Nacos配置管理页面,新增配置

     

     

    我们重新启动工程,发现在本地不存在application.properties配置的情况下,工程依然可以重新启动,并正确加载迁移到Nacos的工程配置

    这就是Nacos作为“配置中心”的作用!而这种云端化配置的方式显然要比application.properties本土化配置的方式更加灵活便捷

     

    这就是Nacos在SpringCloudAlibaba体系之下所起到的核心作用,这里其实也仅是点到为止,但相信你已经对这些概念有了一个大概的了解

    以上

     

    本节先是引出了微服务的概念,继而阐述了SpringCloud以及SpringCloudAlibaba的区别,最后具体讲解了Nacos作为SpringCloudAlibaba体系的核心组件所起到的作用

    微服务领域的学问博大精深,本节仅是引出了概念而并未做深入讨论;下一节我们将继续挖掘SpringCloudAlibaba微服务更多的机制和用法

    Dubbo框架将走进我们的视野!敬请期待~

     

  • 相关阅读:
    门窗软件项目---竖中梃类
    serverSocket编程DEMO
    TiDB乐观事务、悲观事务模型验证
    七、SpringMVC(1)
    【Linux】进程间通信(匿名管道、命名管道、共享内存等,包含代码示例)
    使用C++的CCF-CSP满分解决方案 202104-2 邻域均值
    Nacos 小bug: application.properties配置未生效,导致端口未生效
    快速搭建React TypeScript项目
    LLM 为什么需要 tokenizer?
    部署一套单Master的K8s集群(kubeadm-V1.20)
  • 原文地址:https://www.cnblogs.com/itfantasy/p/16842900.html