小馋网站建设书,二级域名网站优化,wordpress右下角悬浮,遵义网站建设第十五章_Cloud Alibaba简介
1.出现SpringCloud Alibaba的原因
SpringCloud Netflix项目进入维护模式 技术的发展 2.SpringCloud Alibaba简介
2.1是什么 2.2能干嘛 2.3去哪下
阿里巴巴中文文档下载网站#xff1a;
spring-cloud-alibaba/README-zh.md at 2022.x alibaba…第十五章_Cloud Alibaba简介
1.出现SpringCloud Alibaba的原因
SpringCloud Netflix项目进入维护模式 技术的发展 2.SpringCloud Alibaba简介
2.1是什么 2.2能干嘛 2.3去哪下
阿里巴巴中文文档下载网站
spring-cloud-alibaba/README-zh.md at 2022.x · alibaba/spring-cloud-alibaba (github.com) 如何引入依赖
如果需要使用已发布的版本在pom中添加如下配置
dependencyManagementdependenciesdependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2022.0.0.0/versiontypepom/typescopeimport/scope/dependency/dependencies
/dependencyManagement2.4怎么玩 3.SpringCloud Alibaba学习资料获取
官网
https://spring.io/projects/spring-cloud-alibaba#overview
阿里巴巴中文文档下载网站
spring-cloud-alibaba/README-zh.md at 2022.x · alibaba/spring-cloud-alibaba (github.com)
第十六章_Nacos服务注册和配置中心
1.Nacos简介
1.1为什么叫Nacos
前四个字母分别为Naming和Configuration的前两个字母最后的s为Service
Nacos: Dynamic Naming and Configuration Service
1.2是什么
Nacos: Dynamic Naming and Configuration Service 一个更易于构建云原生应用的动态服务发现、配置管理平台
Nacos 就是注册中心 配置中心的组合 Nacos EurekaConfig Bus
1.3能干嘛
替代Eureka做服务注册中心替代Config做服务配置中心
1.4去哪下
git源码
阿里巴巴/NACOS一个易于使用的动态服务发现、配置和服务管理平台用于构建云原生应用程序。 (github.com)
官网文档 英文 春云阿里巴巴参考文档 (spring-cloud-alibaba-group.github.io) 中文 home (nacos.io)
1.5各种注册中心比较 A即Availability可用性C即Consistency强一致性
1.6回忆CAP模型
CAP理论的核心是一个分布式系统不可能同时很好的满足一致性可用性和分区容错性这三个需求因此根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三大类
CA - 单点集群满足一致性可用性的系统通常在可扩展性上不太强大CP - 满足一致性分区容忍必的系统通常性能不是特别高AP - 满足可用性分区容忍性的系统通常可能对一致性要求低一些
1AP架构Eureka/Nacos 2CP架构Zookeeper/Consul 2.安装并运行Nacos
本地Java8Maven环境已经OK
先从官网下载Nacoshttps://github.com/alibaba/nacos/releases 解压缩后 startup.cmd -m standalone表示是单机启动不是集群。
当然也可以在Windows下修改/nacos/bin目录下的startup.cmd脚本文件将其中的
set MODEcluster 修改为 set MODEstandalone即可实现Nacos的单机启动以后直接双击 bin 目录下的 startup.cmd即可。 命令运行成功后直接访问http://localhost:8848/nacos 默认账号密码都是nacos
3.Nacos作为服务注册中心
3.1基于Nacos的服务提供者9001和9002
1pom
父工程添加阿里巴巴 本模块 dependencies!-- springcloud alibaba nacos 依赖 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!-- 引入自己定义的api通用包 --dependencygroupIdspringcloud/groupIdartifactIdcloud-api-commons/artifactIdversion${project.version}/version/dependency/dependencies
2yml 3主启动 4业务层 5测试 6构建服务提供者9002
nacos服务注册中心服务提供者9001都OK了
为了下一章节演示nacos的负载均衡参照9001新建9002新建cloudalibaba-provider-payment9002
3.2基于Nacos的服务消费者83
1pom dependencies!-- springcloud alibaba nacos 依赖 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependency!-- 引入自己定义的api通用包可以使用Payment支付Entity --groupIdspringcloud/groupIdartifactIdcloud-api-commons/artifactIdversion${project.version}/version/dependency/dependencies2yml 3主启动 4业务类 config配置类 补充为什么nacos可以直接开启负载均衡功能 nacos-discovery包里面包含了netflix的jar包而里面又包含了ribbon包 controller层 5测试
测试地址localhost:83/consumer/nacos/33
测试效果实现负载均衡效果
3.3服务注册中心对比 1nacos的两种实例模型
C是所有节点在同一时间看到的数据是一致的而A的定义是所有的请求都会收到响应 何时选择使用何种模式
一般来说如果不需要存储服务级别的信息且服务实例是通过nacos-client注册并能够保持心跳上报那么就可以选择AP模式。当前主流的服务如 Spring cloud 和 Dubbo 服务都适用于AP模式AP模式为了服务的可能性而减弱了一致性因此AP模式下只支持注册临时实例。
如果需要在服务级别编辑或者存储配置信息那么 CP 是必须K8S服务和DNS服务则适用于CP模式。CP模式下则支持注册持久化实例此时则是以 Raft 协议为集群运行模式该模式下注册实例之前必须先注册服务如果服务不存在则会返回错误。
2切换命令
curl -X PUT $NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entryserverModevalueCP4.Nacos作为服务配置中心
4.1搭建Nacos配置中心3377模块
1pom dependencies!-- 以 nacos 做服务配置中心的依赖 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency!-- springcloud alibaba nacos 依赖 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency!-- springboot整合Web组件 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependency!-- 引入自己定义的api通用包可以使用Payment支付Entity --groupIdspringcloud/groupIdartifactIdcloud-api-commons/artifactIdversion${project.version}/version/dependency/dependencies2yml
两个 yml为什么配置两个
Nacos 同 springcloud-config 一样在项目初始化时要保证先从配置中心进行配置拉取拉取配置之后才能保证项目的正常启动。
springboot 中配置文件的加载是存在优先级顺序的bootstrap 优先级高于application
①bootstrap.yml ②application.yml 3主启动 4业务类 4.2在Nacos中添加配置文件信息
1理论
nacos中的dataid的组成格式及与springboot配置文件中的匹配规则
${prefix}-${spring.profiles.active}.${file-extension}prefix 默认为 spring.application.name 的值也可以通过配置项 spring.cloud.nacos.config.prefix 来配置spring.profiles.active 即为当前环境对应的 profile详情可以参考 Spring Boot文档。 注意当 spring.profiles.active 为空时对应的连接符 - 也将不存在dataId的拼接格式变成 p r e f i x . {prefix}. prefix.{file-extension}file-exetension 为配置内容的数据格式可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml类型注意nacos里必须使用yaml不能使用yml
最后公式
${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}2实操 nacos新增配置 3测试
测试地址localhost:3377/config/info
测试效果 当修改配置值会发现 3377 上也已经修改Nacos自带自动刷新功能 4.3Nacos的分类配置
1问题—多环境多项目管理
问题1
实际开发中通常一个系统会准备dev开发环境、test测试环境、prod生产环境如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢
问题2
一个大型分布式微服务系统会有很多微服务子项目每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境…那怎么对这些微服务配置进行管理呢
2Nacos的图形化管理界面
新建三个命名空间dev、test、prod 3分析NamespaceGroupData ID
思考为什么这么设计
①是什么
类似Java里面的package名和类名
最外层的namespace是可以用于区分部署环境的Group和DataID逻辑上区分两个目标对象
②三者关系 NamespacepublicGroupDEFAULT_GROUP默认Cluster是DEFAULT
Nacos默认的命名空间是publicNamespace主要用来实现隔离
比方说我们现在有三个环境开发、测试、生产环境我们就可以创建三个Namespace不同的Namespace之间是隔离的
Group默认是DEFAULT_GROUPGroup可以把不同的微服务划分到同一个分组里面去
Service就是微服务一个Service可以包含多个Cluster集群Nacos默认Cluster是DEFAULTCluster是对指定微服务的一个虚拟划分。
比方说为了容灾将Service微服务分别部署在了杭州机房和广州机房这时就可以给杭州机房的Service微服务起一个集群名称HZ给广州机房的Service微服务起一个集群名称GZ还可以尽量让同一个机房的微服务互相调用以提升性能。
最后是Instance就是微服务的实例
4三种方案加载配置文件
①Data方案就是nacous的文件名 指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置 实践默认空间默认分组新建dev和test两个DataID 新建test的配置DataIDnacos-config-client-test.yaml ②Group方案默认DEFAULT_GROUP
通过Group实现环境区分新建GroupTEST_GROUPData IDnacos-config-client-dev.yaml 不变yml添加分组名称 ③Namespace方案默认public
通过 Namespace实现环境区分新建dev/test的NamespaceData IDnacos-config-client-dev.yaml 不变分组默认yml添加命名空间的id 测试 public空间 dev空间
5.Nacos集群和持久化配置
5.1官网说明
https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
1集群部署架构图 上图为官网翻译结果真实情况如下 默认Nacos使用嵌入式数据库实现数据的存储。所以如果启动多个默认配置下的Nacos节点数据存储是存在一致性问题的。为了解决这个问题Nacos采用了集中式存储的方式来支持集群化部署目前只支持MySQL的存储。
按照上述我们需要mysql数据库
Nacos支持三种部署模式
单机模式-用于测试和单机试用。集群模式-用于生产环境确保高可用。多集群模式-用于多数据中心场景。
5.2Nacos持久化配置解释
Nacos默认自带的是嵌入式数据库derby
derby到mysql切换配置步骤
nacos-server-1.1.4\nacos\conf目录下找到sql脚本执行 nacos-mysql.sql生成存储nacos数据的数据库修改nacos/conf/application.properties文件(切换数据库)增加支持mysql数据源配置目前只支持mysql添加mysql数据源的url、用户名和密码
# 切换数据库
spring.datasource.platformmysqldb.num1
db.url.0jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncodingutf8connectTimeout1000socketTimeout3000autoReconnecttrueserverTimezoneUTC
db.userroot
db.password123456再以单机模式启动nacos(重启)nacos所有写嵌入式数据库的数据都写到了mysql
5.3Nacos集群配置
环境准备
64 bit OS Linux/Unix/Mac推荐使用Linux系统。64 bit JDK 1.8Maven 3.2.x3个或3个以上Nacos节点才能构成集群。
1安装MySQL8.0
版本下载地址https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
安装教学参考linux 安装mysql8.0 超详细图文教程-CSDN博客
下载后通过xftp5传输到linux上路径为/usr/local/mysql8.0
解压缩命令
tar xvJf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz重命名命令
mv mysql-8.0.21-linux-glibc2.12-x86_64 mysql-8.0.20在mysql-8.0.20目录下创建data文件夹存储文件
mkdir data创建用户组以及用户和密码
groupadd mysqluseradd -g mysql mysql授旗用户权限
chown -R mysql.mysql /usr/local/mysql8.0/mysql8.0.20切换到bin目录下
初始化基础信息
./mysqld --usermysql --basedir/usr/local/mysql8.0/mysql8.0.20 --datadir/usr/local/mysql8.0/mysql8.0.20/data/ --initializeeg 编辑my.cnf文件
vi /etc/my.cnf增加以下内容
basedir/usr/local/mysql-8.0/
datadir/usr/local/mysql-8.0/data/
socket/tmp/mysql.sock
character-set-serverUTF8MB4授权以及添加服务
chmod x /etc/init.d/mysqlchkconfig --add mysql启动mysql
service mysql start查看启动状态
service mysql status将mysql 命令添加到服务
ln -s /usr/local/mysql8.0/mysql8.0.20/bin/mysql /usr/bin登录mysql
mysql -uroot -p输入密码之前获得的初始密码
修改root密码
ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY root;刷新使得密码生效
flush privileges;选择mysql数据库才可以修改远程连接并生效
use mysql;update user set host% where userroot;flush privileges;2linux服务器上mysql数据库配置
①nacos的启动脚本在哪里
应该复制一份作为备份并命名为startup_zk.sh
②SQL语句源文件—生成数据库 ③通过xft5复制SQL语句源文件到window
使用navicat远程连接linux的mysql进行解析sql语句并生成数据库 3application.properties配置 添加以下内容
# 切换数据库
spring.datasource.platformmysqldb.num1
db.url.0jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncodingutf8connectTimeout1000socketTimeout3000autoReconnecttrueserverTimezoneUTC
db.userroot
db.password123454配置linux上nacos的集群配置cluster.conf
梳理出3台nacos极器的不同服务端口号复制出cludster.conf 内容IP不能写127.0.0.1必须是linux命令hostname -I能够识别出来的ip
添加内容如下 5编辑nacos的启动脚本startup.sh
使其能够接受不同的启动端口 nacos2.2.3版本已经带有p符号辽