一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第22天,点击查看活动详情
Nacos 源码分析系列相关文章
- 从零开始看 Nacos 源码环境搭建
- 图解+源码讲解 Nacos 客户端发起注册流程
- 图解+源码讲解 Nacos 服务端处理注册请求逻辑
- 图解+源码讲解 Nacos 客户端下线流程
- 图解+源码讲解 Nacos 服务端处理下线请求
- 图解+源码讲解 Nacos 客户端发起心跳请求
- 图解+源码讲解 Nacos 服务端处理心跳请求
- 图解+源码讲解 Nacos 服务端处理配置获取请求
从零开始看 Nacos 源码环境搭建
唯有行动才能改造命运
源码下载
1. 通过 git 命令下载 Nacos 项目
git clone https://github.com/alibaba/nacos.git
源码编译
1. 用 maven 指令进行项目编译
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
项目结构
Nacos 服务端源码启动
1. 启动类
Nacos 启动器
/**
* Nacos starter.
*/
@SpringBootApplication(scanBasePackages = "com.alibaba.nacos")
@ServletComponentScan
@EnableScheduling
public class Nacos {
public static void main(String[] args) {
SpringApplication.run(Nacos.class, args);
}
}
2. 设置单机节点启动
-Dnacos.standalone=true
3. 启动结果
启动模式是:单例模式
端口号是:8848
服务界面地址是:http://192.168.60.3:8848/nacos
账号:nacos
密码:nacos
4. 控制台页面
service-provider 服务提供者环境搭建
1. 引入 pom 配置文件
配置服务注册发现中心,版本是 2.1.4.RELEASE
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
2. 启动类创建
@EnableDiscoveryClient 开启服务注册功能
package springcloud.service.nacos;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient // 开启服务注册功能
public class DiscoveryProviderApplication {
public static void main(String[] args) {
SpringApplication.run(DiscoveryProviderApplication.class, args);
}
}
3. 服务提供接口创建
创建一个服务提供者接口,提供给服务调用者调用
package springcloud.service.nacos.controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* @Version V1.0.0
* @Since 1.0
* @Date 2022/4/17
* @Description
*/
@RestController
@RequestMapping("discovery")
public class DiscoveryProviderController {
@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
public String echo(@PathVariable String string) {
return "Hello Nacos Discovery " + string;
}
}
4. application.properties 文件配置
server.port=1010 // 服务端口号
spring.application.name=service-provider // 服务名字
spring.cloud.nacos.discovery.server-addr=localhost:8848 // 注册中心地址
spring.cloud.nacos.discovery.username=nacos // 控制台账号
spring.cloud.nacos.discovery.password=nacos // 控制台密码
spring.cloud.nacos.discovery.namespace=public // 命名空间
5. 服务启动注册
服务启动成功,并且注册完成
6. 控制台服务列表查看注册服务
service-consumer 服务消费者环境搭建
1. 引入 pom 配置文件
配置服务注册发现中心,版本是 2.1.4.RELEASE
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
2. 启动类创建
@EnableDiscoveryClient 开启服务注册功能
package springcloud.service.nacos;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient // 开启服务注册功能
public class DiscoveryProviderApplication {
public static void main(String[] args) {
SpringApplication.run(DiscoveryProviderApplication.class, args);
}
}
3. 负载均衡配置
通过注解 @LoadBalanced 进行负载均衡配置,一看到这个注解感觉就是 Ribbon 配置
package springcloud.service.nacos.config;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
/**
* @Version V1.0.0
* @Since 1.0
* @Date 2022/4/17
* @Description
*/
@Configuration
public class RestConfig {
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
4. 服务调用者接口创建
package springcloud.service.nacos.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
/**
* @Version V1.0.0
* @Since 1.0
* @Date 2022/4/17
* @Description
*/
@RestController
@RequestMapping("discovery")
public class DiscoveryConsumerController {
@Autowired
private RestTemplate restTemplate;
@RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
public String echo(@PathVariable String str) {
return restTemplate.getForObject("http://service-provider/discovery/echo/" + str, String.class);
}
}
5. application.properties 文件配置
server.port=1020 // 端口号
spring.application.name=service-consumer //服务消费者名字
spring.cloud.nacos.discovery.server-addr=localhost:8848 // 注册中心地址
spring.cloud.nacos.discovery.username=nacos// 账号
spring.cloud.nacos.discovery.password=nacos// 密码
spring.cloud.nacos.discovery.namespace=public // 命名空间
6. 服务启动注册
7. 控制台服务列表查看注册服务
服务访问
请求地址:http://localhost:1020/discovery/echo/haha
返回结果:Hello Nacos Discovery haha
到这里我们的环境就算搭建完成了后续我们会进行服务注册、服务发现、以及服务心跳等功能进行分析
其他系列源码分析
feign 源码分析系列相关文章
- 图解+源码讲解 Feign 如何将客户端注入到容器中
- 图解+源码讲解动态代理获取 FeignClient 代理对象
- 图解+源码讲解代理对象 ReflectiveFeign 分析
- 图解+源码讲解 Feign 如何选取指定服务
- 图解+源码讲解 Feign 请求的流程
ribbon 源码分析系列相关文章 - Ribbon 原理初探
- 图解+源码讲解 Ribbon 如何获取注册中心的实例
- 图解+源码讲解 Ribbon 服务列表更新
- 图解+源码讲解 Ribbon 服务选择原理
- 图解+源码讲解 Ribbon 如何发起网络请求
eureka 源码分析系列相关文章
- eureka-server 项目结构分析
- 图解+源码讲解 Eureka Server 启动流程分析
- 图解+源码讲解 Eureka Client 启动流程分析
- 图解+源码讲解 Eureka Server 注册表缓存逻辑
- 图解+源码讲解 Eureka Client 拉取注册表流程
- 图解+源码讲解 Eureka Client 服务注册流程
- 图解+源码讲解 Eureka Client 心跳机制流程
- 图解+源码讲解 Eureka Client 下线流程分析
- 图解+源码讲解 Eureka Server 服务剔除逻辑
- 图解+源码讲解 Eureka Server 集群注册表同步机制