目录
二、Spring Boot和Spring Cloud的版本号说明
一、SpringCloud是什么?
springcloud是一种较为新颖的微服务框架,springcloud离不开springboot的支持。
1、Spring Cloud依赖选择
<dependencies>
<!--Spring Boot-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud Netflix-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR9</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud 阿里巴巴-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
二、Spring Boot和Spring Cloud的版本号说明
三、Nacos
1.Nacos 概况
阿里巴巴的新开源项目,其核心定位是 “一个更易于帮助构建云原生应用的集注册中心与配置中心于一体的管理平台”。
2、Nacos 下载安装
下载地址:Tags · alibaba/nacos · GitHub
[root@localhost ~]# cd /usr/upload
[root@localhost upload]# tar -zxvf nacos-server-1.4.1.tar.gz -C /usr/local
3、启动关闭
启动:
cd /usr/local/nacos/bin
./starup.sh -m standalone
关闭:
cd /usr/local/nacos/bin
./shutdown.sh
(一)注册中心
1、组成部分
Ø Nacos-Server:注册中心
提供服务的注册和发现。
Ø Nacos-Provider:服务提供方
把自身的服务实例注册到 Nacos Server 中
Ø Nacos-Consumer:服务调用方
通过 Nacos Server 获取服务列表,消费服务。
2、采用注册中心主要由一下原因:
① 会导致代码耦合度较高
② 服务较多,单一依靠人工来维护服务地址的配置,任务量较大
① 在服务较多时,模块之间依赖关系复杂化,同时无法分清模块之间的启动顺序
① 当一台服务器出现问题,对其的提供者服务器就会失效
当我们使用注册中心可以轻松避免此类问题,将消费者和提供都注册在注册中心中,通过在配置文件写入注册中心的地址,文件名、扩展名、开发环境、项目名
yml配置文件,如下
spring:
cloud:
nacos:
discovery:#注册中心
server-addr: 192.168.75.131:8848 #注册中心的地址
namespace: dev #开发环境
group: NACOS_GROUP #项目名
application:
name: nacos-provider #注册到nacos的名字
3、 启动类注解
//向注册中心注册该服务,并可以获取其他服务的调用地址
@EnableDiscoveryClient
(三)、配置中心
1、什么时配置中心
(1)、主要原因
配置文件相对分散。在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散在各个微服务中,不好统一配置和管理。
配置文件无法区分环境。微服务项目可能会有多个环境,例如:测试环境、预发布环境、生产环境。每一个环境所使用的配置理论上都是不同的,一旦需要修改,就需要我们去各个微服务下手动维护,这比较困难。
配置文件无法实时更新。我们修改了配置文件之后,必须重新启动微服务才能使配置生效,这对一个正在运行的项目来说是非常不友好的。
(2)、配置中心主要思路
首先把项目中各种配置全部都放到一个集中的地方进行统一管理。
当各个服务需要获取配置的时候,就来配置中心的接口拉取自己的配置。
当配置中心中的各种参数有更新的时候,也能通知到各个服务实时的过来同步最新的信息,使之动态更新
yal文件配置与注册中心相同注意配置名称
(3)、配置中心代码
server:
port: 80
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.204.129:8848
application:
name: nacos-config
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/health?characterEncoding=UTF-8
username: root
password: 1111
type: com.alibaba.druid.pool.DruidDataSource
2、路径代码
provider代码如下
@RestController
@RequestMapping("/provider")
public class ProviderController {
@Autowired
private UserService userService;
@RequestMapping("/getUserById/{id}")
public User getUserById(@PathVariable Integer id){
return userService.getUserById(id);
}
}
Consumer代码如下
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
@Autowired
private RestTemplate restTemplate;
@Autowired
private DiscoveryClient discoveryClient;//发现服务的工具类
@RequestMapping("/getUserById/{id}")
public User getUserById(@PathVariable Integer id){
//缺陷:1.地址硬编码 2.不能负载均衡
List<String> services = discoveryClient.getServices();
for (String service : services) {
System.out.println(service);
}
ServiceInstance instance = discoveryClient.getInstances("nacos-provider").get(0);
//String url = "http://127.0.0.1:9090/provider/getUserById/"+id;
String url = "http://"+instance.getHost()+":"+instance.getPort()+"/provider/getUserById/"+id;
return restTemplate.getForObject(url,User.class);
}
}
(四)、配置隔离
对于Nacos配置管理,通过Namespace、group、Data ID能够定位到一个配置集。
1、Namespace Group DataId介绍:
Namespace: 代表不同的环境的配置隔离, 如: 开发、测试, 生产等
Group: 可以代表某个项目, 如XX医疗项目, XX电商项目
DataId: 每个项目下往往有若干个工程, 每个配置集(DataId)是一个工程的主配置文件
2、获取配置集需要指定:
nacos服务地址,必须指定
namespace,如不指定默认public
group,如不指定默认 DEFAULT_GROUP
dataId,必须指定
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
3、group隔离
(五)、持久化
Nacos默认有自带嵌入式数据库derby,但是如果做集群模式的话,就不能使用自己的数据库不然每个节点一个数据库,那么数据就不统一了,需要使用外部的mysql
1、首先要切换数据库
修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql,版本要求:5.6.5+)
### If use MySQL as datasource:
spring.datasource.platform=mysql### Count of DB:
db.num=1### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.31.19:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=1111
2、建库建表
1、创建nacos库
注意:库名和application.properties中的库名保持一致
2、建表
找到conf/nacos-mysql.sql文件并执行
3、测试
1、重启nacos
2、新建配置文件
3、观察配置文件是否持久化到mysql中