springboot+maven+nacos搭建微服务应用

瀚岳-诸葛弩      2022-05-17     129

关键词:

1、创建微服务应用

理解:和创建多模块应用一样,只不过此处的各种方法不再是通过“类库”进行调用,而是通过服务(controller或service)

(1)按上图创建多模块项目(这块还没有深入理解,理论上应该不用这样创建,特别是对于一些公共的服务封装);

(2)serviceProvider为服务提供者,serviceCustomers为服务使用者

(3)主框架pom.xml如下(要特别注意版本的匹配,即:spring-boot和cloud-alibaba的匹配。各版本的匹配官网地址是:版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub):

<dependencyManagement>
    <dependencies>
        <!--Spring boot 依赖(定义了微服务规范)-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.3.2.RELEASE</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
        <!--Spring Cloud 依赖(定义了微服务规范)-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR9</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
        <!--Spring Cloud Alibaba依赖(基于spring微服务规范做了具体落地实现)-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.6.RELEASE</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>

serviceProvider和serviceCustomers的pom.xml继承了框架pom.xml内容,故:引入新增所需dependency就行,如下:

<dependencies>
    <!--Web服务-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--服务的注册和发现(我们要将服务注册到nacos)-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
</dependencies>

(4)创建和配置serviceProvider

在src/main/resources/下创建application.yml配置文件,配置内容为(server-addr可以是localhost或127.0.0.1):

server:
  port: 8081
spring:
  application:
    name: serviceProvider
  cloud:
    nacos:
      discovery:
        server-addr: 10.190.129.25:8848

创建一个controller,写好一个对外发布的服务(即:RequestMapping)

(5)启动Nacos(怎么启动和配置,见上一篇内容),运行APP,正常运行后,应该可以看到Nacos已经成功注册服务:

如成功看到上图结果,那么就表示服务已经注册成功,可以被其它应用调用。

(6)从serviceCustomers中对服务进行调用

此处,使用了RestTemplate对服务进行请求,并返回结果。可以理解是一个封装了的工具类。详细细节:RestTemplate 用法详解_lzcWHUT的博客-CSDN博客_resttemplate

微服务的优点:

(1)项目与项目之间(modul之间)可以完全没有依赖关系,通过nacos进行服务管理。极大程度实现了各模块之间的最低耦合(这一点前后端分离后也可以实现);

(2)每一个项目都可以在nacos注册为服务提供者,供其他项目调用。那么,所有的部门、用户、角色,都可以通过调用主工程的controller实现。且由于是通过服务调用(不是引用jar的形式),主工程可以发布在任意服务器,子工程也可以发布在任意服务器,并实现调用(需要用到Feign,和跨域请求非常类似)。这与多模块程序不同的地方在于无需引用jar包,无需创建实例,直接调用服务(这一点通过分布式数据库+前后端分离也可以实现)。这样的好处在于:服务提供者更新后,子工程无需重启(一般情况下,MIS系统的服务提供者主要提供数据库的CRUD,返回的都是字符串,所以只要方法参数、名称不改变,服务调用者就不需要重新发布程序);

(3)方便配置策略均衡(这一点通过负载均衡也可以实现,但在Nacos这里容易配置一点,目前没有发现更进一步的优势)

在之前的serviceCustomers中,增加红下划线代码,即可从Nacos中获取压力较小(访问量较少)的服务

本地多实例启动,在IDEA中从如下接口进行配置:

配置完毕后,先运行一次serviceProvider,然后修改serviceProvider/src/resouces/application.yml中的port,再运行一次,如果要继续多运行,可多次修改port端口后运行,这样,在Nacos管理平台中可以看到注册了同名的多个服务实例,如下:

点击详情可看到:

运行serviceCustomers,可以看到每次刷新都会从实例中选择压力最小的一个。即下面这行代码其的作用:

这在并发过高时,可以将接口发布至多台服务器,并通过前端调用进行负载分配,有利于快速实现负载均衡。在VS中,也可以通过全局变量自己写策略满足上述应用需求,此处通过ServiceInstance方便了许多。ServiceInstance类的详细介绍:服务实例(Service Instance)生命周期如何控制_weixin_30549657的博客-CSDN博客

上述几点优势也可通过即有技术进行解决,也许是理解尚未深入的原因。但微服务作为目前主流解决方案,一定存在其优势,特别是Nacos经过了多年双11的考验,在并发和性能方面应该有很多独具优势的地方。

官网主要介绍为(尚未深入了解):

Sentinel – 提供流控、服务降级、熔断能力,为系统提供防护。

Nacos – 负责服务注册与发现,还有分布式配置。

RocketMQ – 用于实现事件驱动模式、消息总线,已经整合了 SpringCloud Stream。

Seata – 用于实现分布式事务。

Dubbo RPC – 使用 RPC 进行服务调用。

其它博文理解:

Nacos是什么_wh柒八九的博客-CSDN博客_nacos

springcloud微服务简单搭建使用maven(代码片段)

SpringCloud微服务搭建使用Maven1.各组件版本2.创建父工程(1).创建Maven项目(2).选择JDK11和Maven项目(3).项目命名(4).完成(5).删除src目录(6).引入依赖添加``(7).引入Maven打包配置3.创建子模块(1).创建Maven项目(2).根据需要引入依赖1).Spring... 查看详情

springcloud微服务简单搭建使用maven(代码片段)

