没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
SpringCloud 实践系列
Nacos 注册中心
一、概述
1.1、什么是 Nacos
Nacos 可用于微服务的注册中心、配置中心
【注册中心】
用于微服务的注册,解决微服务之间相互负载均衡的调用问题的组件之一
【微服务之间相互负载均衡的调用】
注册中心 + 负载均衡器 + 服务远程调用
1.2、Nacos 功能
1.3、Nacos 注册中心原理图
二、安装使用
2.1、安装
安装
参看 Nacos 快速开始
启动
cd nacos/bin
sh startup.sh -m standalone
登录
http://localhost:8848/nacos
# 登录网页用户名
nacos nacos
2.2、问题解决
mac 升级后无法启动 nacos
# 查看日志报错
/Library/Internet: No such file or directory
# 原因是
/usr/libexec/java_home -V
# 可以查到有两条地址,第一条是系统默认的,第二条是自己的,由于第一条在 Internet
后边有空格,导致我们的报错
Matching Java Virtual Machines (2):
1.8.211.12 (x86_64) "Oracle Corporation" - "Java" /Library/Internet
Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
1.8.0_211 (x86_64) "Oracle Corporation" - "Java SE 8"
/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home
# 修改 nacos 的 startup.sh 文件
vi startup.sh
/done # 搜一下定位到这里
done
export JAVA_HOME
export JAVA="$JAVA_HOME/bin/java"
# 把 done 下的第一条,JAVAHOME 地址,改为我们上边查到的自己的 jdk 地址,保存
done
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home
export JAVA="$JAVA_HOME/bin/java"
# 重启即可
sh startup.sh -m standalone
三、快速开始
引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--springboot 端点监控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--nacos 注册中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
启动类加注解
// 启动类上开启服务注册与发现功能
@EnableDiscoveryClient
3.1、服务注册
在配置文件中配置 nocos 相关参数即可
配置注册服务
spring:
application:
name: cloud-goods # 服务名
cloud:
nacos:
discovery:
server-addr: localhost:8848 # 指定 nacos-server 的地址
username: nacos
password: nacos
server:
port: 9001
提供服务
import com.decade.Goods;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("goods")
public class GoodsController {
@GetMapping("fingById/{id}")
public Goods findById(@PathVariable String id) {
System.out.println("id: " + id);
return new Goods("《java 开发手册》", 99);
}
}
nacos 中查看
3.2、服务发现
引入 RestTemplate
📢要加@LoadBalanced 注解,不然 url 中不能使用服务名,会报 java.net.UnknownHostException:
服务名
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
@Configuration
public class ApiConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
return new RestTemplate(factory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
//默认的是 JDK 提供 http 连接,需要的话可以通过 setRequestFactory 方法替换为例
如 Apache HttpComponents、Netty 或 OkHttp 等其它 HTTP library。
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(5000);
factory.setConnectTimeout(5000);
return factory;
}
}
服务调用
import java.util.HashMap;
import java.util.Map;
@RestController
@AllArgsConstructor
@RequestMapping("order")
public class OrderController {
private RestTemplate restTemplate;
@PostMapping("save/{id}")
public Map save(@PathVariable String id) {
// 1、使用服务名(cloud-goods),远程调用商品详情
String url = "http://cloud-goods/goods/fingById/" + id;
Goods goods = restTemplate.getForObject(url, Goods.class);
// 2、保存订单
System.out.println("保存" + goods.getGoodsName() + "订单完成");
// 3、返回
return new HashMap() {{
put("code", 200);
put("msg", "success");
}};
}
}
剩余46页未读,继续阅读
资源评论
Andy&lin
- 粉丝: 98
- 资源: 214
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功