程序员的资源宝库

网站首页 > gitee 正文

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)

sanyeah 2024-04-13 16:15:32 gitee 5 ℃ 0 评论

image-20210620164305606

SpringCloud Alibaba

1.简介

Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过Spring Cloud编程模型轻松使用这些组件来开发分布式应用服务。

依托Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将SpringCloud应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

image-20210620165212326

地址:GitHub - alibaba/spring-cloud-alibaba: Spring Cloud Alibaba provides a one-stop solution for application development for the distributed solutions of Alibaba middleware.

SpringCloud Alibaba-Nacos[作为注册中心]

Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台。他是使用java编写,需要依赖java环境

如何使用 Nacos Discovery Starter 完成 Spring Cloud 应用的服务注册与发现:spring-cloud-alibaba/readme-zh.md at master · alibaba/spring-cloud-alibaba · GitHub

image-20210620193811427

需要在gulimall-common中的pom.xml下导入的依赖

 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>gulimall1-ware</artifactId>
         <groupId>com.doudou.gulimall1</groupId>
         <version>0.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 ?
     <artifactId>gulimall-common</artifactId>
     <description>每个微服务公共的依赖, bean,工具类等</description>
 ?
     <properties>
         <maven.compiler.source>8</maven.compiler.source>
         <maven.compiler.target>8</maven.compiler.target>
     </properties>
     <dependencies>
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
             <version>3.4.3.1</version>
         </dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
             <version>1.16.18</version>
         </dependency>
         <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
         <dependency>
             <groupId>org.apache.httpcomponents</groupId>
             <artifactId>httpcore</artifactId>
             <version>4.4.14</version>
         </dependency>
         <dependency>
             <groupId>commons-lang</groupId>
             <artifactId>commons-lang</artifactId>
             <version>2.6</version>
         </dependency>
         <dependency>
             <groupId>io.renren</groupId>
             <artifactId>renren-fast</artifactId>
             <version>3.0.0</version>
             <scope>compile</scope>
         </dependency>
 ?
 <!--       导入mysql驱动-->
         <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
             <version>8.0.23</version>
         </dependency>
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>servlet-api</artifactId>
             <version>3.0-alpha-1</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
         </dependency>
 ?
 ?
     </dependencies>
     <dependencyManagement>
         <dependencies>
             <dependency>
                 <groupId>com.alibaba.cloud</groupId>
                 <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                 <version>2.2.3.RELEASE</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
         </dependencies>
     </dependencyManagement>
 ?
 ?
 </project>
 ?

1.下载nacos-server

下载地址:Releases · alibaba/nacos · GitHub

image-20210620173157556

2.启动nacos-server

  • 双击bin中的startup.cmd文件

  • 访问localhost:8848/nacos/

  • 使用默认的nacos/nacos进行登录

image-20210620192456343

 

 

image-20210620193930492

3.注册微服务

1.修改pom.xml文件,引入Nacos Discovery Starter 这里主要是在gulimall-common里面进行配置

  <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
         </dependency>

2.在应用的application.yml中配置Nacos Server地址

  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
  application:
    name: 模块名字

 

image-20210620195248600

3.使用@EnableDiscoveryClient开启服务注册功能

image-20210620195347280

4.启动nacos,然后再启动IDEA,观察nacos服务列表是否已经注册上服务。

注意:一定要启动nacos,再启动IDEA,每个应用都应该有名字,这样才能注册上去

注册成功的显示页面:

image-20210620195617416

Feign声明式远程调用

简介

Feign是一个声明式的HTTP客户端,它的目的就是让远程调用更加简单。Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息。

Feign整合了Ribbon(负载均衡)和Hystric(服务熔断),可以让我们不再需要显示地使用这两个组件。

SpringCloudFeign在NetflixFeign的基础上扩展了对SpringMVC注解的支持,在其实现下,我们只需要创建一个接口并用注解的方式来配置它,即完成对服务提供方的接口绑定。简化了SpringCloudRibbon自行封装服务调用客户端的开发量。

远程调用测试:

首先是要导入feign的依赖包,因为创建模块的时候已经勾选了feign所有pom.xml中自动有依赖包

image-20210620204521951

image-20210620204622469

image-20210620204715320

image-20210620204806888

image-20210620204845799

把下面这两个进行启动,然后访问浏览器页面:

image-20210620204943317

 

浏览器访问:localhost:8000/member/member/coupons

image-20210620204245626

Nacos作为配置中心

把这个依赖包复制到gulimall-common中的pom.xml中

    <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
         </dependency>
 ?

测试

image-20210620205943368

image-20210620211754804

 

image-20210620211926292

image-20210620212005764

浏览器中访问的页面:localhost:7000/coupon/coupon/test

image-20210620211639686

动态获取数据:

image-20210620212925780

在这个页面进行修改数据

image-20210620213315908

image-20210620213806594

 

查看浏览器页面,已经动态刷新成功

image-20210620213914222

 

命名空间

用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的Group或Data ID的配置。Namespace的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等

image-20210620215307900

image-20210620215333136

image-20210620215355327

 

可以用命名空间做环境隔离

现在Nacos里面创建命名空间, 然后把生成的命令空间ID配置到bootstrap.properties中

image-20210620220554717

这个时候访问的就是命名空间prop里面的内容:

image-20210620220827219

image-20210620220338939

命名空间基于微服务进行隔离

image-20210620222226691

image-20210620222300700

 

B站学习网址:全网最强电商教程《谷粒商城》对标阿里P6/P7,40-60万年薪哔哩哔哩bilibili

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表