您的位置:首页 > 新闻 > 热点要闻 > 重庆短视频seo搜索多少钱_青岛房产网_新闻稿发布软文平台_东莞外贸推广公司

重庆短视频seo搜索多少钱_青岛房产网_新闻稿发布软文平台_东莞外贸推广公司

2025/1/8 6:37:18 来源:https://blog.csdn.net/u012867699/article/details/142166303  浏览:    关键词:重庆短视频seo搜索多少钱_青岛房产网_新闻稿发布软文平台_东莞外贸推广公司
重庆短视频seo搜索多少钱_青岛房产网_新闻稿发布软文平台_东莞外贸推广公司

目录

1 consul安装与运行

1.1 下载方式

1.2 安装

1.3 启动

1.4 访问方式

2 consul 实现服务注册与发现

2.1 引入

2.2 服务注册

2.3 服务发现

3 consul配置中心

3.1 基础配置


Eureka已经停止更新了,consul是独立且和微服务功能解耦的注册中心,而不是单独作为一个独立微服务嵌入到系统中。


1 consul安装与运行

1.1 下载方式

官网下载:https://www.consul.io/downloads

百度网盘链接:https://pan.baidu.com/s/1gKdyGMgpLU-jGMN_0s8R0Q  提取码:cvol

1.2 安装

下载之后就只有一个consul.exe文件,在对应路径下输出cmd进行终端,输出命令:

consul --version

consul --version 显示正常的版本信息,说明consul下载及安装完成

1.3 启动

consul agent -dev

consul agent -dev,输入该命令,使用开发模式启动consul

1.4 访问方式

通过地址http://localhost:8500访问到consul的首页。

2 consul 实现服务注册与发现


2.1 引入

通过下面的方式将一个微服务的IP地址和端口号硬编码另一个微服务中(例如订单微服务调用支付微服务),会存在这许多的问题:

/*** 这里采用的是硬编码的地址,可扩展性低下*/
public static final String PAYMENT_SERVICE_URL = "http://localhost:8001";

① 如果订单微服务和支付微服务的IP地址或者端口号发生了变化,则支付微服务将变得不可用,需要同步修改订单微服务中调用支付微服务的IP地址或端口。
② 如果系统中提供了多个订单微服务和支付微服务,则无法实现微服务的负载均衡
③ 如果系统需要支持高并发,需要部署更多的订单微服务和支付微服务,硬编码订单服务则后续的维护会变得异常复杂
所以,在微服务开发的过程中,需要引入服务治理功能,实现微服务之间的动态注册与发现

2.2 服务注册

第一步,修改pom.xml文件添加相关的依赖:

<!--引入consul-discovery-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency> 


第二步,在application.yml文件中添加相关的配置项:

spring:application:# 设置服务名称name: cloud-payment-servicecloud:# 配置consulconsul:# consul所在的IP地址host: localhost# consul所在的端口号port: 8500discovery:# 服务以什么名字注册到 consul 中service-name: ${spring.application.name}# 验证tokenacl-token: xxxxxx# 开启心跳模式,如果不开启服务注册后一直是红×heartbeat:enabled: true

第三步,启动微服务,并且访问http://localhost:8500查看服务是否注册成功:

2.3 服务发现

这个时候所有的微服务都注册到了consul注册中心中了,我们可以将上面的硬编码的代码修改为下面的代码了:

//注意这里的 cloud-payment-service 必须和上面你注册到 consul 中微服务名字保存一直。
public static final String PAYMENT_SERVICE_URL = "http://cloud-payment-service";


通过上面的步骤,Feign微服务或者Http请求都可以注册到consul上,进行微服务之间的调用。

3 consul配置中心

3.1 基础配置

微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。比如某些配置文件中的内容大部分都是相同的,只有个别的配置项不同。就拿数据库配置来说吧,如果每个微服务使用的技术栈都相同,则每个微服务中关于数据库的配置几乎都是相同的,有时候主机迁移了,我希望一次修改,处处生效。
consul提供了通用全局配置信息的功能,直接注册进consul服务器,从consul获取。

第一步,修改pom.xml文件添加相关的依赖:

<!--引入consul-config-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

第二步,新增配置文件bootstrap.yml,将application.yml文件中的通用的配置信息放到文件中:

  1.  applicaiton.yml是用户级的资源配置项
  2. bootstrap.yml是系统级的,优先级更加高
  3. Spring Cloud会创建一个"Bootstrap Context",作为Spring应用的Application Context的父上下文。初始化的时候,Bootstrap Context负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的Environment。
  4. Bootstrap属性有高优先级,默认情况下,它们不会被本地配置覆盖。 Bootstrap context和Application Context有着不同的约定,所以新增了一个bootstrap.yml文件,保证Bootstrap Context和Application Context配置的分离。
  5. 将application.yml文件改为bootstrap.yml这是很关键的或者两者共存

因为bootstrap.yml是比application.yml先加载的。bootstrap.yml优先级高于application.yml 

  • bootstrap.yml
spring:application:# 设置服务名称name: cloud-payment-servicecloud:# 配置consulconsul:# consul 所在的IP地址host: localhost# consul 所在的端口号port: 8500discovery:# 服务以什么名字注册到 consul 中service-name: ${spring.application.name}# 开启心跳模式,如果不开启服务注册后一直是红×heartbeat:enabled: true# 分布式配置config:enabled: true     #是否开启配置中心format: yaml      #配置文件格式,这里用的yamlprofile-separator: "-"  #例如: service-provider和dev中间的符号 用-就是service-provider-devdata-key: data    #默认的值就是data  是config的key  写上方便阅读prefix: config    #默认的值就是config   是配置的前缀  写上方便阅读

     第三步,consul服务器key/value配置填写

              

config是前缀,order-service是应用名,dev是环境,data是数据配置

第四步,测试

@Value("${test.num}")
private String num;

第五步,consul控制台修改配置值之后,代码中也会动态刷新


参考:

SpringCloud——consul_consul怎么安装-CSDN博客

入门Consul注册、配置中心(代码演示)_consul配置-CSDN博客

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com