当前位置: 首页 > news >正文

淄博做网站建设公司电子商务网站规书

淄博做网站建设公司,电子商务网站规书,专门做淘宝主图的网站,珠海网站建设 旭洁科技#x1f3e1;浩泽学编程#xff1a;个人主页 #x1f525; 推荐专栏#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 #x1f6f8;学无止境#xff0c;不骄不躁#xff0c;知行合一 文章目录 … 浩泽学编程个人主页 推荐专栏《深入浅出SpringBoot》《java对AI的调用开发》              《RabbitMQ》《Spring》《SpringMVC》《项目实战》 学无止境不骄不躁知行合一 文章目录 前言一、服务注册二、分级存储模型模拟服务实例集群同集群优先的负载均衡权重配置小结 三、环境隔离创建namespace给微服务配置namespace小结 四、Nacos与Eureka的区别五、Nacos配置管理统一配置管理配置热更新配置共享小结 总结 前言 前面的文章讲诉过Eureka注册中心现在让我们看看Nacos注册中心的魅力为什么它更受欢迎。大家只需要跟着我的讲解走并不需要自己也有相对应的案例代码。主要讲诉服务注册、分级存储模型、负载均衡、权重配置、环境隔离、Nacos配置管理等。 一、服务注册 假设项目结构 – cloud-demo父工程 ----- user-serviceii查询用户服务 ----- order-service查询订单服务查询结果包含用户id order-server服务中会调用user-server服订单服务中调用用户服务使得返回订单的同时也返回了用户信息。 这里需要知道Nacos服务自带负载均衡所以不需要想Eureka一样添加注解引入负载均衡。 cloud-demo父工程中添加spring-cloud-alibaba的管理依赖 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2.2.6.RELEASE/versiontypepom/typescopeimport/scope /dependency然后在user-service和order-service中的pom文件中引入nacos-discovery依赖 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency在user-service和order-service的application.yml中添加nacos地址 spring:cloud:nacos:server-addr: 192.168.198.140:8848 # Nacos 服务端地址启动并测试 二、分级存储模型 假设用户服务在上海、北京、杭州三个地方拥有服务器实例这些同地区实例组成集群所以每次调用用户服务就相当于去集群找服务实例 这种情况服务调用尽可能选择本地集群的服务因为本地访问速度更快。跨集群调用延迟较高本地集群不可访问时再去访问其它集群。 模拟服务实例集群 修改user-service的application.yml文件添加集群配置 spring:cloud:nacos:server-addr: localhost:8848discovery:cluster-name: HZ # 集群名称右键当前用户服务启动器点击Copy Configuration 按照此方法配置一个8083端口的集群为SH的服务、端口为8082的集群为HZ的服务。加上原本的用户服务总共三个服务。 重启服务查看Nacos 配置好后我调用订单服务几次根据控制台日志的打印发现订单服务调用了用户集群为SH、HZ的服务所以Nacos并不会实现根据同集群优先来实现负载均衡主要是因为默认的ZoneAvoidanceRule并不能实现根据同集群优先来实现负载均衡。 同集群优先的负载均衡 但是Nacos中提供了一个NacosRule的实现可以优先从同集群中挑选实例。 修改order-service的application.yml文件修改负载均衡规则 userservice:ribbon:NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则 配置完毕后重启就实现了优先挑选同地区集群实例。 权重配置 实际部署中会出现这样的场景 服务器设备性能有差异部分实例所在机器性能较好另一些较差我们希望性能好的机器承担更多的用户请求。但默认情况下NacosRule是同集群内随机挑选不会考虑机器的性能问题。因此Nacos提供了权重配置来控制访问频率权重越大则访问频率越高。 在nacos控制台找到user-service的实例列表点击编辑即可修改权重 在弹出的编辑窗口修改权重 注意如果权重修改为0则该实例永远不会被访问。 小结 Nacos服务分级存储模型 一级是服务例如user-service二级是集群例如杭州或上海三级是实例例如杭州机房的某台部署了user-service的服务器实例 NacosRule负载均衡策略 优先选择同集群服务实例列表本地集群找不到提供者才去其它集群寻找并且会报警告确定了可用实例列表后再采用随机负载均衡挑选实例 实例的权重控制 Nacos控制台可以设置实例的权重值0~1之间同集群内的多个实例权重越高被访问的频率越高权重设置为0则完全不会被访问 三、环境隔离 Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西用来做最外层隔离。 nacos中可以有多个namespacenamespace下可以有group、service等不同namespace之间相互隔离例如不同namespace的服务互相不可见 创建namespace 默认情况下所有service、data、group都在同一个namespace名为public 我们可以点击页面新增按钮添加一个namespace 然后填写表单 就能在页面看到一个新的namespace 给微服务配置namespace 给微服务配置namespace只能通过修改配置来实现。 例如修改order-service的application.yml文件 spring:cloud:nacos:server-addr: localhost:8848discovery:cluster-name: HZnamespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间填ID重启order-service后访问控制台可以看到下面的结果 此时访问order-service因为namespace不同会导致找不到userservice控制台会报错 小结 Nacos环境隔离 每个namespace都有唯一id服务设置namespace时要写id而不是名称不同namespace下的服务互相不可见 四、Nacos与Eureka的区别 Nacos的服务实例分为两种l类型 临时实例如果实例宕机超过一定时间会从服务列表剔除默认的类型。非临时实例如果实例宕机不会从服务列表剔除也可以叫永久实例。 配置一个服务实例为永久实例 spring:cloud:nacos:discovery:ephemeral: false # 设置为非临时实例异同 Nacos与eureka的共同点 都支持服务注册和服务拉取都支持服务提供者心跳方式做健康检测 Nacos与Eureka的区别 Nacos支持服务端主动检测提供者状态临时实例采用心跳模式非临时实例采用主动检测模式临时实例心跳不正常会被剔除非临时实例则不会被剔除Nacos支持服务列表变更的消息推送模式服务列表更新更及时Nacos集群默认采用AP方式当集群中存在非临时实例时采用CP模式Eureka采用AP方式 五、Nacos配置管理 统一配置管理 当微服务部署的实例越来越多达到数十、数百时逐个修改微服务配置就会让人抓狂而且很容易出错。我们需要一种统一配置管理方案可以集中管理所有实例的配置。Nacos一方面可以将配置集中管理另一方可以在配置变更时及时通知微服务实现配置的热更新。 在nacos中添加配置文件 然后在弹出的表单中填写配置信息 注意项目的核心配置需要热更新的配置才有放到nacos管理的必要。基本不会变更的一些配置还是保存在微服务本地比较好。 从微服务拉取配置 微服务要拉取nacos中管理的配置并且与本地的application.yml配置合并才能完成项目启动。 但如果尚未读取application.yml又如何得知nacos地址呢 因此spring引入了一种新的配置文件bootstrap.yaml文件会application.yml之前被读取流程如下 1引入nacos-config依赖 首先在user-service服务中引入nacos-config的客户端依赖 !--nacos配置管理依赖-- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId /dependency2添加bootstrap.yaml 然后在user-service中添加一个bootstrap.yaml文件内容如下 spring:application:name: userservice # 服务名称profiles:active: dev #开发环境这里是dev cloud:nacos:server-addr: localhost:8848 # Nacos地址config:file-extension: yaml # 文件后缀名这里会根据spring.cloud.nacos.server-addr获取nacos地址再根据 ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}作为文件id来读取配置。 本例中就是去读取userservice-dev.yaml 3读取nacos配置 在user-service中的UserController中添加业务逻辑读取pattern.dateformat配置 在页面访问可以看到效果 配置热更新 我们最终的目的是修改nacos中的配置后微服务中无需重启即可让配置生效也就是配置热更新。要实现配置热更新可以使用两种方式 1方式一 在Value注入的变量所在类上添加注解RefreshScope 然后你将上面Nacos中的创建的统一管理配置中的日期格式修改为yyyy/MM/dd HH:mm:ss 不要重启服务访问localhost:8081/user/now发现返回格式变了这就实现了热更新。 2方式二 使用ConfigurationProperties注解代替Value注解。 在user-service服务中添加一个类读取patterrn.dateformat属性 import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;Component Data ConfigurationProperties(prefix pattern) public class PatternProperties {private String dateformat; }在UserController中使用这个类代替Value 配置共享 其实微服务启动时会去nacos读取多个配置文件例如 [spring.application.name]-[spring.profiles.active].yaml例如userservice-dev.yaml[spring.application.name].yaml例如userservice.yaml 而[spring.application.name].yaml不包含环境因此可以被多个环境共享。 1添加一个环境共享配置 我们在nacos中添加一个userservice.yaml文件 2在user-service中读取共享配置 在user-service服务中修改PatternProperties类读取新添加的属性 在user-service服务中修改UserController添加一个方法 分析 首先我在nacos中添加了一个共享配置写了个接口返回服务读取前缀为pattern配置文件的内容。现在我的user-server服务profile是dev所以我访问接口能够获取dataformat和envShareValue两个值。这里能获取dataformat是因为我们在上面讲诉时在nacos创建了userserver-dev.yml统一配置文件环境为dev。当我们修改profile为test你再次访问接口会发现只能获取envShareValue的值因为profile不是dev了这也就说明[spring.application.name].yaml不包含环境因此可以被多个环境共享。 多服务共享配置优先级 小结 将配置交给Nacos管理的步骤 在Nacos中添加配置文件在微服务中引入nacos的config依赖在微服务中添加bootstrapyml配置nacos地址当前环境、服务名称、文件后缀名。这些决定了程序启动时去naces读取哪个文件 Nacos配置更改后微服务可以实现热更新方式 通过Value注解注入结合RefreshScope来刷新通过ConfigurationProperties注入自动刷新不是所有的配置都适合放到配置中心维护起来比较麻烦建议将一些关键参数需要运行时调整的参数放到nacos配置中心一般都是自定义配置 微服务会从nacos读取的配置文件 [服务名]-[spring,profile.active].yaml环境配置[服务名].yaml默认配置多环境共享优先级[服务名]-[环境].yaml [服务名].yaml 本地配置 微服务默认读取的配置文件 [服务名]-[spring.profile.active].yaml默认配置[服务名].yaml多环境共享 不同微服务共享的配置文件 通过shared-configs指定通过extension-configs指定优先级:环境配置 服务名.yamlextension-config extension-configs shared-configs 本地配置 总结 以上就是Nacos的全部讲解。
http://www.zqtcl.cn/news/689127/

