spring cloud:通过client访问consul集群(spring cloud hoxton sr8 / spring boot 2.3.4)
一,为什么要搭建consul的client?
1,网上的很多资料,访问consul时用的单机模式,这样是不可以直接在生产环境中使用的
还有一些资料,搭建了consul的集群后,直接访问集群中的某一个ip,
这样不能达到高可用的目的,因为如果当前访问的ip宕机,则到整个consul集群的访问会失效.
2,如何访问consul集群?
第一个方法:一个是集成java代码,直接在配置文件中的host写上集群的多个ip,
当访问的地址有异常则访问其他的ip,
大家可以参考这个项目:
https://segmentfault.com/a/1190000020155983
第二个方法:较常用的方法:
在项目所在机器上以client模式安装运行一个consul的agent,
java代码通过client访问consul的server集群
因为服务提供者会多个实例,所以如果某个实例上的consul client发生故障,
只会有一个服务提供者失败,而不会影响到其他的实例继续提供服务
3,安装consul集群:参见:
https://www.cnblogs.com/architectforest/p/13735545.html
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,在linux centos8上搭建consul的client
[root@localhost consul]# mkdir /usr/local/soft/consul
[root@localhost consul]# mv ./consul /usr/local/soft/consul/
[root@localhost consul]# nohup /usr/local/soft/consul/consul agent -data-dir=/data/consul/data -node=client-1 -bind=192.168.1.7 -datacenter=dc1 -ui -client=0.0.0.0 -join=172.17.0.2 > /dev/null 2>&1 &
[root@localhost consul]# /usr/local/soft/consul/consul members
Node Address Status Type Build Protocol DC Segment
server-2 172.17.0.2:8301 alive server 1.8.4 2 dc1 <all>
server-3 172.17.0.3:8301 alive server 1.8.4 2 dc1 <all>
server-4 172.17.0.4:8301 alive server 1.8.4 2 dc1 <all>
client-1 192.168.1.7:8301 alive client 1.8.4 2 dc1 <default>
可以看到client-1是以client类型加入到集群中的
三,演示项目的相关信息
1,项目所在地址
https://github.com/liuhongdi/cloudconsul
2,功能说明:
演示了获取consul集群中的service和实例信息
3,项目结构:如图:

四,配置文件说明
1,pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency> <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
2,application.properties
spring.application.name=provider1
server.port=8080
#consul
spring.cloud.consul.host=127.0.0.1
spring.cloud.consul.port=8500
#service name
spring.cloud.consul.discovery.service-name=lhdprovider
provider.name = p1
五, java代码说明
1,DemoApplication.java
@EnableDiscoveryClient
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
2,HomeController.java
@RestController
@RequestMapping("/home")
public class HomeController { @Resource
private DiscoveryClient discoveryClient; @Value("${provider.name}")
private String name; @Value("${server.port}")
private String port; // list services
@GetMapping("/serviceslist")
public Object serviceslist() {
return discoveryClient.getServices();
} // list instances in a service id
@GetMapping("/instanceslist")
public Object instanceslist() {
return discoveryClient.getInstances("consul");
} //test api
@GetMapping("/hello")
public String hello() {
//return discoveryClient.getInstances("consul");
String res = "name:"+name+";port:"+port;
return res;
}
}
六,测试效果
1,得到服务列表:访问:
http://127.0.0.1:8080/home/serviceslist
返回

2,得到consul server集群的实例列表
http://127.0.0.1:8080/home/instanceslist
返回:

3,从web ui查看服务列表

查看lhdprovider中的实例:

