Nacos注册中心
①:Nacos基础Linux的安装配置
nacos的默认端口号为8848
登录的用户名和密码默认的都是nacos
②:服务注册到Nacos
<!--父工程管理依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2021.1</version> <type>pom</type> <scope>import</scope> </dependency> <!--Nacos客户端依赖包--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2021.1</version> </dependency>
主要bug
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.Bootstrapper
这个报错主要原因是springcloud与springboot版本之间的问题。
打开查看spring alibaba、springcloud、springboot对应版本
③:demo演示
④:Nacos服务分级存储模型
⑤:服务跨集群调用问题
服务调用尽可能选择本地集群的服务,跨集群调用延迟较高
本地集群不可访问时候、再去访问其他集群
⑥:服务集群属性
⑥:根据集群负载均衡
⑦:根据权重负载均衡
实际部署中会出现这样的场景
服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求
Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高
包括服务器的升级、我们可以使用权重来使得某个微服务无人访问,然后停机升级。这样也不会影响正在使用的用户
实例的权重控制 Nacos控制台可以设置实例的权重值,0~1之间 同集群内的多个实例,权重越高被访问的频率越高 权重设置为0则完全不会被访问
⑧:环境隔离 - namespace
Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离
搭建过程
Nacos环境隔离 namespace用来做环境隔离 每个namespace都有唯一id 不同namespace下的服务不可见
⑨:nacos注册中心细节分析
⑩:临时实例与非临时实例
临时实例的情况下,如果你终止程序,过30s,到nacos中查看就会发现爆红然后直接消失(被nacos踢出) 非临时实例终止程序,nacos中查看该服务爆红,但不会踢出。重新启动非临时实力即可
nacos与eureka的区别
1.Nacos与eureka的共同点 都支持服务注册和服务拉取 都支持服务提供者心跳方式做健康检测 2.Nacos与Eureka的区别 Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式 临时实例心跳不正常会被剔除,非临时实例则不会被剔除 Nacos支持服务列表变更的消息推送模式,服务列表更新更及时 Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式 ; Eureka采用AP方式
2.微服务架构组件
①:Nacos配置管理
配置更改热更新
注
: Nacos配置文件中的内容不是随便写的,不是把项目中的yml配置文件拉进去就可以了,我们只写一些通用的、需要热更新的内容。
像数据库地址一般都是固定的,就不必写。
data ID: 服务器名-开发环境-后缀名
如此一来我们就配置好了,接下来就需要将微服务连接上配置
②:统一配置管理
服务获取配置的步骤、顺序如下:
注意:
springboot 2.4以后,bootstrap默认关闭,你需要添加依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.1.1</version> </dependency>
这个配置在微服务本地配置是不存在的,也是刚刚在nacos当中的配置。
输出的日期与nacos配置当中一直,这就 说明我们确实获取到了nacos中的配置
③:热更新配置
④:多环境配置共享
共享前提: 微服务的bootstrap配置名相同
spring: application: name: orderService
关于配置的拆分管理
⑤:nacos集群搭建
1.搭建MySQL集群并初始化数据库表
2.下载解压nacos
3.修改集群配置(节点信息)、数据库配置
4.分别启动多个nacos节点
5.nginx反向代理
⑥:RestTemplate方式调用存在的问题
这样的代码可读性差、参数复杂URL难以维护
⑦:Feign声明式http客户端
feignclient 客户端名字根据你服务名来的,可以要yml文件中查看,需要调用哪个服务就放哪个名字进去
⑧:自定义Feign配置
方式一是配置文件,feign.client.config.xxx.loggerLevel 如果xxx是default则代表全局 如果xxx是服务名称,例如userservice则代表某服务 方式二是java代码配置Logger.Level这个Bean 如果在@EnableFeignClients注解声明则代表全局 如果在@FeignClient注解中声明则代表某服务
⑨:Feign性能调优
Feign底层的客户端实现
URLConnection: 默认实现,不支持连接池
Apache HttpClient: 支持连接池
OKHttp: 支持连接池我们知道没有连接池的情况下,需要每次都重连和断开,影响性能
因此优化Feign的性能主要包括:
使用连接池代替默认的URLConnection
日志级别,最好用basic或none
标签:服务,配置,Nacos,nacos,实例,集群 From: https://www.cnblogs.com/zhao-ke-ming/p/18501523