相关文章:

  • 在哪个网站上做实验仪器比较好农村住宅设计图集
  • 网站的源代码有什么用wordpress英文博客模板下载
  • 用html5做网站的优点国内家居行业网站开发
  • 临沂企业网站客流统计系统厂家
  • 深圳H5网站开发最新版app下载安装
  • 手机网站免费模板下载成都建设项目环境影响登记网站
  • 上海网站seo公司网站建设公司盈利分析
  • 影评网站怎么做培训总结心得体会
  • 做微站比较好的网站注册子公司流程及所需资料
  • 网站 psd科技公司网站首页
  • 宁波论坛建站模板单页面视频网站
  • 冷饮网站开发背景意义大鱼直播
  • 网站如何建设二级域名代理天津专业做网站
  • 相城区建设局网站如何申请公司邮箱账号
  • 中国空间站名字无锡网站优化
  • 怎么做自己淘宝优惠券网站专业的网站制作公司地址
  • php网页搜索引擎优化的核心本质
  • 在国外社交网站做产品推广wordpress自建站
  • flex 做网站色调网站
  • 金融网站模板源代码阿里巴巴网站建设哪家好
  • 成都市网站公司网站建设制作介绍河南
  • 自己如何建设网站微信开发公司哪家好
  • 混沌鸿蒙网站建设wordpress 后台添加菜单
  • 北辰正方建设集团有限公司网站云南网站开发
  • 郑州网站建设信息前端用什么软件开发
  • 动漫视频网站开发做编程的网站有哪些方面
  • 做搜狗网站优化首页软外贸代运营
  • 巴士定制网站开发宁波快速制作网站
  • 永年区住房和城乡建设局网站网站后台文档
  • 网站备案授权书wordpress教程 页面