????????使用zookeeper做注冊(cè)中心和配置中心,是因?yàn)閦ookeeper的數(shù)據(jù)模型很簡(jiǎn)單,有一系列被稱為znode的數(shù)據(jù)節(jié)點(diǎn)組成,與傳統(tǒng)的磁盤文件系統(tǒng)不同的是,zk將全量數(shù)據(jù)存儲(chǔ)在內(nèi)存中,可謂是高性能、高可用,而且支持集群,另外支持事件監(jiān)聽。這些特點(diǎn)決定了zk特別適合作為注冊(cè)中心(數(shù)據(jù)發(fā)布/訂閱)。再加上eureka開源項(xiàng)目停止更新,同時(shí)在項(xiàng)目部署可以利用現(xiàn)有zookeeper集群資源,減少項(xiàng)目節(jié)點(diǎn)的部署。
maven依賴:
maven依賴:
<dependency>
????<groupId>org.springframework.cloud</groupId>
????<artifactId>spring-cloud-starter-zookeeper-config</artifactId>
</dependency>
<!-- zookeeper 依賴的健康檢查的jar,所以需要引入actuator這個(gè)依賴 -->
<dependency>
????<groupId>org.springframework.boot</groupId>
????<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
在resources目錄下添加bootstrap.properties,內(nèi)容如下:
##啟用zookeeper作為配置中心
spring.cloud.zookeeper.config.enabled=true
##配置根路徑
spring.cloud.zookeeper.config.root=atomic-config
##配置默認(rèn)上下文
spring.cloud.zookeeper.config.defaultContext=atomic
##配置profile分隔符
spring.cloud.zookeeper.config.profileSeparator=-
同時(shí)在resources目錄下添加application.yml配置內(nèi)容:
server:
??port: 4001
spring:
??application:
????## 配置應(yīng)用名稱
????name: atomic-config
??cloud:
????zookeeper:
??????connect-string: localhost:2181
??????## zookeeper的services根目錄
??????discovery:
????????root: atomic
??profiles:
????active: dev
## 關(guān)閉安全管理
management:
??security:
????enabled: false
endpoints:
??health:
????sensitive: false
編寫啟動(dòng)類:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableDiscoveryClient
@SpringBootApplication
public class ConfigApplication {
????public static void main(String[] args) {
????????SpringApplication.run(ConfigApplication.class,args);
????}
}
在zookeeper中增加項(xiàng)目配置中心:
create /atomic-config/atomic-dev/name "an"
實(shí)際變量使用如下:
@Value("${name}")
privateStringname;
zookeeper目錄情況如下:
