开发者学堂课程【Spring Cloud 微服务架构设计与开发实战 :3.4 Spring Cloud 客户端 Feigh 集成 Nacos 中心】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/60/detail/1097
3.4 Spring Cloud 客户端 Feigh 集成 Nacos 中心
内容
一、 重构调用端 Feign 的项目代码
二、 Nacos 的其他功能。
本节课讲解如何去改造 Spring Cloud 项目、Feign 客户端进行实现微服务的调用,要完成服务的注册和客服端的 Nacos 对接。之前实现的调用例,现在需要同样去改造整个对象,改造步骤在上一节课已经讲解了。
一、重构调用端 Feign 的项目代码
1. Java Spring Cloud 微服务调用
(1)POM
<dependency>
<groupld>org.springframework.cloud</groupld>
<artifactld>spring-cloud-starter-alibaba-nacos-discovery</artifactld>
</dependency>
(2)配置
server.port=8080
spring.application.name=microservice-caller
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
(3)代码 REST API
2. 验证 API
3. 测试 Feigh 通过 Nacos 调用后台服务
代码如下:
spring.application.name : nacos-feign
#服务器端口
server- port: 9001
#Nacos 中心
spring.cloud.nacos.discovery. server-addr=127.0.0.1:8848
接下来打开浏览器输入 localhost9001/hi 回车
T
aobao
N
acos
S
ervice
2
刷新查看负载均衡:
T
aobao
N
acos
S
ervice
1
可以看出是通过 Feigh 客户端来调清后端的服务,这里的后端不仅只写了一个,来看一下这个测试,代码如下:
public class TestController {
@Autowired
orderClient orderClient;
//测试通过代理,调用远程的微服务接口
@RequestMapping(“/hi”)
public String hi( ) {
return orderclient.hi();
}
//测试通过代理,调用远程的微服务接口
@RequestMapping(“/hi”)
public string hi() {
return orderCiient.hi() ;
//通过代理后端的 hi
}
//测试通过代理,调用远程的微服务接口
@RequestMapping(“/hello/{name}”)
public string hello(@Pathvariable(value=”name”) String name){
return orderClient.hello( name) ;
}
//hi 传了一个参数
@RequestMapping(“/echo/{name}”)
public string hello(@Pathvariable(value=”name”) String name){
return orderClient.hello( name) ;
}
//调用后台服务
}
和之前一样调用了 hello world 服务,来尝试一下 hello 的参数:在浏览器中输入localhost
9001/
hello
/java
回车,出现:
Taobao
N
acos
S
ervice
1
java
这里面是参数,name 是 java,比如将 name 换成 haha 即localhost9001/hello/haha 回车,name 换成任意都行:
Taobao
N
acos
S
ervice
2
haha
现在查看注册中心,可以动态的删除服务、隐藏服务、创建服务等。而且可以创建服务,此处若创建服务,服务名为 pay-service,保护阈值为1,分组默认,写上元数据点击确认,如果没写上元数据则这是个不存在的服务。
每个不同空间保存自己的资源,可以定义一个不同的配置然后给不同的阶段去使用。比如这里加一个空间,命名ID为 pre,pre 是预发布环境,点击确定。
可以看到在这里定义的命名空间有四个,命名空间ID即是使用的资源,配置数就是使用的信息。生产环境使用 pro;pre 是预生产环境,一般它会模拟一个生产环境来布置定义;test一般在公司内部的局域网进行测试,预生产环境可以放在 more,生产环境与正式环境比较接近。所以一般情况下就是这四个阶段函数。
然后订阅者列表是空的,服务列表里有2台,默认分组是放在 public 下,服务的默认分组是在 DEFAULT_GROUP 文件下。如果是像淘宝这样几百、几千个服务,那么这里的服务名称、分组名称就很重要了。
后面会结合 Nacos 讲解熔断,因为本身的像 Sentinel 和 Nacos 包括微服务集成是不能直接去使用的,中间需要各种配置。这里介绍一下 Nacos 的其他功能。
二、Nacos 的其他功能
在用户管理里可以修改 Nacos 密码:
还可以进行角色管理,输入角色名、用户名进行绑定:
这里还不够智能,比如添加用户 java,密码也是 java,确认密码后点击确定就添加成功了,非常简单;再添加一个用户 spring,密码也为 spring。这样就创建了3个用户,而且还可以在其中更改。
与 Eureka 相比起来这个功能会好用很多,权限也更复杂。在权限管理里可以添加权限,有多种资源名可供选择,这里资源选择 pro(3525862d-58c1-4270-bc9d-bc86e3741961),动作选择读写(rw),角色名为 devops,也就是开发运维。
点击确定,发现不存在,则需要添加角色。在角色管理里选择绑定角色,角色名为Ops,用户名为 java。点击确认,发现添加成功。
再在权限管理中添加权限,发现就能添加上了。这样就会方便很多,实际上集成化之后的完成调用是客服端,服务端,包括 nacos 等都可以利用配置去使用,引用好之后就能进入实战演练,在实际项目中可以直接进行替换。
下节课讲解统一配置和熔断限流,本节课就讲解到这里,注意练习。