什么是微服
微服就是把一个项目,拆分成多个独立的项目,并且可以保证每个服务独立运行,每个服务都会占用线程
它是一种架构风格
Nacos
服务的注册发现
官网网址:https://nacos.io/zh-cn/index.html
官网文档网址:https://nacos.io/zh-cn/docs/quick-start.html
下载安装 好找到bin目录 cmd 启动nacos
启动命令(standalone代表着单机模式运行,非集群模式): windows方式
startup.cmd -m standalone
然后浏览器访问 http://localhost:8848/nacos 默认账号密码 nacos nacos
nacos替代了eureka nacos = 注册中心 + 配置中心
远程调用与Ribbon
nacos集成了Ribbon
现在如果我们需要远程访问那么可以使用RestTemplate,其中getForObject是最常用方法,同时还要在服务消费者中配置RestTemplate:
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
/**
* 1. url的第一部分是在Nacos中注册的服务提供者名称,如果多个服务提供者注册相同名称,Ribbon会自动寻找其中一个服务提供者,并且调用接口方法。这个就是负载均衡功能。
2. url后半部是控制器的请求路径。
*/
restTemplate.getForObject(arg1,arg2,arg3...);
各服务注册中心的对比
CAP模型
一致性(Consistency):同一时刻的同一请求的实例返回的结果相同,所有的数据要求具有强一致性(Strong Consistency)
可用性(Availability):所有实例的读写请求在一定时间内可以得到正确的响应
分区容错性(Partition tolerance):在网络异常(光缆断裂、设备故障、宕机)的情况下,系统仍能提供正常的服务
以上三个特点就是CAP原则(又称CAP定理),但是三个特性不可能同时满足,所以分布式系统设计要考虑的是在满足P(分区容错性)的前提下选择C(一致性)还是A(可用性),即:CP或AP
Nacos支持AP/CP默认是
切换命令(默认是AP):
{curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'}
Nacos之服务配置中心
导入依赖
<dependency>
<groupId> com.alibaba.cloud </groupId>
<artifactId> spring-cloud-starter-alibaba-nacos-config </artifactId>
</dependency>
配置.yml
application.yml
bootstrap.yml
springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application
@RefreshScope //支持Nacos的动态刷新功能
Nacos配置规则
在 Nacos Spring Cloud 中,dataId
的完整格式如下(详情可以参考官网 https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html)
Nacos命名空间分组和DataID三者关系
命名空间(Namespace)
配置分组(Group)
配置集 ID(Data ID)
三者关系图解
Nacos集群架构说明
大多数情况在linux中部署,需要配置外mysql
在mysql中配置
CREATE DATABASE nacos_config;
USE nacos_config;
运行nacos中的sql脚本
修改conf/application.properties文件
修改成自己的mysql 连接池的配置
Linux中Nacos mysql
网关
Z