网站的需求分析怎么写,青海建设网站多少钱,网站的维护步骤,搜索引擎是指什么系列文章目录
第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…系列文章目录
第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Spring Cloud Netflix 之 Hystrix 第九章 代码管理gitlab 使用 第十章 SpringCloud Alibaba 之 Nacos discovery 文章目录 系列文章目录[TOC](文章目录) 前言1、Nacos 的命名是由 3 部分组成1.1、技术升级和替换1.2、系统架构图 2、Nacos两大组件3、Nacos 实现服务注册与发现的流程如下3.1、下载软件3.2、服务提供者3.3、 服务消费者 4、实战应用4.1、版本兼容说明4.2、Nacos server安装4.3、启动nacos4.4、工程改造4.4.1、父pom改造4.4.2、服务提供者改造4.4.3、服务消费者改造4.4.4、 Config配置4.4.5、调用者实例 5、集成openFeign5.1、修改调用方配置文件5.1.1、增加springcloud依赖5.1.2、增加openFeign依赖项 5.2、调用方代码改造5.2.1、在启动类增加openFeign配置5.2.2、新增服务层接口UserService5.2.3、改造控制层方法 总结
前言
Nacos 英文全称为 Dynamic Naming and Configuration Service它是一个开源的、易于使用的、功能强大的配置和发现管理系统由阿里巴巴团队使用 Java 语言开发的开源项目。Nacos 为微服务架构提供了一种简单、灵活、动态的配置管理方案可以支持大规模的分布式系统和云原生应用。它旨在提供动态服务发现、配置管理和服务管理等功能帮助开发者构建易于扩展、动态适应的分布式系统。
1、Nacos 的命名是由 3 部分组成
组成部分全称描述Nanaming/nameServer即服务注册中心与 Spring Cloud Eureka 的功能类似。coconfiguration即配置中心与 Spring Cloud ConfigSpring Cloud Bus 的功能类似。sservice即服务表示 Nacos 实现的服务注册中心和配置中心都是以服务为核心的。
1.1、技术升级和替换
前几章节我们介绍了Spring Cloud Netflix套件今天开始我们升级成使用Spring Cloud Alibaba。 Spring Cloud Alibaba 的 Nacos discovery会替换掉Spring Cloud Netflix 的 Eureka。
1.2、系统架构图
整个电商微服务架构选用Spring Cloud Alibaba套件包括
熔断限流Spring Cloud Alibaba Sentinel微服务注册中心Nacos Discovery微服务配置Nacos Discovery Config微服务调用Nacos Discovery
再加上Spring Cloud组件
负载均衡openFeign网关Gateway
以及
分库分表Apache ShardingSphere-JDBC缓存集群(Redis主从) 2、Nacos两大组件
组件描述功能Nacos ServerNacos 服务端与 Eureka Server 不同Nacos Server 由阿里巴巴团队使用 Java 语言编写并将 Nacos Server 的下载地址给用户用户只需要直接下载并运行即可。Nacos Server 可以作为服务注册中心帮助 Nacos Client 实现服务的注册与发现。––Nacos Server 可以作为配置中心帮助 Nacos Client 在不重启的情况下实现配置的动态刷新。Nacos ClientNacos 客户端通常指的是微服务架构中的各个服务由用户自己搭建可以使用多种语言编写。Nacos Client 通过添加依赖 spring-cloud-starter-alibaba-nacos-discovery在服务注册中心Nacos Server中实现服务的注册与发现。––Nacos Client 通过添加依赖 spring-cloud-starter-alibaba-nacos-config在配置中心Nacos Server中实现配置的动态刷新。 3、Nacos 实现服务注册与发现的流程如下
3.1、下载软件
从 Nacos 官方提供的下载页面中下载 Nacos Server 并运行。
3.2、服务提供者
Nacos Client 启动时会把服务以服务名spring.application.name的方式注册到服务注册中心Nacos Server
3.3、 服务消费者
Nacos Client 启动时也会将自己的服务注册到服务注册中心服务消费者在注册服务的同时它还会从服务注册中心获取一份服务注册列表信息该列表中包含了所有注册到服务注册中心上的服务的信息包括服务提供者和自身的信息在获取了服务提供者的信息后服务消费者通过 HTTP 或消息中间件远程调用服务提供者提供的服务。
4、实战应用
4.1、版本兼容说明
https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
4.2、Nacos server安装
下载 https://github.com/alibaba/nacos/releases/tag/2.0.4
4.3、启动nacos
Nacos Server 下各目录说明如下
bin用于存放 Nacos 的可执行命令。conf用于存放 Nacos 配置文件。target用于存放 Nacos 应用的 jar 包。 进入bin目录执行启动命令startup.cmd -m standalone http://localhost:8848/nacos 用户名/密码nacos/nacos
4.4、工程改造
4.4.1、父pom改造
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion2021.0.5/versiontypepom/typescopeimport/scope
/dependency
!--spring cloud alibaba 依赖--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2021.0.4.0/versiontypepom/typescopeimport/scope
/dependency
4.4.2、服务提供者改造
添加依赖
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactIdversion2021.0.4.0/version
/dependency
添加配置
spring:application:name: app-provider-service #服务名cloud:nacos:discovery:server-addr: localhost:8848启动类加注解 EnableDiscoveryClient 启动应用查看nacos后台
4.4.3、服务消费者改造
添加依赖
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactIdversion2021.0.4.0/version
/dependency添加配置
spring:application:name: app-api-service #服务名cloud:nacos:discovery:server-addr: localhost:8848 #Nacos server 的地址启动类添加注解 EnableDiscoveryClient
4.4.4、 Config配置
创建config文件夹在下面添加LoadBalancedConfig配置
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;Configuration
public class LoadBalancedConfig {BeanLoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}}4.4.5、调用者实例
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.Map;RestController
RequestMapping(/user)
public class UserController {private final static String SERVER_URL http://localhost:8080;Autowiredprivate RestTemplate restTemplate;GetMapping(/getUserName)public Map getUserName() {String url SERVER_URL /user/getUserName;Map map restTemplate.getForObject(url , Map.class);map.put(type , caller);return map;}}5、集成openFeign
5.1、修改调用方配置文件
5.1.1、增加springcloud依赖
dependencyManagementdependencies!--spring cloud 依赖--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion2021.0.5/versiontypepom/typescopeimport/scope/dependency!--spring cloud alibaba 依赖--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2021.0.4.0/versiontypepom/typescopeimport/scope/dependency/dependencies
/dependencyManagement5.1.2、增加openFeign依赖项
dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependency!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-loadbalancer --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency
/dependencies5.2、调用方代码改造
5.2.1、在启动类增加openFeign配置 EnableFeignClients 5.2.2、新增服务层接口UserService
import com.xxx.common.entity.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;FeignClient(name app-provider-service)
public interface UserService {GetMapping(/user/getUserName)public User getUserName() ;
}5.2.3、改造控制层方法
Autowired
private UserService userService;GetMapping(/getUserName)
public Map getUserName() {User user userService.getUserName();Map map new HashMap();map.put(code , 200);map.put(data , user);map.put(type , caller);return map;
}总结
云原生微服务治理有很多手段但在Java生态里最主流的还是Spring Cloud Alibaba 、Spring Cloud Netflix。 Spring Cloud文章的前部分已经把Spring Cloud Netflix相关组件讲解且实践过了这章我们讲解了Spring Cloud Alibaba的Nacos discovery后续还会继续讲解完Spring Cloud Alibaba其他组件。