第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)
Posted doudoutj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)相关的知识,希望对你有一定的参考价值。
SpringCloud Alibaba
1.简介
Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过Spring Cloud编程模型轻松使用这些组件来开发分布式应用服务。
依托Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将SpringCloud应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。
SpringCloud Alibaba-Nacos[作为注册中心]
Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台。他是使用java编写,需要依赖java环境
如何使用 Nacos Discovery Starter 完成 Spring Cloud 应用的服务注册与发现:spring-cloud-alibaba/readme-zh.md at master · alibaba/spring-cloud-alibaba · GitHub
需要在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
2.启动nacos-server
- 双击bin中的startup.cmd文件
- 访问localhost:8848/nacos/
- 使用默认的nacos/nacos进行登录
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: 模块名字
3.使用@EnableDiscoveryClient开启服务注册功能
4.启动nacos,然后再启动IDEA,观察nacos服务列表是否已经注册上服务。
注意:一定要启动nacos,再启动IDEA,每个应用都应该有名字,这样才能注册上去
注册成功的显示页面:
Feign声明式远程调用
简介
Feign是一个声明式的HTTP客户端,它的目的就是让远程调用更加简单。Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息。
Feign整合了Ribbon(负载均衡)和Hystric(服务熔断),可以让我们不再需要显示地使用这两个组件。
SpringCloudFeign在NetflixFeign的基础上扩展了对SpringMVC注解的支持,在其实现下,我们只需要创建一个接口并用注解的方式来配置它,即完成对服务提供方的接口绑定。简化了SpringCloudRibbon自行封装服务调用客户端的开发量。
远程调用测试:
首先是要导入feign的依赖包,因为创建模块的时候已经勾选了feign所有pom.xml中自动有依赖包
把下面这两个进行启动,然后访问浏览器页面:
浏览器访问:localhost:8000/member/member/coupons
Nacos作为配置中心
把这个依赖包复制到gulimall-common中的pom.xml中
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
测试
浏览器中访问的页面:localhost:7000/coupon/coupon/test
动态获取数据:
在这个页面进行修改数据
查看浏览器页面,已经动态刷新成功
命名空间
用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的Group或Data ID的配置。Namespace的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
可以用命名空间做环境隔离
现在Nacos里面创建命名空间, 然后把生成的命令空间ID配置到bootstrap.properties中
这个时候访问的就是命名空间prop里面的内容:
命名空间基于微服务进行隔离
以上是关于第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)的主要内容,如果未能解决你的问题,请参考以下文章
第193天学习打卡(项目 谷粒商城35 调试会员等级相关接口)
第164天学习打卡(项目 谷粒商城6 加载多配置集 API网关)