赞
踩
在微服务架构中,整个系统会按职责能力划分为多个服务,通过服务之间协作来实现业务目标。
这样在我们的代码中免不了要进行服务间的远程调用,服务的消费方要调用服务的生产方,
为了完成一次请求,消费方需要知道服务生产方的网络位置(IP地址和端口号)。
Nacos, Eureka, Consul, Zookeeper
<a name="anchor1-3"></a>
nacos 是阿里的一个开源产品,它是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。
<a name="anchor1-4"></a>
1)服务发现与服务健康检查。
2)动态配置管理。
3)动态 DNS 服务。
4)服务和元数据管理。
使用 Feign + Ribbon 技术来完成服务间远程调用及负载均衡的。
负载均衡就是将用户请求(流量)通过一定的策略,分摊到多个服务实例上执行,
它是系统处理高并发、缓解网络压力和进行服务端扩容的重要手段之一。
1)服务端负载均衡:如:Nginx
2)客户端负载均衡:如:Ribbon
Feign 是 Netflix 开发的声明式、模板化的 HTTP 客户端,Feign 可以帮助我们更快捷、优雅地调用 HTTP API.
Feign 的英文表意为“假装、伪装、变形”,可以理解为将 HTTP 报文请求方式伪装为简单的 java 接口调用方式。
下载解压安装 nacos-1.1.3,并启动独立服务 startup.cmd -m standalone
–> idea
–> File
–> New Project
–> Maven
–> Groupld : ( djh.it )
Artifactld : ( nacos_discovery )
Version : 1.0-SNAPSHOT
–> Next
–> Project name: ( nacos_discovery )
Project location: ( C:\java-test\idea2019\nacos_discovery )
–> Finish
(父工程不编写代码,可以删除 src 目录)
<?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"> <modelVersion>4.0.0</modelVersion> <groupId>djh.it</groupId> <artifactId>nacos_discovery</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <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> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.1.3.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> <!-- C:\java-test\idea2019\nacos_discovery\pom.xml -->
创建两个子模块: --> 右键 nacos_discovery 父工程 --> Modules --> Maven --> Groupld : ( djh.it ) Artifactld : ( quickstart_provider ) Version : 1.0-SNAPSHOT --> Next --> Module name: ( quickstart_provider ) Content root : ( C:\java-test\idea2019\nacos_discovery\quickstart_provider ) Module file location: ( C:\java-test\idea2019\nacos_discovery\quickstart_provider ) --> Finish --> 右键 nacos_discovery 父工程 --> Modules --> Maven --> Groupld : ( djh.it ) Artifactld : ( quickstart_consumer ) Version : 1.0-SNAPSHOT --> Next --> Module name: ( service1 ) Content root : ( C:\java-test\idea2019\nacos_discovery\quickstart_consumer ) Module file location: ( C:\java-test\idea2019\nacos_discovery\quickstart_consumer ) --> Finish
<?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>nacos_discovery</artifactId> <groupId>djh.it</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>quickstart_provider</artifactId> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> </dependencies> </project> <!-- C:\java-test\idea2019\nacos_discovery\quickstart_provider\pom.xml -->
## C:\java-test\idea2019\nacos_discovery\quickstart_provider\src\main\resources\application.yml server: port: 56010 # 启动端口 spring: application: name: quickstart_provider cloud: nacos: # config: # 表示配置管理 discovery: # 表示服务发现 server-addr: 127.0.0.1:8849 logging: level: root: info org.springframework: info
创建 ProviderController.java 类。
/** * C:\java-test\idea2019\nacos_discovery\quickstart_provider\src\main\java\djh\it\nacos\controller\ProviderController.java * * 2024-4-3 服务提供者 provider Controller */ package djh.it.nacos.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class ProviderController { private static final Logger LOG = LoggerFactory.getLogger(ProviderController.class); @GetMapping("/service") public String service(){ LOG.info("provider invoke"); return "provider invoke"; } }
/** * C:\java-test\idea2019\nacos_discovery\quickstart_provider\src\main\java\djh\it\nacos\NacosProviderApp.java * * 2024-4-3 服务提供者 启动类 NacosProviderApp.java */ package djh.it.nacos; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication @EnableDiscoveryClient //引入服务发现客户端 @EnableFeignClients //引入远程调用客户端 public class NacosProviderApp { public static void main(String[] args) { SpringApplication.run(NacosProviderApp.class, args); } }
点击 【服务管理】–> 【服务列表】
会发现如下界面:
相关链接:【Nacos 配置管理:Nacos 下载,安装 Nacos Server】点击下列链接
Nacos 下载,安装 Nacos Server
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。