网站托管费,建设评标专家在哪个网站,网站建设后台怎么修改,硬件开发流程图环境隔离
企业实际开发中#xff0c;往往会搭建多个运行环境#xff0c;例如#xff1a;
开发环境测试环境预发布环境生产环境 这些不同环境之间的服务和数据之间需要隔离。
还有的企业中#xff0c;会开发多个项目#xff0c;共享nacos集群。此时#xff0c;这些项目…环境隔离
企业实际开发中往往会搭建多个运行环境例如
开发环境测试环境预发布环境生产环境 这些不同环境之间的服务和数据之间需要隔离。
还有的企业中会开发多个项目共享nacos集群。此时这些项目之间也需要把服务和数据隔离。
因此Nacos提供了基于namespace的环境隔离功能。具体的隔离层次如图所示 说明
Nacos中可以配置多个namespace相互之间完全隔离。默认的namespace名为publicnamespace下还可以继续分组也就是group 相互隔离。 默认的group是DEFAULT_GROUPgroup之下就是服务和配置了 创建namespace
nacos提供了一个默认的namespace叫做public 默认所有的服务和配置都属于这个namespace当然我们也可以自己创建新的namespace 然后填写表单 添加完成后可以在页面看到我们新建的namespace并且Nacos为我们自动生成了一个命名空间id 我们切换到配置列表页你会发现dev这个命名空间下没有任何配置 因为之前我们添加的所有配置都在public下 配置namespace
默认情况下所有的微服务注册发现、配置管理都是走public这个命名空间。如果要指定命名空间则需要修改application.yml文件。
比如我们修改item-service服务的bootstrap.yml文件添加服务发现配置指定其namespace 启动item-service查看服务列表会发现item-service出现在dev下 而其它服务则出现在public下 此时访问http://localhost:8082/doc.html基于swagger做测试 会发现查询结果中缺少商品的最新价格信息。
我们查看服务运行日志 会发现cart-service服务在远程调用item-service时并没有找到可用的实例。
这证明不同namespace之间确实是相互隔离的不可访问。
当我们把namespace切换回public或者统一都是以dev时访问恢复正常。
分级模型
在一些大型应用中同一个服务可以部署很多实例。而这些实例可能分布在全国各地的不同机房。由于存在地域差异网络传输的速度会有很大不同因此在做服务治理时需要区分不同机房的实例。
例如item-service我们可以部署3个实例
127.0.0.1:8081127.0.0.1:8082127.0.0.1:8083
假如这些实例分布在不同机房例如
127.0.0.1:8081在上海机房127.0.0.1:8082在上海机房127.0.0.1:8083在杭州机房
Nacos中提供了集群cluster的概念来对应不同机房。也就是说一个服务service下可以有很多集群cluster而一个集群cluster中下又可以包含很多实例instance。
如图 因此结合我们上一节学习的namespace命名空间的知识任何一个微服务的实例在注册到Nacos时都会生成以下几个信息用来确认当前实例的身份从外到内依次是
namespace命名空间group分组service服务名cluster集群instance实例包含ip和端口
这就是nacos中的服务分级模型。
在Nacos内部会有一个服务实例的注册表是基于Map实现的其结构与分级模型的对应关系如下 查看nacos控制台会发现默认情况下所有服务的集群都是default 如果我们要修改服务所在集群只需要修改bootstrap.yml即可
spring:cloud:nacos:discovery:cluster-name: BJ # 集群名称自定义
我们修改item-service的bootstrap.yml然后重新创建一个实例 再次查看nacos 发现8084这个新的实例确实属于BJ这个集群了。
Eureka
Eureka是Netflix公司开源的一个服务注册中心组件早期版本的SpringCloud都是使用Eureka作为注册中心。由于Eureka和Nacos的starter中提供的功能都是基于SpringCloudCommon规范因此两者使用起来差别不大。
课前资料中提供了一个Eureka的demo 我们可以用idea打开查看一下 结构说明
eureka-serverEureka的服务端也就是注册中心。没错Eureka服务端要自己创建项目order-service订单服务是一个服务调用者查询订单的时候要查询用户user-service用户服务是一个服务提供者对外暴露查询用户的接口
启动以后访问localhost:10086即可查看到Eureka的控制台相对于Nacos来说简陋了很多 微服务引入Eureka的方式也极其简单分两步
引入eureka-client依赖 配置eureka地址 接下来就是编写OpenFeign的客户端了跟Nacos用起来基本一致。 Eureka和Nacos对比
Eureka和Nacos都能起到注册中心的作用用法基本类似。但还是有一些区别的 Eureka和Nacos的相似点有
都支持服务注册发现功能都有基于心跳的健康监测功能都支持集群集群间数据同步默认是AP模式即最全高可用性
Eureka和Nacos的区别有
Eureka的心跳是30秒一次Nacos则是5秒一次Eureka如果90秒未收到心跳则认为服务疑似故障可能被剔除。Nacos中则是15秒超时30秒剔除。Eureka每隔60秒执行一次服务检测和清理任务Nacos是每隔5秒执行一次。Eureka只能等微服务自己每隔30秒更新一次服务列表Nacos即有定时更新也有在服务变更时的广播推送Eureka仅有注册中心功能而Nacos同时支持注册中心、配置管理Eureka和Nacos都支持集群而且默认都是AP模式