谷粒商城微服务注册Nacos

谷粒商城微服务注册nacos

微服务–注册中心、配置中心、网关
之前分布式系统中已经生成了基本的增删改查代码,在分布式开发中,应该将每一个微服务注册到注册中心,这样如果有其他服务想要调用此服务就可以去注册中心查看有哪些服务注册进来,就可以随意挑选其中的服务进行调用。
其次,还需要一个配置中心,如果我们有十台机器,想要修改上面的商品服务,那我们每一台机器要挨个修改,这无疑不符合我们的做事理念,所以就希望有一个配置中心来集中管理配置,想要修改哪个配置就可以一次性修改完成,并且是实时修改生效。
然后,我们还要需要一个网关,所有前端的请求进行统一的鉴权、过滤、路由等,由网关送达给其他服务,做一些预先的工作
本项目使用的是SpringCloud Alibaba
由于springcloud部分组件停止维护,部分环境搭建非常复杂,没有完善的可视化界面,我们需要大量的二次开发和定制,配置复杂,难以上手,部分配置差别难以区分和合理应用。
alibaba优点:阿里使用过组件经历了考验,性能强悍,设计合理,现在开源出来给代价用成套的产品搭配完善的可视化界面给开发运维带来极大的便利,搭建简单,学习曲线低。

最终的技术搭配方案:
SpringCloud Alibaba -Nacos:注册中心(服务发现/注册)
SpringCloud Alibaba -Nacos:配置中心(动态配置管理)
SpringCloud -Ribbon:负载均衡
SpringCloud -Feign:声明式HTTP客户端(调用远程服务)
SpringCloud Alibaba -Sentinel:服务容错(限流、降级、熔断)
SpringCloud Alibaba -Gateway:API网关(webflux编程模式)
SpringCloud -Sluth:调用链监控
SpringCloud Alibaba -Seata:原Fescar,即分布式事务解决方案

开始操作

在common服务中的pom.xml引入apringcloud alibaba的依赖

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

在这里插入图片描述

1、使用Nacos作为注册中心和配置中心
1)作为注册中心

因为每一个微服务都会注册在注册中心,而这些服务都依赖了common,所以就在common的pom.xml中引入Nacos的依赖,相当于所有的微服务都引入了该依赖,导入Nacos Discovery Starter

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

因为在引入alibaba的依赖时用的是dependencyManagement,所以只要是alibaba的相关都不用设置版本号,以总的一致
在这里插入图片描述
我们想把服务注册进注册中心,我们要有一个注册中心才行,安装nacos server
,下载1.1.3版本
在这里插入图片描述
可以装在linux,但是现在为了运行方便,先装在windows,其实两个系统也就是ip的不同

点击start.cmd,会在本地执行,得知本地的nacos地址
在这里插入图片描述
然后需要在服务中的配置文件中配置nacos的地址
在这里插入图片描述
然后使用注解,就能将我们的服务注册到注册中心@EnableDiscoveryClient
在这里插入图片描述
之后就可以启动服务测试是否能够注册到注册中心,当然要先启动nacos服务

服务启动完成后,在浏览器输入http://127.0.0.1:8848/nacos进入nacos管理平台,账号密码默认都是nacos
在这里插入图片描述
查看服务列表可以看出哪些服务已经注册
在这里插入图片描述
但是发现没有服务注册
在这里插入图片描述
需要在配置文件中给这个服务取名字,在注册中心就以这个名字显示
在这里插入图片描述
重新启动服务,再次进入nacos管理界面,注册成功
在这里插入图片描述
然后将member也注册进来,同样的,在application.yml添加上nacos的注册地址
在这里插入图片描述
在启动类上加上开启服务的注解@EnableDiscoveryClient,然后启动服务,等待完成,刷新nacos服务列表,已经注册完成
在这里插入图片描述

重点:注册的服务要有自己的名字,在application.xml要加上application.name,这样才能注册上去

上面已经将优惠券和会员服务注册进了注册中心,下面开始测试远程调用

比如某个会员想要从优惠券服务中获取自己领取的所有优惠券,首先会员服务要去注册中心找一下优惠券服务都在哪些机器上,如果有多台机器上都有该服务,注册中心返回该结果,那么会员服务就要从中挑一台机器发送请求过去,响应服务,返回数据。

使用Feign远程调用

想要远程调用别的服务
1、引入open-feign
2、编写一个接口,告诉springcloud这个接口需要调用远程服务
1)、声明接口的每一个方法都是调用哪个远程服务的哪个请求
3、开启远程调用功能
首先检查会员服务pom.xml是否已经引入了依赖

<dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-openfeign</artifactId>
 </dependency>

在这里插入图片描述
然后我们在优惠券服务的controller文件中写一个实例方法测试,请求优惠券
首先在coupon写一个方法,目的是为了我们发起请求的时候返回我们在这写死的值
在这里插入图片描述
然后在member创建一个feign文件夹,在这里写接口,意思是相关远程调用的方法都写在这里,便于分辨
创建一个CouponFeignService文件,在这个接口文件中编写想关的远程调用的方法,添加注解@FeignClient(“”)括号中填写的是我们想要调用某个远程服务的服务名,就是在注册中心的名字
在这里插入图片描述
如果我们想要调用刚才写的方法,将刚才的方法的签名完全复制过来,粘贴到新接口文件中,注意由于是远程调用,括号中要填写全路径
在这里插入图片描述
开启远程调用功能,在启动类中加上注解,并且加上刚才远程调用的接口文件路径,代表当服务启动时会自动扫描这个包下所有标有@FeignClient的接口,每一个接口都有精确的路径来表示自己调用了哪个接口的哪个方法
在这里插入图片描述
重启服务,在浏览器输入http://localhost:8000/member/member/coupons验证结果
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值