-
多数据中心:Consul是为数据中心而构建的,可以支持任意数量的区域,而不需要复杂的配置。
-
服务细分:Consul Connect允许使用自动TLS加密和基于身份的授权进行安全的服务到服务通信。
本节中,将详细介绍Consul的集成。
Consul的安装与部署
Consul的安装比较简单,从官网https://www.consul.io/downloads.html下载对应操作系统版本即可,它是一个ZIP格式的压缩包。下载完成后,解压该压缩包,你将获得一个可执行文件 consul.exe,打开cmd命令行,进入consul.exe所在目录,执行以下命令:
consul agent -dev
可以启动consul,如图13-1所示。
图中命令 agent为启动一个consul代理,可通过consul agent -h查看agent命令的所有参数含义,表13-1列举了其包含的部分参数列表:
启动完成后,浏览器访问localhost:8500,可以看到图13-2所示的界面。
Spring Cloud集成Consul
Consul和 Eureka不同,Eureka需要我们自己实现注册中心,而Consul本身就是一个注册中心,上节启动的consul agent就是一个注册中心,因此,我们只需要在客户端集成Consul即可。
(1)新建一个工程,命名为spring-cloud-consul,在pom.xml新增以下依赖:
org.springframework.cloud</ groupId>
spring-cloud-starter-consul-discovery
org.springframework.cloud
spring-cloud-starter-netflix-hystrix
org.springframework.boot
spring-boot-starter-actuator</ artifactId>
org.springframework.boot
spring-boot-starter-web</ artifactId>
其中,spring-cloud-starter-consul-discovery为Spring Cloud Consul的服务发现模块。由于这个工程也会进行健康检查,所以也需要引入actuator模块,而 spring-boot-starter-web模块必须引入,否则可能无法启动工程。
(2)新增配置文件application.yml,并编写以下内容:
spring:
application:
name: consul-clientcloud :
consul:
host: 127.8.8.1port: 8508
discovery:
serviceName: ${spring.application.name}healthCheckPath: /actuator/health
healthCheckInterval: 5s
instanceId: s p r i n g . a p p l i c a t i o n . n a m e : {spring.application.name}: spring.application.name:{vcap.application.instance_id;
${spring.application.instance_id: ${random.value}}}
server:
port: 8080
在上述配置中,spring.cloud.consul就是Consul 的基本配置,其中,host和 port 指定Consul注册中心的P和端口,即13.2.1节浏览器访问的地址; serviceName为客户端服务名; healthCheckPath为健康检查地址,本示例采用的是Actuator,因此指定为/actuator/health端点; healthCheckInterval为健康检查间隔时间,本示例为5秒,即每隔5秒会调用健康检查端点; instanceId 为实例服务,它是唯一的,服务发现都是通过instanceId来进行的。
(3)新建启动类(该类和前面介绍的启动类代码一致,此处略)。
(4)启动工程并访问localhost:8500,可以看到客户端被注册到Consul了,且每隔5秒会进行一次健康检查,如图13-3所示。
Spring Cloud ZooKeeper的使用
=========================
ZooKeeper是一个分布式的应用程序协调服务,是 Apache Hadoop 的一个子项目,最初主要是用于提供Hadoop和 HBase的调度服务,能够解决Hadoop中统一命名、配置维护、同步服务等问题。
在微服务流行以后,ZooKeeper开始被人们重视,大家发现通过ZooKeeper 也可以解决微服务中的服务治理问题。在比较流行的微服务框架中,Dubbo和 Spring Cloud都可以用ZooKeepr作为服务治理框架,尤其是 Dubbo,一般都是通过ZooKeeper实现服务治理的。
ZooKeeper的安装和部署
ZooKeeper的安装和部署也比较简单,首先从官网https://www-eu.apache.org/distzookeeper/stable中下载ZooKeeper的稳定版,然后解压进入ZooKeeper 根目录的conf 文件夹,可以看到一个名叫zoo_sample.cfg的文件,将其命名为zoo.cfg并返回上一级目录,最后进入 bin文件夹,双击zkServer.cmd文件,就可启动ZooKeeper。
ZooKeeper的默认启动端口为2181,我们可以通过修改zoo.cfg来修改启动端口,在zoo.cfg修改下面配置即可:
clientPort=2182
当然,除了修改默认端口外,我们还可以其他参数,表13-2列举了ZooKeeper的主要参数配置。
Spring Cloud集成ZooKeeper
Spring Cloud集成ZooKeeper的步骤如下。
(1)新建一个项目,命名为 spring-cloud-zookeeper,在其 pom.xml文件中添加如下代码:
org.springframework.boot
spring-boot-starter-parent< / artifactId>2.日.3.RELEASE
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version>
<lombok .version>1.18.B</ lombok . version>
org.springframework.cloud
spring-cloud-dependenciesFinchley.RELEASE
pom
线程、数据库、算法、JVM、分布式、微服务、框架、Spring相关知识
一线互联网P7面试集锦+各种大厂面试集锦
学习笔记以及面试真题解析
ion>
pom
线程、数据库、算法、JVM、分布式、微服务、框架、Spring相关知识
[外链图片转存中…(img-cTYzlhkP-1720107067837)]
一线互联网P7面试集锦+各种大厂面试集锦
[外链图片转存中…(img-rflPKirn-1720107067837)]
学习笔记以及面试真题解析
[外链图片转存中…(img-mP4gSm2q-1720107067838)]