SpringCloud微服务搭建使用Maven1.各组件版本2.创建父工程(1).创建Maven项目(2).选择JDK11和Maven项目(3).项目命名(4).完成(5).删除src目录(6).引入依赖添加``(7).引入Maven打包配置3.创建子模块(1).创建Maven项目(2).根据需要引入依赖1).Spring... 查看详情

maven聚合工程用springboot搭建springcloud微服务模块式开发项目

项目的简单介绍:项目采用maven聚合工程用springboot搭建springcloud的微服务 模块式开发项目的截图: 搭建开始:能上图我少打字1.首先搭建maven的聚合工程  1.1创建聚合工程的父模块           1.2设置父模块的... 查看详情

微服务中基于springboot的maven分布式项目框架的搭建

项目介绍这里搭建的是基于maven的分布式工程,因为在一个项目中,多个微服务是属于同一个工程,只不过是提供不同的服务而已,再加上IDEA是默认一个窗口打开一个项目工程(这点和eclipse不同),如果项目大,不用maven聚合工... 查看详情

了解springcloud微服务以及微服务搭建(nacos)(代码片段)

...访问的服务单元。Java中常见最小的微服务单元就是基于SpringBoot框架的一个独立项目。一个微服务只做一件事(单一职责),多个微服务组合才能称之为一个完整的项目或产品。那么多个微服务的就需要来管理,... 查看详情

springbootadmin监控搭建-nacos版本(代码片段)

SpringBootAdmin介绍SpringBootAdmin是github上一款用于SpringBoot的监控管理的开源项目,通过http直接注册或者通过注册中心注册的方式,实现了SpringBoot应用上的一些常见监控项,具体功能点如下:显示应用程序的监控状态应用程序上... 查看详情

springcloud学习4(springcloudalibaba)概念简介环境搭建注册中心nacos(代码片段)

...a;面向服务)微服务架构微服务架构介绍SpringCloud简介SpringBoot和SpringCloud有啥关系?微服务环境搭建创建Maven父工程cloud2_parent并导入依赖创建product服务创建cloud2-product-api项目,并导入依赖编写实体类Product创建cloud2-produ... 查看详情

maven+springboot搭建简单微服务

项目需要使用springboot,所以自学了几天,仅提供给新手,请根据文档查看…该项目仅是测试项目,并不完善和严谨,只实现了需要使用的基本功能。写该博客一是希望能够帮助刚学习的新人,二是加深自... 查看详情

基于springboot的微服务搭建

环境:项目结构:关键配置pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.a 查看详情

微服务管理平台nacos虚拟ip负载均衡集群模式搭建(代码片段)

...据管理等。二、Nacos单点部署Nacos支持单点部署的模式,搭建过程非常简单,实际上nacos的standalone模式没有所谓的安装过程,就是下载和启动。但是这种情况没有高可用支持,所以只适合测试或学习使用。首先去nacos的github地址下... 查看详情

springboot快速搭建基于restful风格的微服务

使用springboot快速搭建基于 Restful风格的微服务,无spring配置文件,纯java工程,可以快速发布,调试项目1.创建一个maven工程2.导入如下配置<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-in 查看详情

springcloudalibabaspringboot微服务集成开发配置

...成。集成的各个组件的版本如下1、SpringCloud:Hoxton.SR82、Springboot:2.3.2.RELEASE3、AlibabaCloud:2.2.3.RELEASE一、创建maven父依赖创建自己的父依赖,不直接继承SpringBoot。因为直接继承Springboot会带来很多不便,不能集成其他组件了。创... 查看详情

springboot+dubbo+nacos实现rpc调用

Springboot+Dubbo+Nacos注解方式实现微服务调用1、项目结构|--dubbo-demo(父级工程)|--dubbo-demo-core(基础工程)|--dubbo-consumer(消费者)|--dubbo-provider(生产者)SpringBoot版本:2.2.xDubbo版本:2.7.3Nacos版本:1.1.42、启动Nacos注册中心3、搭建项目dub 查看详情

springboot2整合nacos组件,环境搭建和入门案例详解(代码片段)

摘自:https://www.cnblogs.com/cicada-smile/p/12190192.html 本文源码:GitHub·点这里 || GitEE·点这里一、Nacos基础简介1、概念简介Nacos是构建以“服务”为中心的现代应用架构,如微服务范式、云原生范式等服务基... 查看详情

基于springboot+vue三||项目环境搭建-nacos

1、注册中心Nacos该项目由SpringCloud+Eureka切换为SpringCloud+Nacos,使用Nacos作为服务注册中心。 2、基于Docker安装Nacos2.1、安装docker,安装教程参照作者文章《Docker》分类。 2.2、启动镜像dockerpullnacos/nacos-serverdockerrun--envMODE=standa... 查看详情

springboot微服务注册到nacos平台(代码片段)

前言:如何解决复制的文件夹没有蓝色的小方块,如下图:删除旧的iml文件,在maven面板进行刷新操作,会重新生成iml文件。   1.下载nacos客户端。先查看各个组件对应的版本:版本说明·alibaba/spring-cloud-a... 查看详情

springboot整合eureka搭建微服务

 1.创建一个services项目,添加三个子模块client(客户端)、service(服务端)、registry(注册中心) 1.1创建一个services项目 1.2 添加pom.xml依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.or 查看详情

maven+springboot搭建简单微服务

项目需要使用springboot,所以自学了几天,仅提供给新手,请根据文档查看…该项目仅是测试项目,并不完善和严谨,只实现了需要使用的基本功能。写该博客一是希望能够帮助刚学习的新人,二是加深自... 查看详情