七,查看spring boot的版本
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.4.RELEASE)
spring cloud:通过client访问consul集群(spring cloud hoxton sr8 / spring boot 2.3.4)的更多相关文章
- kubernetes实战之部署一个接近生产环境的consul集群
系列目录 前面我们介绍了如何在windows单机以及如何基于docker部署consul集群,看起来也不是很复杂,然而如果想要把consul部署到kubernetes集群中并充分利用kubernete ...
- 实战中的asp.net core结合Consul集群&Docker实现服务治理
0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.前言 在写这篇文章之前,我看了很多关于consul的服务治理,但发现基本上都是直接在powershell或者以命令工具的方式在 ...
- .net core结合Consul集群&Docker实现服务治理
实战中的asp.net core结合Consul集群&Docker实现服务治理 https://www.cnblogs.com/guolianyu/p/9614050.html 0.目录 整体 ...
- spring cloud:搭建基于consul的服务提供者集群(spring cloud hoxton sr8 / spring boot 2.3.4)
一,搭建基于consul的服务提供者集群 1,consul集群,共3个实例: 2, 服务提供者集群:共2个实例: 3,服务消费者:一个实例即可 4,consul集群的搭建,请参考: https://w ...
- Consul集群Server+Client模式
Consul集群Server+Client模式 架构示意图 只使用Consul的Server模式有以下2个问题: 因为Consul Server数量受到控制所以压力承载(扩展性)是个问题. Serve ...
- spring Cloud服务注册中心Eureka集群
spring Cloud服务注册中心Eureka集群配置: 在application.yml文件加以下配置: server: port: 8761 tomcat: uri-encoding: UTF- ...
- Consul集群Server模式
Consul集群Server模式 架构示意图 Consul在生产环境下运行模式分为两种:Server模式和Client模式(dev模式属于开发模式不在这里讨论),我们先用Server模式搭建一个Con ...
- 分布式架构学习-Consul集群配置
简介 之前公司用的是Consul进行服务发现以及服务管理,自己一直以来只是用一下,但是没有具体的深入,觉得学习不可以这样,所以稍微研究了一下. 网上有很多关于Consul的介绍和对比,我这里也不献丑了 ...
- Consul集群版容器化部署与应用集成
背景 由于公司目前的主要产品使用的注册中心是consul,consul需要用集群来保证高可用,传统的方式(Nginx/HAProxy)会有单点故障问题,为了解决该问题,我开始研究如何只依赖consul ...
随机推荐
- Codeforces Round #670 (Div. 2) 深夜掉分(A - C题补题)
1406A. Subset Mex https://codeforces.com/contest/1406/problem/A Example input 4 6 0 2 1 5 0 1 3 0 1 ...
- JS -- 操作符和数组
一.Javascript常用操作符 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- Ruby探微初步
我的导师,曾经对我说过,常规编程语言大抵不过顺序.条件.循环 接下来以Ruby为例,简单说说 控制语句 控制语句能让程序在某种条件下,改变执行顺序,或者只执行某一部分. 控制语句的分类 控制语句大致可 ...
- PHP程序十点未来的建议
1. Composer 第一点就要提 Composer ,自从 Composer 出现后,PHP 的依赖管理可以变得非常简单.程序内依赖一些类库和框架,直接使用 Composer 引入即可,通过使用 ...
- .NET 5.0 RC1 发布,离正式版发布仅剩两个版本
原文:http://dwz.win/Qf8 作者:Richard 翻译:精致码农-王亮 说明:1. 本译文并不是完全逐句翻译的,存在部分语句我实在不知道如何翻译或组织就根据个人理解用自己的话表述了.2 ...
- Book of Shaders 02 - 矩阵:二维仿射变换练习
0x00 一些废话 如果要深入学习 CG (Computer Graphics,计算机图形学),必然要学习相关的数学知识.CG 涉及到多个不同的领域,根据所研究领域的不同,也会涉及到不同的数学分支.但 ...
- hystrix(8) 插件
上一节讲到HystrixCommand的执行流程. Hystrix内部将一些模块实现成了插件,并且提供了用户提供自己的实现,通过配置来替换插件.Hystrix提供了5个插件,分别为并发相关插件(Hys ...
- 容器云平台No.4~kubernetes 服务暴露之Ingress
这是容器云平台第四篇,接上一篇继续, 首先kubernetes服务暴露有如下几种方式: NodePort Loadbalance ClusterIP Ingress 本文紧贴第一篇架构图,只介绍Ing ...
- Echarts山东省地图两级钻取、返回及济南合并莱芜地图
Echarts3.0+jQuery3.3.1 山东省地图中济南市需要注意下,莱芜市已经和济南市合并,地图数据来源于地图选择器,获取山东省地图信息及各地市地图信息(JSON格式) //山东地图(第一级地 ...
- 交互平台 - Processing - 开发模板(仿Openframeworks)
之前在CSDN上发表过: https://blog.csdn.net/fddxsyf123/article/details/62425251